¿Cómo comparar dos bases de datos en access 2007 para saber cuales son sus nuevas actualizaciones?
Mensualmente me envian una base de datos con una lista de aproximadamente mas de 3000 clientes con su respectiva informacion, y lo que necesito es comparar la base de datos del mes pasado con la del mes actual para saber que clientes nuevos han llegado, generalmente llegan entre 40-50 clientes nuevos.
2 Respuestas
Respuesta de Neckkito Nck
2
2
Neckkito Nck, Access... ser o no ser. Esa es la cuestión
Te voy a dar una respuesta-ejemplo de cómo hacer lo que pides. Voy a "inventarme" los nombres de los campos. Por ello, tú deberas cambiar esos nombres que me invente por los que tú tengas en tus BD's. El proceso podría ser el siguiente: 1.- Abres la BD con la nueva información. Ahí supongo que tendrás una tabla con los clientes, que yo llamaré TClientesN (N por nueva). Ahí tendrás un campo que te contendrá los nombres de los clientes, que yo llamaré [NomCliN]. 2.- Pones esa tabla en vista diseño y añades un nuevo campo, que llamaremos [EsNuevo], de tipo Sí/No. Su valor predeterminado será 0 (o Falso). 3.- Desde esa BD importas, de la BD "antigua", la tabla que contiene los clientes. Yo la llamaré TClientesA (A por antigua). Ahí evidentemente tendrás el campo con la información de los clientes, que yo llamaré [NomCliA]. 4.- Creas un formulario en blanco y añades un botón de comando. Si sacas las propiedades del botón de comando y te vas a la pestaña Eventos -> Al hacer click, verás que a su derecha hay un pequeño botón de puntos suspensivos. Si haces click sobre él te aparece una nueva ventana. Le dices que quieres generar código. 5.- Se te abrirá el editor de VB, con dos líneas por defecto (Private Sub... y End Sub). Esas líneas no debes tocarlas. En medio de ellas generas el siguiente código: ... Private Sub... Dim vCliN As String, vCliA as Variant Dim rst as DAO.Recordset Set rst = CurrentDb.OpenRecordset("TClientesN") rst.MoveFirst Do until rst.EOF vCliN = rst.Fields("NomCliN").Value vCliA = DLookUp("[NomCliA]", "TClientesA", "[NomCliA]='" & vCliN & "'") If IsNull(vCliA) Then With rst .Edit .Fields("EsNuevo").Value = True .Update End With End If rst.MoveNext Loop DoCmd.OpenQuery "CNuevos" End Sub ... 6.- Creas una consulta de selección basada en la tabla TClientesN, donde añades los campos que necesites. Debes añadir el campo [EsNuevo]. En la columna correspondiente a ese campo, en la línea de "Criterio:", escribes el filtro TRUE. Guardas esa consulta con el nombre de CNuevos. Y ya está. En teoría, cuando hagas click sobre el botón que hemos creado te marcará los clientes nuevos y a continuación se te abrirá la consulta donde los podrás ver. Si tienes algún problema me comentas.