Foros del Web » Programación para mayores de 30 ;) » 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: 21 años, 7 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: 19 años, 8 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
  #3 (permalink)  
Antiguo 03/02/2005, 06:12
Avatar de paky  
Fecha de Ingreso: septiembre-2002
Mensajes: 127
Antigüedad: 21 años, 7 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: 19 años, 8 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
  #5 (permalink)  
Antiguo 04/02/2005, 03:56
Avatar de paky  
Fecha de Ingreso: septiembre-2002
Mensajes: 127
Antigüedad: 21 años, 7 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: 19 años, 8 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
  #7 (permalink)  
Antiguo 04/02/2005, 06:17
Avatar de paky  
Fecha de Ingreso: septiembre-2002
Mensajes: 127
Antigüedad: 21 años, 7 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: 19 años, 8 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
  #9 (permalink)  
Antiguo 04/02/2005, 06:48
Avatar de paky  
Fecha de Ingreso: septiembre-2002
Mensajes: 127
Antigüedad: 21 años, 7 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: 19 años, 8 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
  #11 (permalink)  
Antiguo 07/02/2005, 03:14
Avatar de paky  
Fecha de Ingreso: septiembre-2002
Mensajes: 127
Antigüedad: 21 años, 7 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: 19 años, 8 meses
Puntos: 13
Buenisimo!! Me alegro que se haya solucionado el problema!

Un saludo grande. Lucas
  #13 (permalink)  
Antiguo 03/09/2014, 12:20
 
Fecha de Ingreso: septiembre-2014
Mensajes: 1
Antigüedad: 9 años, 7 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
  #14 (permalink)  
Antiguo 08/12/2015, 00:20
 
Fecha de Ingreso: diciembre-2015
Mensajes: 1
Antigüedad: 8 años, 4 meses
Puntos: 0
Respuesta: Compactar y Reparar la base de datos

Durante el uso de acceso, si usted está recibiendo el error 3343:
Formato no reconocido base de datos 'C: \ Temp \ Northwind.accdb "en la línea de Set dbNorthwind = OpenDatabase (Nombre: =" C: \ Temp \ Northwind.accdb ").
En tales casos, usted tiene que asegurarse de que la referencia a la biblioteca DAO correcta (en VBA en Herramientas-> Referencias). El viejo, sólo para archivos .mdb, tiene DAO en su nombre. Para los archivos .accdb que necesita el nuevo, que se llama "Microsoft Office 12.0 Acceso motor de base de la biblioteca de objetos".
O bien, el objeto DAO.Workspace y la contraseña en los argumentos OpenDatabase ha incorporado a partir de ese artículo, aquí tienes que simplemente copia y pega el código se mencionan a continuación:
Sub UsingDAOWithWord ()
Dim docNew Como Documento
Ws dévil como DAO.Workspace
Dim dbNorthwind Como DAO.Database
RdShippers Dim As Recordset
IntRecords Dim As Integer

Set ws = DBEngine.Workspaces (0)
Establecer docNew = Documents.Add
Establecer dbNorthwind = ws.OpenDatabase ("C: \ Temp \ Northwind.accdb", _
Falso, falso, "MS Access; PWD = nortes")
Establecer rdShippers = dbNorthwind.OpenRecordset (Nombre: = "Transportistas")
Para intRecords = 0 Para rdShippers.RecordCount - 1
docNew.Content.InsertAfter Texto: = rdShippers.Fields (1) .Value
rdShippers.MoveNext
docNew.Content.InsertParagraphAfter
intRecords Siguiente
rdShippers.Close
dbNorthwind.Close
End Sub
Y usted encontrará trhat se ha solucionado el problema. Si usted encuentra los pasos antes mencionados complicadas entonces en ese caso se puede fijar con la ayuda de la MS Access herramienta de reparación de. Usando Este software, se puede arreglar fácilmente el error 3343. Por otra parte el uso de este software es muy fácil. Para más información visite
http://es.accessrepairnrecovery.com/blog/de-errores-3343-no-reconocido-formato-de-base-de-datos

Última edición por kd45678; 08/12/2015 a las 00:26
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 14:34.