Access - Añadir filas

 
Vista:

Añadir filas

Publicado por deboh (24 intervenciones) el 19/04/2007 09:46:45
Hola buenos días , Veréis mi problema es que tengo que insertar unas filas de una tabla que estan en una mdb , a otra tabla (igual) de otra mdb y lo tengo que hacer con recordsets.
El código que yo tengo para ello , agrega en el registro "X" el valor del campo1, y con un bucle for así hasta rellenar todos los campos de la fila.El problema es que hay campos que requieren ser rellenados antes que otros....por lo que esto no me sirve. Como el código debe ser general para todas lastrablas no puedo especificar campos. Entonces lo que necesitaría es añadir la fila entera a tocateja....de golpe. Este es mi código ( el cual no me sirve):

intDim= Ubound(strSubSis)'Dimensión array con los valores para filtrar datos
cn.open="Provider=Microsoft.JEt.OLEDB.4.0;Data Source= " + strPath

For each obj in CurrentData.AllTables
with rsActual 'recordset de la tabla en la mdbactual
.ActiveConnection = CurrentProject.Connection
.Source = strSql 'strSql está bien hecha
.Open
End With
appCopia.OpenCurrentDatabase strPath 'Abrimos la otra mdb donde meter los datos
for i = 0 to intDim
with rsOtra
.ActiveConnection = cn
.Source = TablaOtra.Name
.CursorType = AdoOpenDynamic
.LockType = adoLockOptimistic
.Open
end with
if rsActual.Eof then
rsActual.Movefirst
end if
while not rsActual.eof
if instr(rsActual.Fields(strCampo).Value,strSubSis(i))then
for z = 0 to rsActual.fields.Count
rsOtra.AddNew rsActual.Fields(z).Name , rsActual.Fields(z).Value

next
end if
rsActual.MoveNext
wend
rsActual.Close
rsCopia.Close
next
next
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
Imágen de perfil de Alejandro

Copiar filas completas entre tablas de bases de datos diferentes usando recordsets

Publicado por Alejandro (4142 intervenciones) el 09/08/2023 16:52:14
Parece que estás tratando de copiar filas de una tabla en una base de datos (mdb) a otra tabla igual en otra base de datos, utilizando recordsets y filtrando algunos datos en el proceso. Si entiendo correctamente, lo que deseas es copiar una fila completa de una tabla a otra en lugar de copiar campo por campo.

Aquí tienes una solución que copia filas completas de una tabla a otra utilizando recordsets:

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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
Dim cn As Object
Set cn = CreateObject("ADODB.Connection")
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strPath
 
Dim strSQL As String
strSQL = "SELECT * FROM TablaOrigen"
 
Dim rsOrigen As Object
Set rsOrigen = CreateObject("ADODB.Recordset")
rsOrigen.ActiveConnection = cn
rsOrigen.Open strSQL
 
Dim appCopia As Object
Set appCopia = CreateObject("Access.Application")
appCopia.OpenCurrentDatabase strPathDestino
 
Dim rsDestino As Object
Set rsDestino = CreateObject("ADODB.Recordset")
 
Do While Not rsOrigen.EOF
    With rsDestino
        .ActiveConnection = appCopia.CurrentDb().TableDefs("TablaDestino").Connect
        .Source = "SELECT * FROM TablaDestino WHERE 1=0"
        .CursorType = 1 'adOpenKeyset
        .LockType = 3 'adLockOptimistic
        .Open
 
        .AddNew
        For i = 0 To rsOrigen.Fields.Count - 1
            .Fields(i).Value = rsOrigen.Fields(i).Value
        Next i
        .Update
 
        .Close
    End With
 
    rsOrigen.MoveNext
Loop
 
rsOrigen.Close
cn.Close
 
Set rsOrigen = Nothing
Set rsDestino = Nothing
Set cn = Nothing
Set appCopia = Nothing

Asegúrate de ajustar los nombres de las tablas "TablaOrigen" y "TablaDestino" a los nombres reales de las tablas en tus bases de datos. Esta solución copiará cada fila completa de la tabla de origen a la tabla de destino sin tener que especificar campos individualmente. Ten en cuenta que este código utiliza recordsets de ADO para manejar los datos y es necesario ajustar las referencias según la versión de Access que estás utilizando.
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