Visual Basic - Copiar registros entre tablas

Life is soft - evento anual de software empresarial
 
Vista:

Copiar registros entre tablas

Publicado por Hera (7 intervenciones) el 30/09/2003 23:14:53
Hola, quiero copiar registros de una tabla a otra (dentro de una misma base de datos de access), pero de la manera en que lo estoy haciendo se tarda muchisimo ya que son alrededor de 60,000 registros.... ¿alguien me puede decir como puedo hacerlo rapidisimo??
Primero me voy al registro mediante un indice y un seek a partir del cual va a empezar a copiar los registros:
Do
recordset1.AddNew
recordset1!CAMPO1 = recordset2!CAMPO1
recordset1!CAMPO2 = recordset!CAMPO2
reccordset!CAMPO3 = recordset!CAMPO3
recordset2.MoveNext
Loop Until Year(recordset1!FECHA) <> 2003

Gracias de antemano por su ayuda!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 109
Ha aumentado 1 puesto en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

RE:Copiar registros entre tablas

Publicado por Yamil Bracho (226 intervenciones) el 02/10/2003 17:44:32
Primero asgurate que el campo por el que estas haciendo el filtrado sea indice. Segundo seria bueno que te construyeras una consulta de datos anexados y la mandes a ejecutar desde VB( Esto seria el equivalente a un stored proc en otros manejadores de bases de datos).
Otra alternativa es traerte solo los registros que cumplan con la condicion y copiar estos. Seria algo como

Set rsOrigen = New ADODB.Recordset
strSQL ="SELECT * FROM TablaOrigen WHERE FECHA <> 2003"
rsOrigen.Open strSQL, tuConnecion, adOpenForwardOnly, adLockReadOnly

If Not rsOrigen.Bof And rs.Eof Then
strSQL ="SELECT * FROM TablaDestino WHERE 1 = 2"
Set rsDestino = New ADODB.Recordset
rsDestino.Open strSQL, TuConnection, adOpenStatic, adLockOptimistic

Do Until rsOrigen.Eof
rsDestino.AddNew
For intI=0 To rsOrigen.Fields.Count - 1
rsDestino.Fields( intI ) = rsOrigen.Fields( intI )
Next intI
rsDestino.Update
rsOrigen.MoveNext
Loop
rsDestino.Close: Set rsDestino = Nothing
End If
rsOrigenClose: Set rsOrigen = Nothing

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar