Pergunta : A melhor maneira de copiar o registro do SQL using VB6

Olá! os peritos, necessidade do
I de poder duplicar um registro em um datatable mudam então um campo a um value.
I am using este, mas o processo toma completamente um tempo longo.  A tabela é aberta como mostrada.  Isto é feito uma vez no início da sessão.  O operador executa as ações onde os registros são adicionados à tabela.  Uma ação pode adicionar um número de novos recorda, e baseado na entrada do operador (um tanto depois que os registros originais são criados), aqueles registros podem precisar de ser duplicado.  A duplicação não pode ser feita ao mesmo tempo que a criação dos registros devido ao work-flow do operador.  Os registros duplicados precisam de ter um campo mudado a um valor diferente.  Este tudo trabalha, mas o comando de .MOVENEXT toma para sempre ao se mover após o último encontrou o registro.  Igualmente o comando de .FILTER toma um quando para terminar.  Este datatable tem perto de 1 milhão registros.  Eu adicionei um teste antes que o .MOVENEXT para impedir que tente se mover após a extremidade dos registros encontrados, mas aquele pareça “metálicos”.  Algum pensamento?
class= > " desobstruído " do
> do " codeSnippet " do class= do
class= " lineNumbers " do
class= do
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:
o class= " do id= " codeSnippet822148 do
Open a tabela:
    Ajustar rsResponses = ADODB.Recordset novo
    Com rsResponses
        .CursorLocation = adUseServer
        .CursorType = adOpenForwardOnly
        .LockType = adLockOptimistic
        . Abrir o sCont, dbData, adCmdText
    Terminar com

Duplicar os registros encontrados, mudando o campo de ProfID:

    sCont = “ProfID =” & lOrgID
    Com rsResponses
        . Filtro = sCont
        Fazer quando não .BOF e não .EOF
            lQuestID =. Campos (“QuestID”)
            lAnsID =. Campos (“AnsID”)
            sComments =. Campos (“comentários”)
            sGC =. Campos (“GroupCode”)
            
            o sCont = “AJUSTOU NOCOUNT SOBRE; INSERÇÃO EM” & sTDResponses & “(QuestID, MagID, ProfID, AnsID, comentários, GroupCode)” _
                & “VALORES (” & lQuestID & “,” & lMagID & “,” & lNewID & “,” & lAnsID & “,” _
                & ““” & sComments & “”, ““& sGC &” ") “
            Ajustar o rsTemp = o dbData.Execute (o sCont)
            Ajustar o rsTemp = nada
            .MoveNext
        Laço
        . Filtro = ""
    Extremidade com
class= do

Resposta : A melhor maneira de copiar o registro do SQL using VB6

APROVAÇÃO - não importa que a fonte e o destino sejam a mesma.  

inserção em myTable
(QuestId, MagId, ProfId, AnsId, comentários, GroupCode)
QuestId seleto, MagId, “valor novo para ProfId” como ProfId, AnsId, comentários, GroupCode
de
T2 myTable
onde T2.IsNew = 1    -- obviamente, subsitute sua própria lógica no onde cláusula

Se você executa simplesmente este de encontro ao usuário um pouco do que trazendo tudo localmente e iterando através de cada registro será MUITO mais rápido


Outras soluções  
 
programming4us programming4us