Visual Basic - Copi de seguridad de base de datos

Life is soft - evento anual de software empresarial
 
Vista:

Copi de seguridad de base de datos

Publicado por Ignacio (15 intervenciones) el 17/12/2005 18:06:05
Estoy haciendo un programa para un colegio y necesitaria hacer copia de seguridad de la base de datos. En realidad el problema es que para copiar la base de datos primero debo cerrar la conexion con la misma, al hacerlo la copio sin problemas pero al querer abrirla nuevamente no me deja. La conexion la realicé con el data environment de visual.

Private Sub Form_Load()
frmPrincipal.CerrarTablas 'Cierro las tablas
DE.cn.Close ' Cierro conexion
End Sub

Private Sub Form_Unload(Cancel As Integer)
DE.cn.Open ' problema
frmPrincipal.AbrirTablas ' Error
End Sub
Public Sub AbrirTablas()
If DE.rsPersona.State = 0 Then
DE.rsPersona.Open
End If
If DE.rsAlumnos.State = 0 Then
DE.rsAlumnos.Open
End If
If DE.rsTutores.State = 0 Then
DE.rsTutores.Open
End If
If DE.rsGrupo.State = 0 Then
DE.rsGrupo.Open
End If
If DE.rsMatricula.State = 0 Then
DE.rsMatricula.Open
End If
If DE.rsCuotas.State = 0 Then
DE.rsCuotas.Open
End If
If DE.rsCalificaciones.State = 0 Then
DE.rsCalificaciones.Open
End If
If DE.rsMaterias.State = 0 Then
DE.rsMaterias.Open
End If
If DE.rsCursa.State = 0 Then
DE.rsCursa.Open
End If
If DE.rsAmonestaciones.State = 0 Then
DE.rsAmonestaciones.Open
End If
If DE.rsAsistenciaProfesor.State = 0 Then
DE.rsAsistenciaProfesor.Open
End If
If DE.rsDiaProfesor.State = 0 Then
DE.rsDiaProfesor.Open
End If
If DE.rsDicta.State = 0 Then
DE.rsDicta.Open
End If
If DE.rsDistribucionHoraria.State = 0 Then
DE.rsDistribucionHoraria.Open
End If
If DE.rsInasistencias.State = 0 Then
DE.rsInasistencias.Open
End If
If DE.rsLegajoAdministrativo.State = 0 Then
DE.rsLegajoAdministrativo.Open
End If
If DE.rsLibros.State = 0 Then
DE.rsLibros.Open
End If
If DE.rsPrestamos.State = 0 Then
DE.rsPrestamos.Open
End If
If DE.rsProfesores.State = 0 Then
DE.rsProfesores.Open
End If
If DE.rsTitulos.State = 0 Then
DE.rsTitulos.Open
End If
If DE.rsModulos.State = 0 Then
DE.rsModulos.Open
End If
If DE.rsUsuarios.State = 0 Then
DE.rsUsuarios.Open
End If
End Sub
Public Sub CerrarTablas()
If DE.rsPersona.State = 1 Then
DE.rsPersona.Close
End If
If DE.rsAlumnos.State = 1 Then
DE.rsAlumnos.Close
End If
If DE.rsTutores.State = 1 Then
DE.rsTutores.Close
End If
If DE.rsGrupo.State = 1 Then
DE.rsGrupo.Close
End If
If DE.rsMatricula.State = 1 Then
DE.rsMatricula.Close
End If
If DE.rsCuotas.State = 1 Then
DE.rsCuotas.Close
End If
If DE.rsCalificaciones.State = 1 Then
DE.rsCalificaciones.Close
End If
If DE.rsMaterias.State = 1 Then
DE.rsMaterias.Close
End If
If DE.rsCursa.State = 1 Then
DE.rsCursa.Close
End If
If DE.rsAmonestaciones.State = 1 Then
DE.rsAmonestaciones.Close
End If
If DE.rsAsistenciaProfesor.State = 1 Then
DE.rsAsistenciaProfesor.Close
End If
If DE.rsDiaProfesor.State = 1 Then
DE.rsDiaProfesor.Close
End If
If DE.rsDicta.State = 1 Then
DE.rsDicta.Close
End If
If DE.rsDistribucionHoraria.State = 1 Then
DE.rsDistribucionHoraria.Close
End If
If DE.rsInasistencias.State = 1 Then
DE.rsInasistencias.Close
End If
If DE.rsLegajoAdministrativo.State = 1 Then
DE.rsLegajoAdministrativo.Close
End If
If DE.rsLibros.State = 1 Then
DE.rsLibros.Close
End If
If DE.rsPrestamos.State = 1 Then
DE.rsPrestamos.Close
End If
If DE.rsProfesores.State = 1 Then
DE.rsProfesores.Close
End If
If DE.rsTitulos.State = 1 Then
DE.rsTitulos.Close
End If
If DE.rsModulos.State = 1 Then
DE.rsModulos.Close
End If
If DE.rsUsuarios.State = 1 Then
DE.rsUsuarios.Close
End If
End Sub
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 Daniel

RE:Copi de seguridad de base de datos

Publicado por Daniel (360 intervenciones) el 19/12/2005 12:44:42
Porque no pruebas haciendo el BackUp al iniciar el Sistema, antes de abrir cualquier conexion, claro con lo debidos recaudos, haces un BackUp y cargas algun valor en un archivo, que podria ser la fecha, entonces te evitas hacer copias repetidas un mismo dia
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

RE:Copi de seguridad de base de datos

Publicado por ignacio (15 intervenciones) el 20/12/2005 01:17:26
Lo logre con este codigo, en la pagina de microsoft decia que cuando cerraramos la conexion y al vovler a abrirla habria que hacer binding de todos los recorset. O sea lo que hacemos tan facilmente con el data environment usando codigo.
aca esta

Al abrir el formulario de Backup

Private Sub Form_Load()
DE.rsConfiguracionGeneral.Close
frmPrincipal.CerrarTablas
DE.cn.Close
End Sub

Realizo la copia de la base de datos

Y al cerrar el formulario

Private Sub Form_Unload(Cancel As Integer)
DE.cn.CursorLocation = adUseClient
DE.cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=F:\TESIS LICEO\Programacion tesis\Liceo.mdb;Mode=ReadWrite;Persist Security Info=False"
DE.cn.Open
DE.rsAlumnos.Source = "select * from alumnos "
DE.rsAlumnos.ActiveConnection = DE.cn
DE.rsAmonestaciones.Source = "select * from amonestaciones"
DE.rsAmonestaciones.ActiveConnection = DE.cn
DE.rsAsistenciaProfesor.Source = "select * from AsistenciaProfesor "
DE.rsAsistenciaProfesor.ActiveConnection = DE.cn
DE.rsCalificaciones.Source = "select * from Calificaciones "
DE.rsCalificaciones.ActiveConnection = DE.cn
DE.rsConfiguracionGeneral.Source = "select * from ConfiguracionGeneral"
DE.rsConfiguracionGeneral.ActiveConnection = DE.cn
DE.rsCuotas.Source = "select * from cuotas "
DE.rsCuotas.ActiveConnection = DE.cn
DE.rsCursa.Source = "select * from cursa "
DE.rsCursa.ActiveConnection = DE.cn
DE.rsDiaProfesor.Source = "select * from diaprofesor"
DE.rsDiaProfesor.ActiveConnection = DE.cn
DE.rsDicta.Source = "select * from dicta "
DE.rsDicta.ActiveConnection = DE.cn
DE.rsDistribucionHoraria.Source = "select * from DistribucionHoraria "
DE.rsDistribucionHoraria.ActiveConnection = DE.cn
DE.rsGrupo.Source = "select * from grupo "
DE.rsGrupo.ActiveConnection = DE.cn
DE.rsInasistencias.Source = "select * from Inasistencias "
DE.rsInasistencias.ActiveConnection = DE.cn
DE.rsLegajoAdministrativo.Source = "select * from LegajoAdministrativo "
DE.rsLegajoAdministrativo.ActiveConnection = DE.cn
DE.rsLibros.Source = "select * from libros "
DE.rsLibros.ActiveConnection = DE.cn
DE.rsMaterias.Source = "select * from Materias "
DE.rsMaterias.ActiveConnection = DE.cn
DE.rsMatricula.Source = "select * from Matricula "
DE.rsMatricula.ActiveConnection = DE.cn
DE.rsModulos.Source = "select * from Modulos "
DE.rsModulos.ActiveConnection = DE.cn
DE.rsPersona.Source = "select * from Persona "
DE.rsPersona.ActiveConnection = DE.cn
DE.rsPrestamos.Source = "select * from Prestamos "
DE.rsPrestamos.ActiveConnection = DE.cn
DE.rsProfesores.Source = "select * from Profesores "
DE.rsProfesores.ActiveConnection = DE.cn
DE.rsTitulos.Source = "select * from Titulos "
DE.rsTitulos.ActiveConnection = DE.cn
DE.rsTutores.Source = "select * from Tutores "
DE.rsTutores.ActiveConnection = DE.cn
DE.rsUsuarios.Source = "select * from Usuarios "
DE.rsUsuarios.ActiveConnection = DE.cn
DE.rsConfiguracionGeneral.Open
frmPrincipal.AbrirTablas
End Sub

Muchas gracias a Daniel por la respuesta que fue mucho mas logica y facil que mi solucion.
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
Imágen de perfil de Daniel

RE:Copi de seguridad de base de datos

Publicado por Daniel (360 intervenciones) el 20/12/2005 11:45:43
Ja ja ja..... es que ya pase por lo que pasabas vos, me alegra que lo hayas resolvido

PD, yo comprimo la base con PKZIP, es medio antiguo pero lo puees abrir despues con WinZip

Un abrazo
Daniel
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