Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Ver Resultados de Encuesta: Calificación
Bestial 1 25,00%
... 1 25,00%
Normal 1 25,00%
... 0 0%
Malo 1 25,00%
Encuesta de Elección Múltiple. Votantes: 4. Tú no puedes votar en esta encuesta

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 07-05-2003
pgraciap pgraciap is offline
Miembro
 
Registrado: may 2003
Ubicación: Tampico, Tamaulipas [Mexico]
Posts: 39
Poder: 0
pgraciap Va por buen camino
Lightbulb Respuesta a compactar una mdb con contraseña

Nota importante hay que poner en cualquiera de las clausulas USES, comobj.

Con esto ya algunos tendremos como terminar nuestro, proposito de compactar las bases de datos con contraseña.

Para compactar una Base de Datos en Access

var Dir: string; // contiene el directorio
// en dónde se encuentra el fichero de datos


function GetEngine(var DbEngine: Variant): Boolean;
begin
Result := False;
try
DbEngine := CreateOleObject('Dao.DbEngine.35'); // Para Access'97
except
try
DbEngine := CreateOleObject('Dao.DbEngine.36'); // Para Access 2000
except
ShowMessage('No es posible inicializar el DAO.'#13 +
'Microsoft DAO debe de estar instalado en este equipo.'#13 +
'Para instalarlo, debes saber que forma parte de '+
'MS Access, Visual Basic, MS Office, etc.');
Exit;
end;
end;
Result := VarType(DbEngine) = VarDispatch;
end;


function CompactDataBaseDao(DbAccessName: String): Boolean;
var
DbEngine: Variant;
TmpFile: String;
begin
Result := False;
if Dir = '' then Exit;
TmpFile := Dir + 'TmpAccess.Mdb';
if Pos( '.MDB', UpperCase(DbAccessName)) = 0 then
DbAccessName := DbAccessName + '.MDB';
if not FileExists(DbAccessName) then Exit;
try
if not GetEngine(DbEngine) then Exit;
if FileExists(TmpFile) then
DeleteFile(TmpFile);
// Antes de compactar la Base de Datos, ésta se repara.
DbEngine.CompactDataBase(DbAccessName, TmpFile);
DeleteFile(DbAccessName);
RenameFile(TmpFile, DbAccessName);
// En caso de caida del sistema aquí, tendremos la base compactada en TmpFile.
Result := True;
except
Exit;
end;
end;

Nota:
Esta parte es para compactar las mdb sin contraseña:
DbEngine.CompactDataBase(DbAccessName, TmpFile);.
Y esta otra es para las que tienen contraseña:
DbEngine.CompactDataBase(DbAccessName, TmpFile, NULL, 0, ';pwd=password');.

Esta ultima parte es gracias a nuestros amigos: delphi.com.ar y Rox77.

Espero les funcione a mucha gente al igual que a un servidor...
Saludos y Gracias.....
__________________
Have a nice day :)
Responder Con Cita
  #2  
Antiguo 20-03-2005
davezf davezf is offline
Miembro
 
Registrado: dic 2004
Posts: 59
Poder: 22
davezf Va por buen camino
Hola,

Lo he probado y me funciona correctamente en Windows XP, pero al compactar con Windows Millenium me da un error. Alguien sabe por que?
__________________
Dave
Responder Con Cita
  #3  
Antiguo 21-03-2005
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.964
Poder: 29
delphi.com.ar Va camino a la fama
Sería buenísimo saber cuál es el error
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #4  
Antiguo 21-03-2005
davezf davezf is offline
Miembro
 
Registrado: dic 2004
Posts: 59
Poder: 22
davezf Va por buen camino
Mejor si

Explico un poco mejor. El ordenador del cliente tiene Windows Millenium y Office XP. La base de datos tiene contraseña. Entonces el error se produce al compactar la base de datos (Datatype conversion error). Pero si lo compacto desde access no hay ningun problema.
__________________
Dave
Responder Con Cita
  #5  
Antiguo 03-04-2005
davezf davezf is offline
Miembro
 
Registrado: dic 2004
Posts: 59
Poder: 22
davezf Va por buen camino
Lo explico mas detalladamente, a ver si alguien encuentra la solucion.

Uso el codigo indicado por pgraciap. Entonces cuando ejecuta la linea
DbEngine.CompactDataBase(DbAccessName, TmpFile, NULL, 0, ';pwd=password');

me indica el error "Datatype conversion error"

Alguien tiene una solucion? En XP funciona perfectamente y desde access con cualquier version funciona bien.
__________________
Dave
Responder Con Cita
  #6  
Antiguo 05-04-2005
pgraciap pgraciap is offline
Miembro
 
Registrado: may 2003
Ubicación: Tampico, Tamaulipas [Mexico]
Posts: 39
Poder: 0
pgraciap Va por buen camino
Ya probaste instalar las actualizaciones del DAO/Access podrias dar un poco mas de datos en cuanto a error???

Saludos...
__________________
Have a nice day :)
Responder Con Cita
  #7  
Antiguo 06-04-2005
davezf davezf is offline
Miembro
 
Registrado: dic 2004
Posts: 59
Poder: 22
davezf Va por buen camino
DAO / Access se instala con la aplicacion y es el version 2.5 (la que he encontrado).

No se que mas explicar del error porque no se mas aparece ese error al compactar la base de datos, pero si la compacto con access todo funciona bien.
__________________
Dave
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Crystal y SQL 2000 contraseña del sa jano Varios 2 28-11-2005 18:02:09
Usuario y contraseña con ADOconnection Gelmin Conexión con bases de datos 3 27-09-2005 08:42:48
Ingreso al form mediante contraseña o sin ella Pablo Carlos Varios 2 25-07-2005 17:53:15
Bases de datos con contraseña PTW Conexión con bases de datos 2 28-07-2004 12:00:52
Compactar MDB con contraseña Fernando Conexión con bases de datos 2 29-11-2003 18:56:47


La franja horaria es GMT +2. Ahora son las 16:05:40.


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