Ver Mensaje Individual
  #2 (permalink)  
Antiguo 07/06/2005, 10:01
marcocho2005
 
Fecha de Ingreso: abril-2005
Mensajes: 137
Antigüedad: 19 años, 1 mes
Puntos: 0
Cita:
Iniciado por jorevale
Hola amigos

Tengo dos Tablas (en dos bases diferentes), y la Tabla2 debe actualizarse con los valores de la Tabla1 cuando se cumpla cierta condición.

Ando intentando hacer lo siguiente:

Base1.Tabla1 ---> Variable ---> Base2.Tabla2

Todo se define en tiempo de ejecución. Las cadenas de conexión también se crean a partir de variables.

Pero evidentemente no me funciona. Podéis sugerirme una vía diferente ó el error de ésta?

Gracias



Set CN1 = New Connection
With CN1
' Proveedor de datos Microsoft OLE DB para Microsoft Jet
.Provider = "Microsoft.jet.OLEDB.3.51"
.ConnectionString = VIP1 & VDrive1 & VDir1 & VFile1
End With
Set CN2 = New Connection
With CN2
' Proveedor de datos Microsoft OLE DB para Microsoft Jet
.Provider = "Microsoft.jet.OLEDB.3.51"
.ConnectionString = VIP1 & VDrive1 & VDir1 & VFile2
End With
' Abrir la conexión 1 y el conjunto de registros
CN2.Open
Set RS2 = New Recordset
With RS2
.Source = "Select * from " & VTable2
.ActiveConnection = CN2
.CursorType = adOpenStatic
.CursorLocation = adUseClient
.LockType = adLockOptimistic
End With
CN1.Open
Set RS1 = New Recordset
With RS1
.Source = "Select * from " & VTable1
' where rs1.FEC_ENT > VDate1
.ActiveConnection = CN1
.CursorType = adOpenStatic
.CursorLocation = adUseClient
.LockType = adLockOptimistic
V = 1
.Open
Do While V = 1
If .EOF Then
Exit Do
V = 0
End If
.MoveFirst
VID_Aviso = RS1.ID_AVISO
VNombre = RS.Nombre
VFijo = .Fijo
VMóvil = .Móvil
VDirección = .Dirección
VLocalidad = .Localidad
' etcetera


If .EOF Then
Exit Do
V = 0
End If
.MoveNext
Loop
End With
End Sub


Private Sub Update()
active Connection = CN2
With RS2
.AddNew
.ID_AVI = VID_Aviso
.Nombre = VNombre
.Fijo = VFijo
.Móvil = VMóvil
.Dirección = VDirección
.Localidad = VLocalidad
End With
active Connection = CN1
End Sub
mira
estas utilizando mal tus recordsets
los campos los deben citar asi: Recordset("campo") ó Recordset!campo (en primer lugar)
luego: para pasar los valores de una tabla a otra pues no te alargues tanto:
Si ya tiene el conjunto de registros en el RS1 puedes hacerlo simple
RS1.MoveFirst
While Not RS1.EOF
Set RS2=New ADODB.Recordset
RS2.Open "Select * From Tabla2",CN1, adOpenKeySet, adLockOptimistic
RS2.AddNew
RS2!ID_AVI = RS1!ID_Aviso
RS2!Nombre = RS1!Nombre
RS2!Fijo = RS1!Fijo
RS2!Móvil = RS1!Móvil
RS2!Dirección = RS1!Dirección
RS2!Localidad = RS1!Localidad
RS2.Update
RS1.MoveNext
Wend

con eso simplificas mucho tu trabajo