Access - Copiar Mdb por Código

 
Vista:

Copiar Mdb por Código

Publicado por Deboh (24 intervenciones) el 23/03/2007 10:36:15
Hola a todos,
Os comento , tengo una mdb con sus datos, sus tabas y su estructura... Necesito hacer por código una copia de esta mdb (estructura , relaciones...) pero con los datos filtrados por un campo que se especifica en un formulario dentro de la misma mdb.
Sabeis si eso se puede hacer??? y si alguien me dice como o donde puedo mirar....mejor.
Gracias de antemano...
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
Imágen de perfil de Alejandro

Copiar una base de datos con estructura y relaciones, filtrando los datos por un campo especificado

Publicado por Alejandro (4142 intervenciones) el 07/08/2023 19:11:51
Sí, es posible realizar una copia de una base de datos de Access con su estructura y relaciones, filtrando los datos por un campo especificado en un formulario. Para lograr esto, puedes utilizar VBA (Visual Basic for Applications) para crear una nueva base de datos, replicar la estructura de tablas y relaciones y luego copiar los datos filtrados en la nueva base de datos.

A continuación, te proporciono los pasos generales para realizar esta tarea:

1. Crea un nuevo formulario en tu base de datos actual que permita al usuario especificar el valor del campo para el filtro.

2. Crea un nuevo botón en el formulario para iniciar el proceso de copia y filtrado de datos.

3. En el evento Click del botón, escribe el código VBA necesario para realizar la copia:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
Private Sub btnCopiar_Click()
    Dim db As DAO.Database
    Dim tdf As DAO.TableDef
    Dim rel As DAO.Relation
    Dim rs As DAO.Recordset
    Dim filtro As String
    Dim nuevaBaseDatos As String
 
    ' Especifica el valor del campo para el filtro
    filtro = Me.txtFiltro.Value
 
    ' Especifica el nombre de la nueva base de datos
    nuevaBaseDatos = "ruta_de_la_nueva_base_de_datos.mdb" ' Cambiar por la ruta y nombre deseado
 
    ' Crea una nueva base de datos en la ubicación especificada
    Set db = CreateDatabase(nuevaBaseDatos, dbLangGeneral)
 
    ' Copia la estructura de las tablas y relaciones de la base de datos actual a la nueva base de datos
    For Each tdf In CurrentDb.TableDefs
        If Left(tdf.Name, 4) <> "MSys" Then ' Evita copiar tablas del sistema
            db.TableDefs.Append tdf
        End If
    Next tdf
 
    ' Copia los datos filtrados de las tablas a la nueva base de datos
    For Each tdf In db.TableDefs
        If Left(tdf.Name, 4) <> "MSys" Then
            Set rs = CurrentDb.OpenRecordset("SELECT * FROM [" & tdf.Name & "] WHERE [NombreCampoFiltro] = '" & filtro & "'")
            Do Until rs.EOF
                tdf.OpenRecordset.AddNew
                For Each fld In tdf.Fields
                    fld.Value = rs(fld.Name).Value
                Next fld
                tdf.OpenRecordset.Update
                rs.MoveNext
            Loop
            rs.Close
        End If
    Next tdf
 
    ' Cierra y libera recursos
    db.Close
    Set db = Nothing
 
    MsgBox "Copia completada con éxito.", vbInformation
End Sub

Asegúrate de reemplazar "NombreCampoFiltro" con el nombre del campo que deseas utilizar para filtrar los datos en la tabla.

Recuerda que este código es solo un ejemplo y puede requerir ajustes según la estructura y relaciones de tu base de datos.

Espero que esta solución te sea útil. ¡Buena suerte!
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