Access - Programa de deteccion de errores en access

 
Vista:

Programa de deteccion de errores en access

Publicado por RafaCM (34 intervenciones) el 03/02/2009 13:08:12
Buenas a tod@s, me gustaria saber si existen programas para que verifiquen si en una base de datos hay errores, o problemas dentro de ella. Para así asegurarme al hacer una copia de seguridad. Gracias
Saludos
ESpero respuestas
Gracias
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: 28
Ha disminuido su posición en 3 puestos en Access (en relación al último mes)
Gráfica de Access

RE:Programa de deteccion de errores en access

Publicado por Jefferson (382 intervenciones) el 03/02/2009 23:01:40
Existen varias formas de hacerlo...

1) en Herramientas Compactar y Reparar
2) en los Codigos VBA en Herramientas Depuracion y Compilar
3) Para evitar que los campos NULOS alteren tu base datos debistes haberles puestos en el diseño propiedad de la tabla Requerido=Si (OJO solo en algunos campos donde sea necesario)

De esta forma te aseguraras que tu mdb este libre de errores...
Un Saludo
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:Programa de deteccion de errores en access

Publicado por RafaCM (34 intervenciones) el 04/02/2009 08:40:55
GRacias Jefferson, pero algun programa que automatice el proceso, primero verificacion del fichero y luego copia de seguridad?¿¿? Abrá alguno¿?¿?

GRacias a todos
Saludos
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
sin imagen de perfil
Val: 28
Ha disminuido su posición en 3 puestos en Access (en relación al último mes)
Gráfica de Access

RE:Programa de deteccion de errores en access

Publicado por Jefferson (382 intervenciones) el 05/02/2009 04:35:34
De haber programas asi, puede ser....

Lo mas seguro es que debas hacerlo tu mismo.

Me Explico, Crear un Codigo que verifique y recorra tus tablas en busca de archivos nulos. Los borre y luega proceda a hacer una copia de seguridad de tu BD.

Yo tengo uno que me compacta y luego me genera una copia de seguridad de mis BD. Algo asi como un backUp. Pero para poder hacer esto debes tener tu BD dividida que es lo mas aconsejable. Es decir tus tablas por un lado y los form,inform,consul,macros,etc por otro.

Un saludo
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:Programa de deteccion de errores en access

Publicado por RafaCM (34 intervenciones) el 05/02/2009 10:40:26
Te refieres a programalo en Visual Basic¿? Buffffff ando muy verde pero que muy verde en esto. Exame un cablecillo que tienes pinta de ser un mago de la programacion. La base de datos esta dividida como tu dices. Las tablas por un lado y todos los demas objetos por otro( Tablas vinculadas ).Si me puedes dar informacion sobre esto te lo agradeceria.

GRacias Jefferson
Saludos
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
sin imagen de perfil
Val: 28
Ha disminuido su posición en 3 puestos en Access (en relación al último mes)
Gráfica de Access

RE:Programa de deteccion de errores en access

Publicado por Jefferson (382 intervenciones) el 05/02/2009 15:05:35
Haber si te puedo guiar un poco:

1)En la BD donde estan tus tablas (las Principales) creas un Modulo y ahi le pegas este codigo:

Option Compare Database
'*******************************************************************************
'* CopiaSegurMdbActual
'* Realiza copia de Seguridad de la Mdb desde la que se corre el codigo y,
' si así se indica mediante el parámetro bolOrigenDatos, de las mdb u archivos
' desde los que están vinculadas tablas a esta mdb
'* Argumentos: --> strCarpetaDestino: OPCIONAL. Ruta Completa de la carpeta donde se quieren colocar
' las copias. Si no se especifica se colocaran en la carpeta de la mdb actual
' --> bolOrigenDatos: OPCIONAL. Valor booleano que indica si se quieren realizar
' copias de los origenes de datos de tablas vinculadas a esta mdb.
'* uso: CopiaSegurMdbActual "C:DirectorioSeguridad", False (por ejemplo)
'* Marciano Almohalla 15/11/2007 17:29
'*******************************************************************************
Function CopiaSegurMdbActual(Optional strCarpetaDestino As String, Optional bolOrigenDatos As Boolean = False) As Boolean
Dim fso As Object, _
f As Object, _
strDestino As String, _
strNombreMdb As String, _
rs As DAO.Recordset, _
i As Integer

On Error GoTo CopiaSegurMdbActual_TratamientoErrores

Set fso = CreateObject("Scripting.FileSystemObject")

'si no se ha pasado carpeta de destino, asignamos la misma de la mdb actual
If Nz(strCarpetaDestino, "") = "" Then
strCarpetaDestino = CurrentProject.Path
Else
'comprobamos que la carpeta exista, en caso contrario la creamos
If fso.folderexists(strCarpetaDestino) = False Then
If Not CompruebaRuta(strCarpetaDestino) Then
MsgBox "No se ha podido crear la carpeta de destino", vbOKOnly + vbCritical, "ERROR"
GoTo CopiaSegurMdbActual_Salir
End If
End If
End If

'comprobamos que strCarpetaDestino termine con una
If Right(strCarpetaDestino, 1) <> "" Then
strCarpetaDestino = strCarpetaDestino & ""
End If

'construimos la ruta del archivo de destino utilizando strCarpetaDestino + Nombre de la Mdb actual + fecha de hoy + extension actual del archivo.
strDestino = strCarpetaDestino & Left(CurrentProject.Name, Len(CurrentProject.Name) - 4) & Format(Date, "ddmmyyyy") & Right(CurrentProject.Name, 4)

'asignamos a la variable f la ruta completa de la mdb actual
Set f = fso.GetFile(CurrentProject.FullName)
'Hacemos la copia de la mdb actual
fso.CopyFile f, strDestino, True

'si se ha especificado que se desea respaldar las mdb que contengan las tablas vinculadas
If bolOrigenDatos Then
'Recordeset sobre la tabla MSysObjects para localizar todas las tablas vinculadas
Set rs = CurrentDb.OpenRecordset("SELECT MSysObjects.Database FROM MSysObjects " & _
"WHERE MSysObjects.Type = 6 GROUP BY MSysObjects.Database")

If Not (rs.EOF And rs.BOF) Then 'Si el recordeset devuelve registros, es decir si hay tablas vinculadas
rs.MoveLast
rs.MoveFirst
For i = 1 To rs.RecordCount 'recorremos el recordset y vamos copiando cada mdb
strNombreMdb = Mid(rs!Database, InStrRev(rs!Database, "") + 1) 'Nombre de la Mdb desde la que vinculamos tablas
strDestino = strCarpetaDestino & Left(strNombreMdb, Len(strNombreMdb) - 4) & Format(Date, "ddmmyyyy") & Right(strNombreMdb, 4)
Set f = fso.GetFile(rs!Database)
fso.CopyFile f, strDestino, True
rs.MoveNext
Next i
End If
rs.Close
Set rs = Nothing
End If

CopiaSegurMdbActual = True

CopiaSegurMdbActual_Salir:
If Not f Is Nothing Then
Set f = Nothing
End If

If Not fso Is Nothing Then
Set fso = Nothing
End If

If Not rs Is Nothing Then
rs.Close
Set rs = Nothing
End If

On Error GoTo 0
Exit Function

CopiaSegurMdbActual_TratamientoErrores:

MsgBox "Error " & Err.Number & " en proc.: CopiaSegurMdbActual de Documento VBA: Form_CopiaSeguridadMDByLasQueContenganLasTablasVinculadas (" & Err.Description & ")"
CopiaSegurMdbActual = False
Resume CopiaSegurMdbActual_Salir
End Function

2) Crea un formulario y un boton de comando al hacer clic() esto:

If CopiaSegurMdbActual("C:BACKUP", True) Then
MsgBox "Se Realizo la Copia de Seguridad en la siguiente Direccion" & vbCrLf & _
"C:BACKUP ", vbInformation, "A V I S O . . ."
Else
MsgBox "NO se pudo realizar la copia"
End If

3) En el "Boton de Officce" de tu Access 2007 pinchas y le das a "Opcione de Access" luego "Base de Datos Actual" y activas la casilla "Compactar al Cerrar"

Espero te Siva de Algo la Explicacion, Me comentas como te fue.-
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:Programa de deteccion de errores en access

Publicado por RafaCM (34 intervenciones) el 06/02/2009 08:45:51
Me a servido mucho, muy util, se ve que sabes bastante, pero creo que algunos comandos del codigo no los coge el access2002. Me da error en:

, _
rs As DAO.Recordset, _

Supongo que será debido a esto intentare averiguar aver que le pasa. Weno muchas gracias y me has servido de gran ayuda.

Bueno a Cuidarse y saludos
Gracias Jefferson
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