Access - Abrir y trabajar con una db externa.

 
Vista:
sin imagen de perfil
Val: 44
Ha aumentado su posición en 3 puestos en Access (en relación al último mes)
Gráfica de Access

Abrir y trabajar con una db externa.

Publicado por Juan (20 intervenciones) el 05/12/2020 00:03:18
Hola a todos, espero puedan ayudar con este tema.
Cree una base de datos, que llame "Respaldo", con las mismas tablas de la base de datos en donde tengo la información, formularios(estan protegidos por contraseña) etc. Lo que deseo es que cada terminado tiempo la información de las tablas de la "CurrentDB" se inserten/reemplacen en las tablas de la "DBrespaldo" por medio de código.
Lo que no me queda del todo claro es como hacerlo y si es necesario abrir cada recordset de cada tabla y filtrar la información en cuestión para que no se dupliquen los registros.
Es algo asi como:
dim dbex as database
dim rs as dao.recordset
set dbex= opendatabase(.............)
set rs=dbex.openrecordset(.......)
Abrir los recordset de cada tabla, insertar o actualizar la información con sentencias sql?
o hay alguna forma mas simple que no conozco? Lo que deseo es que se actualice si existen datos o que se inserten si no existen.
Gracias por ayuda.
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
sin imagen de perfil
Val: 44
Ha aumentado su posición en 3 puestos en Access (en relación al último mes)
Gráfica de Access

Abrir y trabajar con una db externa.

Publicado por Juan (20 intervenciones) el 12/12/2020 22:31:39
Agradezco me hayas compartido este artículo. El problema que veo con él es que hay que hacer los respaldos de manera manual: Guardar como... etc... Lo que deseo es que el proceso sea automático porque cada vez que se cierre la base de datos o cada determinado tiempo sin que el usuario tenga que "Guardar".
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

Abrir y trabajar con una db externa.

Publicado por Anonimo (3316 intervenciones) el 06/12/2020 16:17:52
Pudiendo acceder y siendo ambas similares, se puede hacer por SQL, y la forma mas sencilla es imponiendo reglas (en las tablas) que impidan duplicar registros.

Si lo anterior se cumple, una consulta de inserción (que puede tomar los datos de una de selección basada en fechas o IDs o lo que el programador determine) igualaría ambas tablas en cantidad de registros y no afectaría a los registros ya existentes.

Una vez que ambas contienen el mismo conjunto de registros, será el momento adecuado para actualizar modificaciones en los existentes (de ser necesario) y también mediante SQL, una consulta de actualización, que al igual que la anterior puede estar basada en una consulta previa de selección pues (se supone que) se podrán distinguir los registros modificados (un campo fecha invisible al usuario y accesible al programador hace un buen servicio si se genera al crear el registro y se actualiza al modificar datos).
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 44
Ha aumentado su posición en 3 puestos en Access (en relación al último mes)
Gráfica de Access

Abrir y trabajar con una db externa.

Publicado por Juan (20 intervenciones) el 12/12/2020 22:43:26
Mi estimado, para esto que me comentas sería necesario Insertar completas las tablas en la DbExterna o sería necesario recorrer cada recordset de cada tabla y ahí hacer el Insert? gracias por tu opinión.
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

Abrir y trabajar con una db externa.

Publicado por Anonimo (3316 intervenciones) el 13/12/2020 03:07:23
Se insertarían datos, y pueden ser las tablas completas o parte de ellas o una consulta que integrada por varias tablas mas datos que se pueden solicitar al usuario ..... lo único que se necesita es que lo que el conjunto de datos origen y destino sean compatibles.

Si se le imponen reglas a las tablas, estas no admitirán datos que no las cumplan, por ejemplo se puede poner por defecto que se añadan los datos de los siete días anteriores, los que ya están no los insertara (y sin dar error, simplemente los ignora) y los 'nuevos' se añadirán al conjunto como corresponda.

Un clásico, guardar las ventas o lo fabricado o los nuevos registros en un despacho de abogados ..... etc.

Vamos a utilizar una referencia que podamos manipular ¿una fecha de control?.
Esta fecha se toma por defecto al crear el registro y se actualiza cada vez que se modifique un campo en la tabla, además puede ser de enorme utilidad en el caso de necesitar hacer un seguimiento de control, de eficiencia o un análisis forense.

De cualquier tabla se puede conocer si hay modificaciones simplemente comparando la fecha de creación con la de control (la de creación puede ser la del registro maestro en el supuesto de dos tablas relacionadas), cada aplicación es un mundo y se tiene que adaptar a lo que ya exista.

Se filtra por fecha (sea hora, dia mes semana año ...) y se construye el subconjunto de datos esto es: una consulta con los datos a añadir/refrescar.

Un supuesto: vamos a añadir una serie de datos desde la aplicacion actual, en una tabla que esta en otra aplicacion (sea en la propia maquina u otra de la red a la que se tenga acceso):

1
CurrentBd.Execute  "INSERT INTO REMESAS  ( RMRemesa, RMVIVIENDA, RMVecino, RMDETALLE, RMCuota )  in 'B:/Historico.accdb'  SELECT TDRemesa, TDVivienda, TDVecino, TDDetalle, TDCuota FROM Temp_Data"

Esta parte es el destino, la tabla remesas de la base 'historico' que esta en el disco 'B' de la propia maquina

REMESAS ( RMRemesa, RMVIVIENDA, RMVecino, RMDETALLE, RMCuota ) in 'B:/Historico.accdb'

Esta parte es el origen una consulta de selección basada en una tabla local de la aplicación de trabajo:

SELECT TDRemesa, TDVivienda, TDVecino, TDDetalle, TDCuota FROM Temp_Data"
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