Cuestión : La mejor manera de copiar el expediente del SQL usar VB6

Hola los expertos, necesidad del
I de poder duplicar un expediente en un datatable entonces cambian un campo a un diverso value.
I usar esto, pero el proceso tarda absolutamente un tiempo largo.  La tabla se abre como se muestra.  Esto se hace una vez al principio de la sesión.  El operador realiza las acciones donde los expedientes se agregan a la tabla.  Una acción puede agregar un número de nuevos récores, y basado en entrada del operador (algo después de que se creen los expedientes originales), esos expedientes pueden necesitar ser duplicado.  La duplicación no se puede hacer al mismo tiempo que la creación de los expedientes debido al flujo de trabajo del operador.  Los expedientes duplicados necesitan tener un campo cambiado a un diverso valor.  Este todo trabaja, pero el comando de .MOVENEXT toma por siempre al pasar el último encontró el expediente.  También el comando de .FILTER tarda un rato para terminar.  Este datatable tiene cerca de 1 millón de expedientes.  He agregado una prueba antes de que el .MOVENEXT para evitar que intente pasar el extremo de los expedientes encontrados, pero ése parezca “anticuados”.  ¿Pensamientos?
class= > " claro " 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:
el class= " del id= " codeSnippet822148 del
Open la tabla:
    Fijar los rsResponses = nuevo ADODB.Recordset
    Con los rsResponses
        .CursorLocation = adUseServer
        .CursorType = adOpenForwardOnly
        .LockType = adLockOptimistic
        . Abrir el sCont, dbData, adCmdText
    Terminar con

Duplicar los expedientes encontrados, cambiando el campo de ProfID:

    sCont = “ProfID =” y lOrgID
    Con los rsResponses
        . Filtro = sCont
        Hacer mientras que no .BOF y no .EOF
            lQuestID =. Campos (“QuestID”)
            lAnsID =. Campos (“AnsID”)
            sComments =. Campos (“comentarios”)
            sGC =. Campos (“GroupCode”)
            
            el sCont = “FIJÓ NOCOUNT ENCENDIDO; PARTE MOVIBLE EN” y sTDResponses y “(QuestID, MagID, ProfID, AnsID, comentarios, GroupCode)” _
                y “VALORES (” y lQuestID y “,” y lMagID y “,” y lNewID y “,” y lAnsID y “,” _
                y ““” y sComments y “”, ““y sGC y” ") “
            Fijar el rsTemp = dbData.Execute (el sCont)
            Fijar el rsTemp = nada
            .MoveNext
        Lazo
        . Filtro = ""
    Extremo con
class= del

Respuesta : La mejor manera de copiar el expediente del SQL usar VB6

AUTORIZACIÓN - no importa que la fuente y la destinación sean igual.  

parte movible en myTable
(QuestId, MagId, ProfId, AnsId, comentarios, GroupCode)
QuestId selecto, MagId, “nuevo valor para ProfId” como ProfId, AnsId, comentarios, GroupCode
de
T2 myTable
donde T2.IsNew = 1    -- obviamente, subsitute su propia lógica en donde cláusula

Si usted ejecuta simplemente esto contra el servidor algo que trayendo todo localmente e iterándolo a través de cada expediente será MUCHO más rápido


Otras soluciones  
 
programming4us programming4us