Fråga : Bäst långt att kopiera SQL-rekordet using VB6

Hi experter, behov för
I att vara kompetent att duplicera ett rekord i ett datatable ändrar därefter en sätter in till en olik förmiddag för value.
I using denna, men de processaa takesna ganska en lång tid.  Bordlägga öppnas som visad.  Detta göras en gång på början av perioden.  Operatören utför handlingar var rekord tillfogas till bordlägga.  En handling kan tillfoga ett nummer av nya rekord, och baserat på operatör mata in (något, efter de original- rekorden har skapats), de rekord kan behöva att dupliceras.  Fördubbling kan inte göras samtidigt som skapelsen av operatörsworken-flow för rekord tack vare.  Duplicerade rekord behöver att ha en att sätta in ändrande till ett olikt värderar.  Detta allt fungerar, men .MOVENEXTNA befaller takesför evigt, när de är rörs förflutna som jumbon grundar rekordet.  Också .FILTERNA befaller tar en stund för att avsluta.  Detta datatable har nästan 1 miljon rekord.  Jag har tillfogat en testa, för .MOVENEXTEN som förhindrar den från pröva till flyttningförflutna avsluta av de fann rekorden, men det verkar ”clunky”.  Några tankar?
> för
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:
" codeBody " " notpretty class= " för Open bordlägga: Fastställda rsResponses = ny ADODB.Recordset Med rsResponses .CursorLocation = adUseServer .CursorType = adOpenForwardOnly .LockType = adLockOptimistic . Öppna sCont, dbData, adCmdText Avsluta med Duplicera de fann rekorden som ändrar ProfIDen, sätter in: sCont = ”ProfID =” & lOrgID Med rsResponses . Filtrera = sCont Gör stunder inte .BOF och inte .EOF lQuestID =. Sätter in (”QuestID”) lAnsID =. Sätter in (”AnsID”) sComments =. Sätter in (”kommentarer”) sGC =. Sätter in (”GroupCode”) sCont = ”UPPSÄTTNING NOCOUNT PÅ; MELLANLÄGG IN I” & sTDResponses & ”(QuestID, MagID, ProfID, AnsID, kommentarer, GroupCode)” _, & ”VÄRDERAR (” & lQuestID & ”,” & lMagID & ”,” & lNewID & ”,” & lAnsID & ”,” _, & ””” & sComments & ””, ””& sGC &””) ”, Fastställd rsTemp = dbData.Execute (sCont) Fastställd rsTemp = ingenting .MoveNext Kretsa . Filtrera = "", Avsluta med
" klar "

Svar : Bäst långt att kopiera SQL-rekordet using VB6

REKO - det betyder inte att källan och destinationen är samma.  

mellanlägg in i myTable
(QuestId, MagId, ProfId, AnsId, kommentarer, GroupCode)
Välj QuestId, MagId, ”nytt värderar för ProfId” som ProfId, AnsId, kommentarer, GroupCode
från
myTable T2
var T2.IsNew = 1    -- självfallet subsitute din egna logik i var sats

Om du utför enkelt denna mot serveren ganska än, komma med allt lokalt och iterating till och med varje rekord som det ska, var MYCKET snabbare


Andra lösningar  
 
programming4us programming4us