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 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 05-05-2003
pgraciap pgraciap is offline
Miembro
 
Registrado: may 2003
Ubicación: Tampico, Tamaulipas [Mexico]
Posts: 39
Poder: 0
pgraciap Va por buen camino
Question Compactar MDB con contraseña

Alguien sabe como compactar una base de datos de access con contraseña, ya tengo el codigo de compactacion este se encuentra en los trucos de club, este compacta muy bien las bases de datos que no tienen contraseña, pero las que si tienen nada mas no las repara y compacta.....

alguien me podria decir cual es el truco.....

Saludos y gracias.....
__________________
Have a nice day :)
Responder Con Cita
  #2  
Antiguo 06-05-2003
Avatar de Rox77
Rox77 Rox77 is offline
Miembro
 
Registrado: may 2003
Ubicación: Caceres
Posts: 44
Poder: 0
Rox77 Va por buen camino
Hola PgraciaP, yo he probado el codigo para compactar bases de datos mdb q hay en el foro y me ocurrio lo mismo con una bd con contraseña...la funcion que usas para compactar tiene un parametro el cual es para introducir la contraseña de la bd...si quieres mas detalles busca en la ayuda de VBA de Access 97 hay lo encontre yo. Esq ahora mismo no me acuerdo de como es exactamente pero si quieres me lo dices y te mando un ejemplo.
Responder Con Cita
  #3  
Antiguo 07-05-2003
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.932
Poder: 26
delphi.com.ar Va por buen camino
Aunque pese informarlo, tuve que abrir Visual Basic para ver como lo había hecho ya hace unos años, pero obviamente en Visual Basic es mucho mas natural utilizar DAO, ahí va el código, lo probé y funciona, hay que tener en cuenta que el password es Case Sesitive.

Código:
uses
  ComObj;

procedure TForm1.Button1Click(Sender: TObject);
var
  DBEngine : OLEVariant;//IDispatch;
begin
  DbEngine := CreateOleObject('Dao.DbEngine.36');
  DbEngine.CompactDataBase('C:\db1.mdb', 'C:\db2.mdb', NULL, 0, ';pwd=password');
end;
__________________
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 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
  #5  
Antiguo 21-03-2005
davezf davezf is offline
Miembro
 
Registrado: dic 2004
Posts: 59
Poder: 20
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
  #6  
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.932
Poder: 26
delphi.com.ar Va por buen camino
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
  #7  
Antiguo 21-03-2005
davezf davezf is offline
Miembro
 
Registrado: dic 2004
Posts: 59
Poder: 20
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
  #8  
Antiguo 03-04-2005
davezf davezf is offline
Miembro
 
Registrado: dic 2004
Posts: 59
Poder: 20
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
  #9  
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
  #10  
Antiguo 06-04-2005
davezf davezf is offline
Miembro
 
Registrado: dic 2004
Posts: 59
Poder: 20
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 19:02:09
Usuario y contraseña con ADOconnection Gelmin Conexión con bases de datos 3 27-09-2005 09:42:48
Ingreso al form mediante contraseña o sin ella Pablo Carlos Varios 2 25-07-2005 18:53:15
Bases de datos con contraseña PTW Conexión con bases de datos 2 28-07-2004 13:00:52
Compactar MDB con contraseña Fernando Conexión con bases de datos 2 29-11-2003 19:56:47


La franja horaria es GMT +2. Ahora son las 01:03:28.


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