Vraag : Beste manier om SQL te kopiëren verslag die VB6 gebruiken

Hallo veranderen de Deskundigen,/>I behoefte
I am gebruikend dit, maar het proces neemt vrij oud.  De lijst wordt geopend zoals getoond.  Dit wordt gedaan eens aan het begin van de zitting.  De exploitant voert acties uit waar de verslagen aan de lijst worden toegevoegd.  Een actie kan een aantal nieuwe verslagen toevoegen, en gebaseerd op exploitantinput (enigszins nadat de oorspronkelijke bescheiden) worden opgemaakt, kunnen die verslagen moeten worden gedupliceerd.  De verdubbeling kan niet tegelijk met de verwezenlijking van de verslagen worden gedaan toe te schrijven aan exploitantwerkschema.  De gedupliceerde verslagen moeten één die gebied hebben in een verschillende waarde wordt veranderd.  Het dit al werk, maar bevel .MOVENEXT nemen voor altijd wanneer zich het bewegen voorbij het laatste gevonden verslag.  Ook het bevel .FILTER een te voltooien tijdje neemt.  Dit datatable heeft bijna 1 miljoen verslagen.  Ik heb een test vóór .MOVENEXT toegevoegd om het te verhinderen om zich voorbij het eind van de gevonden verslagen te proberen te bewegen, maar dat schijnt „clunky“.  Om het even welke gedachten?
" codeBody "
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
Open de lijst:
    Reeks rsResponses = Nieuwe ADODB.Recordset
    Met rsResponses
        .CursorLocation = adUseServer
        .CursorType = adOpenForwardOnly
        .LockType = adLockOptimistic
        . Open sCont, dbData, adCmdText
    Eind met

Dupliceer de gevonden verslagen, die het gebied ProfID veranderen:

    sCont = „ProfID =“ & lOrgID
    Met rsResponses
        . Filter = sCont
        Doe terwijl niet .BOF en niet .EOF
            lQuestID =. Gebieden („QuestID“)
            lAnsID =. Gebieden („AnsID“)
            sComments =. Gebieden („Commentaren“)
            sGC =. Gebieden („GroupCode“)
            
            sCont = „PLAATS NOCOUNT; TUSSENVOEGSEL IN“ & sTDResponses & „(QuestID, MagID, ProfID, AnsID, Commentaren, GroupCode)“ _
                & „WAARDEN (“ & lQuestID & „,“ & lMagID & „,“ & lNewID & „,“ & lAnsID & „,“ _
                & „„“ & sComments & „“, „„& sGC &““) „
            Reeks rsTemp = dbData.Execute (sCont)
            Reeks rsTemp = niets
            .MoveNext
        Lijn
        . Filter = ""
    Eind met

Antwoord : Beste manier om SQL te kopiëren verslag die VB6 gebruiken

O.K. - het is niet van belang dat de bron en de bestemming het zelfde zijn.  

tussenvoegsel in myTable
(QuestId, MagId, ProfId, AnsId, Commentaren, GroupCode)
Selecteer QuestId, MagId, „nieuwe waarde voor ProfId“ als ProfId, AnsId, Commentaren, GroupCode
van
myTable T2
waar T2.IsNew = 1    -- duidelijk, subsitute uw eigen logica in waar clausule

Als u eenvoudig dit tegen de server eerder dan plaatselijk het brengen van alles uitvoert en herhalend door elk verslag zal het veel sneller zijn


Andere oplossingen  
 
programming4us programming4us