Frage : Beste Weise, SQL-Aufzeichnung using VB6 zu kopieren

Hallo ändern Experten,
I Notwendigkeit, in der Lage zu sein, eine Aufzeichnung in einem datatable zu kopieren dann ein Feld zu einem anderen value.
I morgens using dieses, aber der Prozess nimmt durchaus eine lange Zeit.  Die Tabelle geöffnet wie gezeigt.  Dieses getan einmal zu Beginn des Lernabschnittes.  Der Operator durchführt Tätigkeiten ator, in denen Aufzeichnungen dem Tabelle hinzugefügt.  Eine Tätigkeit kann einige neue Rekorde addieren, und gegründet auf Operatoreingang (ein wenig, nachdem die ursprünglichen Aufzeichnungen verursacht), können jene Aufzeichnungen kopiert werden müssen.  Verdopplung kann nicht zur selben Zeit wie die Kreation der Aufzeichnungen erfolgt werden wegen des Operatorarbeitsflusses.  Kopierte Aufzeichnungen müssen ein Feld haben, das zu einem anderen Wert geändert.  Dieses alles arbeitet, aber der .MOVENEXT Befehl nimmt für immer, als, vorbeibewegend an das Letzte, Aufzeichnung fand.  Auch der .FILTER Befehl nimmt wann, um abzuschließen.  Dieses datatable hat nah an 1 Million Aufzeichnungen.  Ich addiert einen Test, bevor das .MOVENEXT, zum er am Versuchen zu verhindern, an das Ende der gefundenen Aufzeichnungen vorbeizubewegen, aber das „plump“ scheint.  Irgendwelche Gedanken?
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:
" das notpretty "
Open die Tabelle:
    rsResponses einstellen = neues ADODB.Recordset
    Mit rsResponses
        .CursorLocation = adUseServer
        .CursorType = adOpenForwardOnly
        .LockType = adLockOptimistic
        . sCont, dbData öffnen, adCmdText
    Mit beenden

Die gefundenen Aufzeichnungen kopieren und das ProfID Feld ändern:

    sCont = „ProfID =“ u. lOrgID
    Mit rsResponses
        . Filter = sCont
        Tun während nicht .BOF und nicht .EOF
            lQuestID =. Felder („QuestID“)
            lAnsID =. Felder („AnsID“)
            sComments =. Felder („Anmerkungen“)
            sGC =. Felder („GroupCode“)
            
            sCont = „EINSTELLTE NOCOUNT AN an; EINSATZ IN“ u. sTDResponses u. „(QuestID, MagID, ProfID, AnsID, Anmerkungen, GroupCode)“ _
                u. „WERTE (“ u. lQuestID u. „,“ u. lMagID u. „,“ u. lNewID u. „,“ u. lAnsID u. „,“ _
                u. „„“ u. sComments u. „“, „„u. sGC u.“ ") „
            rsTemp = dbData.Execute (sCont) einstellen
            rsTemp einstellen = nichts
            .MoveNext
        Schleife
        . Filter = ""
    Ende mit

Antwort : Beste Weise, SQL-Aufzeichnung using VB6 zu kopieren

O.K. - es ausmacht nicht ht, dass die Quelle und der Bestimmungsort die selben sind.  

Einsatz in myTable
(QuestId, MagId, ProfId, AnsId, Anmerkungen, GroupCode)
Auserwähltes QuestId, MagId, „neuer Wert für ProfId“ als ProfId, AnsId, Anmerkungen, GroupCode
von
myTable T2
wo T2.IsNew = 1    -- offensichtlich subsitute Ihre eigene Logik in wo Klausel

Wenn Sie einfach dieses gegen den Bediener eher als durchführen, alles am Ort holend und durch jede Aufzeichnung wiederholend, ist sie VIEL schneller


Weitere Lösungen  
 
programming4us programming4us