Foros del Web » Programación » Programación General » Visual Basic clásico »

Compactar y Reparar la base de datos

Estas en el tema de Compactar y Reparar la base de datos en el foro de Visual Basic clásico en Foros del Web. Hay veces que se quedan bloqueado algún registro de la base de datos y no deja que el programa creado actue correctamente. Esto suele pasar ...
  #1 (permalink)  
Antiguo 02/02/2005, 03:41
Avatar de paky  
Fecha de Ingreso: septiembre-2002
Mensajes: 127
Antigüedad: 12 años, 2 meses
Puntos: 0
Compactar y Reparar la base de datos

Hay veces que se quedan bloqueado algún registro de la base de datos y no deja que el programa creado actue correctamente.

Esto suele pasar en todos los programas que gestionan base de datos.

Access tiene una utilidad que es la de Compactar y Reparar base de datos.

Mi pregunta es:

¿Cómo puedo crear esa utilidad dentro del programa que estoy realizando o en su caso, crear otro proceso (otro programa) que haga esa función?

¿Podéis ayudarme? Gracias a todos.
  #2 (permalink)  
Antiguo 02/02/2005, 04:34
Avatar de lucasiramos  
Fecha de Ingreso: agosto-2004
Ubicación: Santa Rosa, La Pampa, Argentina
Mensajes: 1.484
Antigüedad: 10 años, 3 meses
Puntos: 13
Hola. En las Faq hay un post acerca de eso

http://www.forosdelweb.com/showthrea...9&page=2&pp=15

Saludos. Lucas
__________________
No sign...
  #3 (permalink)  
Antiguo 03/02/2005, 06:12
Avatar de paky  
Fecha de Ingreso: septiembre-2002
Mensajes: 127
Antigüedad: 12 años, 2 meses
Puntos: 0
Buenas Lucar y todos los demás,

He probado el código para reparar la base de datos y en la siguiente instrucción:

CompactDatabase NombreBase, dBaseTmp, dbLangSpanish, dbVersion20


me aparece este error:

Error '3343' en tiempo de ejecución:

No se reconoce el formato de base de datos 'd:\PROGRAMAS\GSA\GSA.mdb'.


Deciros que la base de datos está hecha en Access 2000 y utilizo los controles ADO.

¿Cómo puedo solucionarlo?
  #4 (permalink)  
Antiguo 03/02/2005, 06:31
Avatar de lucasiramos  
Fecha de Ingreso: agosto-2004
Ubicación: Santa Rosa, La Pampa, Argentina
Mensajes: 1.484
Antigüedad: 10 años, 3 meses
Puntos: 13
¿Podra ser por la version de la base de datos? Fijate que ese es un parametro del metodo, por ahi le erraste en eso. Para saber la version proba lo siguiente

MsgBox TuBase.Name & ", versión " & TuBase.Version

Saludos. Lucas
__________________
No sign...
  #5 (permalink)  
Antiguo 04/02/2005, 03:56
Avatar de paky  
Fecha de Ingreso: septiembre-2002
Mensajes: 127
Antigüedad: 12 años, 2 meses
Puntos: 0
Perdón por tantas molestias pero no sé exactamente que es lo que tengo que poner en la instruccion MsgBox donde pone TuBase.

Supongo que es el nombre de la base pero me lo puedes concretar.

Muchas Gracias.
  #6 (permalink)  
Antiguo 04/02/2005, 04:49
Avatar de lucasiramos  
Fecha de Ingreso: agosto-2004
Ubicación: Santa Rosa, La Pampa, Argentina
Mensajes: 1.484
Antigüedad: 10 años, 3 meses
Puntos: 13
Eso es simplemente para comprobar que version de base de datos tenes, que es lo que te puede traer inconvenientes a la hora de compactar. Recorda que ese es un parametro de la funcion CompactDataBase y si lo pasas mal te puede dar error

Si queres agrega un boton en un formulario y en el evento Click pega ese codigo

[QUOTE=paky]Perdón por tantas molestias[QUOTE]
Esa es la idea del foro... no hay molestias

Saludos. Lucas
__________________
No sign...
  #7 (permalink)  
Antiguo 04/02/2005, 06:17
Avatar de paky  
Fecha de Ingreso: septiembre-2002
Mensajes: 127
Antigüedad: 12 años, 2 meses
Puntos: 0
Vale, si lo copio tal y como está me aparece lo siguiente:

Error '424' en tiempo de ejecución:

Se requiere un objeto.


Eso es a lo que me refería, que qué es lo que tengo que poner en TuBase que supongo es lo que está dando problemas.

Saluditos otra vez.
  #8 (permalink)  
Antiguo 04/02/2005, 06:34
Avatar de lucasiramos  
Fecha de Ingreso: agosto-2004
Ubicación: Santa Rosa, La Pampa, Argentina
Mensajes: 1.484
Antigüedad: 10 años, 3 meses
Puntos: 13
Aclaración

Ooops, crei que me habia dado a entender... Lo que tenes que poner en TuBase es el nombre de la base de datos que queres compactar. En realidad el nombre de la variable con la que has abierto la base de datos. O sea:

Código:
Private Sub Command1_Click()
	Dim TuBase as DataBase
	Set TuBase = Opendatabase("C:\LaBaseQueQueresCompactar.Mdb")
	MsgBox TuBase.Name & ", versión " & TuBase.Version
End Sub
En el codigo reemplaza TuBase por el nombre de la variable de base de datos que definiste, y la ruta con el nombre que te di ("C:\LaBaseQueQueresCompactar.Mdb"), por el nombre y ruta de la base de datos. De esa manera vas a comprobar la version de la base de datos.

Espero haber sido claro ahora.

Saludos. Lucas
__________________
No sign...
  #9 (permalink)  
Antiguo 04/02/2005, 06:48
Avatar de paky  
Fecha de Ingreso: septiembre-2002
Mensajes: 127
Antigüedad: 12 años, 2 meses
Puntos: 0
OK, me dice que la versión es la 4.0, ¿ahora que hago?
  #10 (permalink)  
Antiguo 04/02/2005, 08:53
Avatar de lucasiramos  
Fecha de Ingreso: agosto-2004
Ubicación: Santa Rosa, La Pampa, Argentina
Mensajes: 1.484
Antigüedad: 10 años, 3 meses
Puntos: 13
mmm Creo que no es por el tipo de version, fijate en las referencias del proyecto (Menu Proyecto -> Referencias), que version de ADO tenes seleccionada, trata de seleccionar una de las últimas, a ver que pasa... De todas maneras en la ayuda encontre el siguiente código, probalo a ver que pasa (la conexion esta hecha con DAO, vos tendrias que "traducirla" a ADO...)

Código:
Sub CompactDatabaseX()
Dim dbsNeptuno As Database
Set dbsNeptuno = OpenDatabase("Neptuno.mdb")
' Muestra las propiedades de la base de datos original.
With dbsNeptuno
Debug.Print .Name & ", versión " & .Version
Debug.Print "	Secuencia de ordenación = " & .CollatingOrder
.Close
End With
' Asegúrese de que no existe un archivo con el 
' nombre de la base de datos compactada.
If Dir("NeptunCo.mdb") <> "" Then _
Kill "NeptunCo.mdb"
' Esta instrucción crea una versión compactada de 
' la base de datos Neptuno que utiliza la secuencia 
' de intercalación del lenguaje coreano.
DBEngine.CompactDatabase "Neptuno.mdb", _
"NeptunCo.mdb", dbLangKorean
Set dbsNeptuno = OpenDatabase("NeptunCo.mdb")
' Muestra las propiedades de la base de datos compactada.
With dbsNeptuno
Debug.Print .Name & ", versión " & .Version
Debug.Print "	Secuencia de ordenación = " & .CollatingOrder
.Close
End With
End Sub
Copyright (c) 1996 Microsoft Corporation
Saludos. Lucas
__________________
No sign...
  #11 (permalink)  
Antiguo 07/02/2005, 03:14
Avatar de paky  
Fecha de Ingreso: septiembre-2002
Mensajes: 127
Antigüedad: 12 años, 2 meses
Puntos: 0
Muchas gracias por todo Lucas, ya por fin se solucionó. El proceso lo hace bien sin ningún tipo de error. Ahora tan sólo tengo que esperar que alguna tabla se quede bloqueada para saber si funciona bien.

Gracias por tu ayuda.

Saludos, Paky
  #12 (permalink)  
Antiguo 07/02/2005, 04:59
Avatar de lucasiramos  
Fecha de Ingreso: agosto-2004
Ubicación: Santa Rosa, La Pampa, Argentina
Mensajes: 1.484
Antigüedad: 10 años, 3 meses
Puntos: 13
Buenisimo!! Me alegro que se haya solucionado el problema!

Un saludo grande. Lucas
__________________
No sign...
  #13 (permalink)  
Antiguo 03/09/2014, 13:20
 
Fecha de Ingreso: septiembre-2014
Mensajes: 1
Antigüedad: 2 meses
Puntos: 0
Respuesta: Compactar y Reparar la base de datos

Gracias por la información, tengo mi primera base de datos corrupta en Access y vi en este blog de un usuario http://repararmicrosoftaccess.bligoo.es/como-compactar-y-reparar-un-archivo-access-en-pocos-segundos que da buenos consejos, pero necesitaba algo más de información, así que muchas gracias, veré si la puedo reparar



La zona horaria es GMT -6. Ahora son las 20:52.
SEO by vBSEO 3.3.2