Option Compare Database Option Explicit Sub demo() Dim RstOrigen As DAO.Recordset, RstDestino As DAO.Recordset Set RstOrigen = CurrentDb.OpenRecordset("TablaOrigen") Set RstDestino = CurrentDb.OpenRecordset("TablaDestino", _ dbOpenDynaset) 'el segundo recordset le abro del tipo dbopendynaset para poder 'utilizar el metodo FindFirts 'Si deseara utilizar Seek, debería abrirle del tipo Table. 'Además para que sigas mejor el codigo y saber en cual de los 'dos objetos recordset estoy, quito los bloques With -End With 'que te puse ayer If RstOrigen.EOF = False And RstOrigen.BOF = False Then RstOrigen.MoveLast RstOrigen.MoveFirst While Not RstOrigen.EOF 'aqui por ejemplo, voy a buscar si existe 'en la tabla destino, el registro origen 'Utilizo el metodo FindFirts RstDestino.FindFirst "Campo1=" & RstOrigen( _ "Campo1") & " AND Campo2= '" & RstOrigen("Campo2") & "'" 'En esta linea anterior intento buscar si en RstDestino ya existe o no 'un registro coincidente en RstDestino. En estecaso he utilizado dos criterios (Dos campos) 'concadenados de busqueda: Uno numerico (Sin comillas) y un segundo tipo String (Con comillas) If RstDestino.NoMatch = False Then 'se encontró coincidencia 'aqui tengo dos opciones: O no hacer nada, o reemplazar el registro por si en otros 'campos hubiera habido cambios. Opto por esta ultima RstDestino.Edit RstDestino("Campo3") = RstOrigen("Campo3") 'si te das cuenta, aqui ya no he puesto: ' RstDestino("Campo1") = RstOrigen("Campo1") ' RstDestino("Campo2") = RstOrigen("Campo2") 'ya que segun el FindFirts dichos campos son coincidentes y sería una redundancia 'el volcar valores RstDestino.Update Else 'no se encontró coincidencia...en este caso creo el registro en RstDestino RstDestino.AddNew RstDestino("Campo1") = RstOrigen("Campo1") RstDestino("Campo2") = RstOrigen("Campo2") RstDestino("Campo3") = RstOrigen("Campo3") 'etc RstDestino.Update End If RstOrigen.MoveNext Wend End If RstOrigen.Close RstDestino.Close Set RstOrigen = Nothing Set RstDestino = Nothing End Sub