Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Tablas planas
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 04-01-2014
Avatar de radenf
radenf radenf is offline
Miembro
 
Registrado: oct 2007
Ubicación: Viña del Mar,Chile
Posts: 608
Poder: 17
radenf Va por buen camino
Compactar y reparar BD Access 2010

Hola amigos:

Necesito incluir en mi programa la capacidad de reparar y compactar la base de datos que utiliza, creada con Access 2010.
He revisado el foro y en la web, pero lo que he encontrado apunta a Access 2007 o anterior, por lo que no es posible utilizar la librería JRO_TLB ya que Office 2010 no la incorpora.
He utilizado el siguiente código que obtuve en la web, pero no funciona, no da error pero tampoco compacta la BD.

Código Delphi [-]
function CompactarBDAccess(DB: string) : boolean;
var
v: OLEvariant;
begin
Result:= True;
try
v := CreateOLEObject('JRO.JetEngine');
try
v.CompactDatabase('Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' + DB,
'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' + DB + 'x;Jet OLEDB:Engine type=5');
DeleteFile(DB);
RenameFile(DB + 'x', DB)
finally
v := Unassigned;
end;
except
Result:= False
end;
end;

y para llamarla utilizo:

Código Delphi [-]
CompactarBDAccess(ExtractFilePath(Application.ExeName) + 'Dicom Data\Base de Datos\Dicom_be.mdb');

¿Puede alguien orientarme al respecto?
Saludos y muchas gracias
Responder Con Cita
  #2  
Antiguo 07-01-2014
Avatar de radenf
radenf radenf is offline
Miembro
 
Registrado: oct 2007
Ubicación: Viña del Mar,Chile
Posts: 608
Poder: 17
radenf Va por buen camino
¿No hay sugerencias?

Saludos
Responder Con Cita
  #3  
Antiguo 23-06-2014
nicolasjavier nicolasjavier is offline
Miembro
NULL
 
Registrado: abr 2014
Ubicación: Bahía Blanca
Posts: 19
Poder: 0
nicolasjavier Va por buen camino
No encontraste la solución? Tengo el mismo problema
Responder Con Cita
  #4  
Antiguo 26-06-2014
Avatar de radenf
radenf radenf is offline
Miembro
 
Registrado: oct 2007
Ubicación: Viña del Mar,Chile
Posts: 608
Poder: 17
radenf Va por buen camino
Aún no he podido hacer que funcione.
Y como verás al parecer nadie sabe cómo.
Saludos
Responder Con Cita
  #5  
Antiguo 27-06-2014
nicolasjavier nicolasjavier is offline
Miembro
NULL
 
Registrado: abr 2014
Ubicación: Bahía Blanca
Posts: 19
Poder: 0
nicolasjavier Va por buen camino
El codigo que pusiste a mi me funcionó a la perfección!!
Responder Con Cita
  #6  
Antiguo 28-06-2014
Avatar de radenf
radenf radenf is offline
Miembro
 
Registrado: oct 2007
Ubicación: Viña del Mar,Chile
Posts: 608
Poder: 17
radenf Va por buen camino
Para Access 2010 a mí no me funciona, pero sí cuando utilizaba Access 2007.
Saludos
Responder Con Cita
  #7  
Antiguo 04-08-2014
jplj jplj is offline
Miembro
 
Registrado: oct 2003
Posts: 189
Poder: 21
jplj Va por buen camino
Hola.

Probablemente será tarde, pero ¿has probado con el código propuesto por GerTorresM en este hilo ?
__________________
Sonríe. Mañana puede ser peor.
Responder Con Cita
  #8  
Antiguo 05-08-2014
Avatar de radenf
radenf radenf is offline
Miembro
 
Registrado: oct 2007
Ubicación: Viña del Mar,Chile
Posts: 608
Poder: 17
radenf Va por buen camino
Muchas gracias por responder jplj.
Ese código ya lo había probado y no me funciona en Win7.
Saludos
Responder Con Cita
  #9  
Antiguo 07-08-2014
jplj jplj is offline
Miembro
 
Registrado: oct 2003
Posts: 189
Poder: 21
jplj Va por buen camino
Hola

He estado comprobando lo que comentabas de Windows 7 y te puedo decir que en mi caso el procedimiento ha funcionado correctamente con lo siguiente:

.- Windows 7 con Microsoft Office 2010 instalado.
.- "Programa" de pruebas hecho con Delphi 7 y componentes ADO

Las pruebas las he realizado con una base de datos Access 2003 -usando Provider=Microsoft.Jet.OLEDB.4.0 para realizar la prueba de conexión- y con otra de Access 2010 -usando Provider=Microsoft.ACE.OLEDB.12.0 para realizar la prueba de conexión- funcionando correctamente con ambas.


Comentar unas "cosillas" sobre el tema:

.- La base de datos será abierta en modo exclusivo por lo que no puede estar en uso por otro usuario o aplicación.
.- Debe haber espacio suficiente en el disco donde se realiza la compactación.
.- Si la base de datos no tiene contraseña, la función se llama sin los tres últimos parámetros

Código Delphi [-]
if APassword <> '' then
   DbEngine.CompactDataBase(ADataBaseName, ADataBaseName + '2', NULL, 0, ';pwd='+APassword)
else
   DbEngine.CompactDataBase(ADataBaseName, ADataBaseName + '2');

Cuando falla por alguno de los dos primeros motivos anteriores, el mensaje de error era algo así como "cadena de clase no válida", vamos que no aclara nada

Por otra parte imagino que deberás tener motivos, pero al usar las versión 2007-2010 hay que tener en cuenta que según nos dice Microsoft:

Cita:
Este formato admite las características más recientes como los campos multivalor, las macros de datos y la publicación en Servicios de Access ...
... el formato .accdb no admite replicación ni seguridad por usuarios.

Más información sobre Métodos de DBEngine (DAO).
__________________
Sonríe. Mañana puede ser peor.
Responder Con Cita
  #10  
Antiguo 07-08-2014
Avatar de radenf
radenf radenf is offline
Miembro
 
Registrado: oct 2007
Ubicación: Viña del Mar,Chile
Posts: 608
Poder: 17
radenf Va por buen camino
Muchas gracias jplj

La base de datos funciona perfectamente en mi programa, pero no puedo compactarla.
Al ejecutar el código propuesto por GerTorresM, con las modificaciones señaladas, me da el siguiente error:

Clase no registrada,ProgID:"Dao.DBEngine.120"

Yo utilizo Win7 64 bits. No sé si por ahí estará el problema, ya que según tengo entendido Win7 no trae el DAO.
Saludos
Responder Con Cita
  #11  
Antiguo 07-08-2014
jplj jplj is offline
Miembro
 
Registrado: oct 2003
Posts: 189
Poder: 21
jplj Va por buen camino
Como te comentaba lo he probado con Win7, pero con el paquete Office 2010 instalado. ¿Tienes instalado ese paquete en el equipo?
El enlace que te he dejado sobre DAO está "ligado" a información sobre Office 2013, por lo que creo que es probable que venga con el paquete office.
Habría que ver si se puede obtener "suelto".
__________________
Sonríe. Mañana puede ser peor.
Responder Con Cita
  #12  
Antiguo 08-08-2014
Avatar de radenf
radenf radenf is offline
Miembro
 
Registrado: oct 2007
Ubicación: Viña del Mar,Chile
Posts: 608
Poder: 17
radenf Va por buen camino
Como señalé en un post anterior cuando usaba Access 2007 me funcionaba, pero cuando me cambié a Access 2010 dejó de hacerlo.
Saludos
Responder Con Cita
  #13  
Antiguo 08-09-2014
adelbert adelbert is offline
Registrado
NULL
 
Registrado: sep 2014
Posts: 2
Poder: 0
adelbert Va por buen camino
Hola, estaba teniendo el mismo problema y después de leer varios foros inclusive este, pude encontrar en este blog una nota donde habla de esto y cómo solucionarlo, no puedo compartir la nota, pero si alguien tiene el mismo problema que me escriba

Enlace a la nota: Programas que te permitirán recuperar tus datos en Access

Última edición por ecfisa fecha: 25-09-2014 a las 18:55:23. Razón: Agregar enlace a la nota
Responder Con Cita
  #14  
Antiguo 08-09-2014
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por adelbert Ver Mensaje
Hola, estaba teniendo el mismo problema y después de leer varios foros inclusive este, pude encontrar en este blog una nota donde habla de esto y cómo solucionarlo, no puedo compartir la nota, pero si alguien tiene el mismo problema que me escriba
Bienvenido a clubdelphi, ¿ya leiste nuestra guía de estilo?, gracias por tu colaboración
Responder Con Cita
  #15  
Antiguo 08-09-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola adelbert.

Hazle caso a Casimiro, la guía de estilo es muy clara en ese punto:
Cita:
9. ¿Qué tengo que describir del problema?
...
No solicites que te respondan por correo en privado

Los problemas deben ser un proceso público y transparente, durante el cual un primer intento de respuesta puede y debería corregirse si alguien con más conocimientos percibe que la respuesta es incompleta o incorrecta. Además quién te responde obtiene parte de su recompensa al verse que son competentes y útiles a nuestra comunidad.

Cuando pides una respuesta privada, estás interrumpiendo tanto el proceso como la recompensa. No lo hagas.
Esto también se aplica a brindar respuestas por privado.

Si no podes colocar el enlace al artículo, avisa por pm a cualquier moderador y lo hará gustoso. Pero si no la podes compartir por que no es pública o tiene alguna restricción, no lo hagas.

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Reparar y compactar la BD Richard Mejia Conexión con bases de datos 2 13-02-2011 07:13:42
Compactar y Reparar Base de Datos en Access dec Trucos 1 09-12-2009 16:07:14
Compactar y reparar BD Access Perio SQL 3 12-07-2005 22:16:50
Compactar y Reparar una BD desde Delphi Sr.Scorpion Conexión con bases de datos 2 14-04-2005 20:46:17
Compactar y reparar Novás Varios 2 08-01-2004 10:17:29


La franja horaria es GMT +2. Ahora son las 20:28:06.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi