Questione : Migliore senso copiare l'annotazione di SQL using VB6

Ciao gli esperti, necessità del
I di potere duplicare un'annotazione in un datatable allora cambiano un campo ad un value.
I using questo, ma il processo richiede abbastanza molto tempo.  La tabella è aperta come indicata.  Ciò è fatta una volta all'inizio della sessione.  L'operatore realizza le azioni dove le annotazioni si aggiungono alla tabella.  Un'azione può aggiungere un certo numero di nuovi record e basato sull'input dell'operatore (piuttosto dopo che le annotazioni originali sono generate), quelle annotazioni possono avere bisogno di di essere duplicato.  La duplicazione non può essere fatta contemporaneamente alla creazione delle annotazioni dovuto il flusso di lavoro dell'operatore.  Le annotazioni duplicate devono avere un campo variabile ad un valore differente.  Questo tutto funziona, ma l'ordine di .MOVENEXT prende per sempre quando si muovono oltre l'ultimo ha trovato l'annotazione.  Inoltre l'ordine di .FILTER richiede un istante per completare.  Questo datatable ha vicino a 1 milione annotazioni.  Ho aggiunto una prova prima che il .MOVENEXT per impedirlo la prova di muoversi oltre l'estremità delle annotazioni trovate, ma quello sembrasse “grossolani„.  Dei pensieri?
class= > " libero " del
> " del codeSnippet " del class= del
class= " lineNumbers " del
class= del
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:
il class= " del id= " codeSnippet822148 del
Open la tabella:
    Regolare i rsResponses = nuovo ADODB.Recordset
    Con i rsResponses
        .CursorLocation = adUseServer
        .CursorType = adOpenForwardOnly
        .LockType = adLockOptimistic
        . Aprire lo sCont, dbData, adCmdText
    Concluder con

Duplicare le annotazioni trovate, cambianti il campo di ProfID:

    sCont = “ProfID =„ & lOrgID
    Con i rsResponses
        . Filtro = sCont
        Fare mentre non .BOF e non .EOF
            lQuestID =. Campi (“QuestID„)
            lAnsID =. Campi (“AnsID„)
            sComments =. Campi (“osservazioni„)
            sGC =. Campi (“GroupCode„)
            
            lo sCont = “HA REGOLATO NOCOUNT SOPRA; INSERTO IN„ & sTDResponses & “(QuestID, MagID, ProfID, AnsID, osservazioni, GroupCode)„ _
                & “VALORI (" & lQuestID & “,„ & lMagID & “,„ & lNewID & “,„ & lAnsID & “,„ _
                & ““„ & sComments & “„, ““& sGC &„ ") “
            Regolare il rsTemp = dbData.Execute (sCont)
            Regolare il rsTemp = niente
            .MoveNext
        Ciclo
        . Filtro = ""
    Estremità con
class= del

Risposta : Migliore senso copiare l'annotazione di SQL using VB6

APPROVAZIONE - non importa che la fonte e la destinazione siano la stessa.  

inserto in myTable
(QuestId, MagId, ProfId, AnsId, osservazioni, GroupCode)
QuestId prescelto, MagId, “nuovo valore per ProfId„ come ProfId, AnsId, osservazioni, GroupCode
da
T2 myTable
dove T2.IsNew = 1    -- ovviamente, subsitute la vostra propria logica in dove clausola

Se eseguite semplicemente questo contro l'assistente piuttosto che portando tutto localmente e ripetendo attraverso ogni annotazione sarà MOLTO più veloce


Altre soluzioni  
 
programming4us programming4us