Crear nuevo archivo access con VBA

Necesitaba ayuda con como se puede exportar las tablas de la BBDD actual a un nuevo archivo. De una tabla solo necesito el registro que seleccione anteriormente en un cuadro combinado y al pulsar un botón me genere ese archivo nuevo con esa tabla y ese registro, pero las tablas enlazadas a ella con ese mismo registro también las necesito (osea en cascada).

Con la tabla principal llamada CLAVE(ID_CLAVE, OBRA, etc.), la tabla relacionada FINCAS(ID_FINCA, ID_CLAVE, FINCA, etc.). Luego de exportar necesitaba "bloquear" todo lo exportado para que no se hagan modificaciones en esos datos.

1 Respuesta

Respuesta
2

Jesús, no dices como o donde quieres crear la nueva base, si en la misma carpeta que tu base, si en otra. Tampoco dices que criterio usas para limitar el(los) registro(s) que quieres que te guarde, así que lo pongo completo y luego tu "recortas"

En la carpeta BasesPracticas puedes ver que no hay la base Painceiras.

En tu base, en un formulario cualquiera, aunque se podría hacer desde cualquier otro evento, tengo un cuadro de texto donde voy a escribir el nombre con el que quiero que me cree la nueva, y un botón de comando

Si en el cuadro de texto escribo Painceiras

Al pulsar el botón

Y si la abro, me ha creado la tabla Resultado

Y dentro de la tabla me ha añadido el registro que le dije en el criterio

El código del botón es simplemente

Private Sub Comando73_Click()
Dim db As DAO.Database, s As String
s = "C:\users\cabarcos\documents\basespracticas\" & "" & Me.Texto71 & "" & ".accdb"
Set db = DBEngine.Workspaces(0).CreateDatabase("" & s & "", dbLangGeneral)
db.Close
Set db = Nothing
DoCmd.RunSQL "SELECT IdCliente,NombreCliente INTO Resultado IN """ & s & """  FROM Clientes WHERE IdCliente = 1"
End Sub

Lógicamente, debajo de Docmd.runsql tendrás que poner lo mismo referido a la otra tabla, por ejemplo

Docmd. Runsql"select Idcliente, direccion, yo que se into Otratabla in lo mismo de arriba

Oh! Gracias Icue, no pensé que fuera tan 'sencillo' (puesto que tendré que hacer muchas consultas para todas las tablas más que nada jaja).

Pero si, en la misma ubicación donde ya tengo la BBDD.

Pero lo que comentaba arriba de bloquear esos registros? Es posible? También luego necesitaría importarlo sobrescribiendo los datos exportados a los existentes en la BBDD original y "desbloquear" los registros.

Lo más sencillo es que en las propiedades de la base nueva la pongas como

No me sirve... La cuestión es que en una tabla tengo varias obras y en otra las fincas, entonces cuando exporto una obra tengo que bloquear todas las fincas de la misma pero dejando las demás sin bloquear.

El problema de las tablas es que no tienen código. Lo que podrías hacer es poner las tablas como ocultas, de forma que si quieres cambiar algo tengas que hacerlo a través de un formulario con subformulario. Entonces en el que no te interese que puedan modificar algo bastaría con poner en sus Propiedades-Datos-Tipo Recordset

Archivo Snapshot

Puede leer, pero no modificar

O poner, en el evento Al activar registro

Me.allowedits=false

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas