Copiar registros de una tabla a otra (Access)
Hola a todos:
Tengo un problemilla y es que no sé como puedo copiar los resultados de una busqueda que saco a pantalla a través de un listview. Las dos tablas (origen y destino) tiene la misma estructura. La consulta me va sacando uno a uno los registros que coinciden con la busqueda, pero yo tengo que guardar eso registros en una tabla temporal, la cual tengo enlazada con el datareport.
Si alguien me puede facilitar un ejemplo de como hacer esta copia de registros le estarÃa muy agradecido.
Pego parte del código:
Set cnn = New ADODB.Connection
cnn.Open "Provider=" & Provider & "; Data Source=" & NombreBase
''hago la consulta según los criterios
s = "SELECT Nombre, [Diferencia de Pesadas], [Fecha Entrada] FROM " & NombreTabla & " WHERE [Fecha Entrada] <= " & FechaSQL(fechaActual) & " AND [Fecha Entrada] >= " & FechaSQL(dFin) & " AND (Nombre like'" & Combo1.Text & "') ORDER BY [Fecha Entrada]"
Set tRs = New Recordset
tRs.Open s, cnn, adOpenForwardOnly, adLockReadOnly 'adLockOptimistic
With tRs
Do While Not .EOF
'''Aquà es en donde los guardo en un Listview para verlos y supongo que será en donde deba de copiarlos para la tabla nueva (tabla temporal)
n = n + 1
With ListView1.ListItems.Add(, , tRs.Fields("Nombre"))
.SubItems(1) = Format$(tRs.Fields("Fecha Entrada") & "", "dd/mm/yyyy")
End With
i = i + 1
.MoveNext
Loop
End With
Esto es todo. Muchas gracias de antemano a todos.
Tengo un problemilla y es que no sé como puedo copiar los resultados de una busqueda que saco a pantalla a través de un listview. Las dos tablas (origen y destino) tiene la misma estructura. La consulta me va sacando uno a uno los registros que coinciden con la busqueda, pero yo tengo que guardar eso registros en una tabla temporal, la cual tengo enlazada con el datareport.
Si alguien me puede facilitar un ejemplo de como hacer esta copia de registros le estarÃa muy agradecido.
Pego parte del código:
Set cnn = New ADODB.Connection
cnn.Open "Provider=" & Provider & "; Data Source=" & NombreBase
''hago la consulta según los criterios
s = "SELECT Nombre, [Diferencia de Pesadas], [Fecha Entrada] FROM " & NombreTabla & " WHERE [Fecha Entrada] <= " & FechaSQL(fechaActual) & " AND [Fecha Entrada] >= " & FechaSQL(dFin) & " AND (Nombre like'" & Combo1.Text & "') ORDER BY [Fecha Entrada]"
Set tRs = New Recordset
tRs.Open s, cnn, adOpenForwardOnly, adLockReadOnly 'adLockOptimistic
With tRs
Do While Not .EOF
'''Aquà es en donde los guardo en un Listview para verlos y supongo que será en donde deba de copiarlos para la tabla nueva (tabla temporal)
n = n + 1
With ListView1.ListItems.Add(, , tRs.Fields("Nombre"))
.SubItems(1) = Format$(tRs.Fields("Fecha Entrada") & "", "dd/mm/yyyy")
End With
i = i + 1
.MoveNext
Loop
End With
Esto es todo. Muchas gracias de antemano a todos.
Simplemente lo que tienes que hacer es recorres la tabla origen igualando los registos a la tabla destino,de tal forma:
Private Sub Copia()
DataOrigen.Refresh
If DataOrigen.Recordset.RecordCount = 0 Then
Exit Sub
Else
DataOrigen.Recordset.MoveFirst
While Not DataOrigen.Recordset.EOF
DataDestino.Recordset.AddNew
DataDestino.Recordset.Fields("Nombrecampo1") = DataOrigen.Recordset.Fields("Nombrecampo1")
'Asi con todos los campos
Datadestino.Recordset.Update
Dataorigen.Recordset.MoveNext
Wend
End If
End Sub
Creo que es esto lo que buscas,saludos
Private Sub Copia()
DataOrigen.Refresh
If DataOrigen.Recordset.RecordCount = 0 Then
Exit Sub
Else
DataOrigen.Recordset.MoveFirst
While Not DataOrigen.Recordset.EOF
DataDestino.Recordset.AddNew
DataDestino.Recordset.Fields("Nombrecampo1") = DataOrigen.Recordset.Fields("Nombrecampo1")
'Asi con todos los campos
Datadestino.Recordset.Update
Dataorigen.Recordset.MoveNext
Wend
End If
End Sub
Creo que es esto lo que buscas,saludos