Access - Clonar Base de Datos

 
Vista:

Clonar Base de Datos

Publicado por Naty (5 intervenciones) el 08/10/2007 14:35:36
Hola a todos! Estoy haciendo un programa en Visual.Net utilizando Acces como base de datos.
Mi problema es que debo tener una base de datos patrón o Plantilla para poder crear bases de datos iguales a esa. Me imagino que existe alguna forma de clonar la base de datos pero no se cómo hacerlo...
Alguien sabe cómo se hace?

PD: La idea es que el usuario tenga la opción de crear una base de datos nueva, la cual no tendrá información guardada aún (sólo en las tablas que no cambian nunca) y tendrá la misma estructura de la base de datos madre o patrón.
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

RE:Clonar Base de Datos

Publicado por xavi (92 intervenciones) el 08/10/2007 17:15:28
Hola,

Ya que has posteado en un foro de Access, te pondré un código en Access. Supongo que no tendrás más problemas en adaptarlo a .NET....

Ojo, escrito del tiron. Deberás revisarlo.

' Dimensionamos las variables a utilizar
Dim dbs As DAO.Database
Dim wks As DAO.Workspace
Dim strBaseDatos As String
Dim bddCorrecta As Boolean
Dim tbl As TableDef
Const msgMB As String = "El que todo lo ve dice..."
' inicializamos la variable bddCorrecta. Establecemos que, por defecto, es correcta
bddCorrecta = True
' abrimos un bucle del que no se sale hasta que la bdd es correcta o el usuario selecciona Cancelar
Do
' pedimos el nombre de la base de datos
strBaseDatos = InputBox("Introduce ruta y nombre de la base de datos a crear.", _
"Petición de datos", CurrentProject.Path & "\Base1.mdb")
If strBaseDatos = "" Then Exit Sub
' verificamos si existe la base de datos en la ruta que ha seleccionado el usuario
If Dir(strBaseDatos, vbArchive) <> "" Then
' si existe le preguntamos si la desea sobreescribir
respuesta = MsgBox("La base de datos seleccionada ya existe. ¿Sobreescribir?", _
vbExclamation + vbYesNoCancel + vbDefaultButton2, msgMB)
Select Case respuesta
Case vbYes
Kill strBaseDatos
Case vbNo
bddCorrecta = False
Case vbCancel
Exit Sub
End Select
End If
' verificamos la extensión
If Right(strBaseDatos, 4) <> ".mdb" Then
MsgBox "La extensión de la base de datos no es correcta. Debe terminar con .mdb", vbCritical, msgMB
bddCorrecta = False
End If
Loop Until bddCorrecta = True

' creamos la base de datos
Set wks = Workspaces(0)
Set dbs = wks.CreateDatabase(strBaseDatos, dbLangSpanish)
If Not dbs Is Nothing Then
dbs.Close
Set dbs = Nothing
End If
Set wks = Nothing
' recorremos la coleccion de tablas
For Each tbl In CurrentDb.TableDefs
' si su nombre no empieza por MSys
If Left(tbl.Name, 4) <> "MSys" Then
DoCmd.TransferDatabase acExport, "Microsoft Access", _
strBaseDatos, acTable, tbl.Name, tbl.Name, True
End If
Next
Beep
MsgBox "Finalizado el proceso de creación de la nueva base de datos en: " & strBaseDatos, vbInformation, msgMB

Un saludo

Xavi
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