Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 16-07-2007
Drakyto Drakyto is offline
Miembro
 
Registrado: ene 2007
Posts: 31
Poder: 0
Drakyto Va por buen camino
Question Compactar Base d Datos Access desde Delphi.

Hola compañeros programadores, ahora les tengo otra consulta; cómo puedo compactar una base d datos en Access desde Delphi, existe algún procedimiento sencillo para eso? Gracias d antemano.
Responder Con Cita
  #2  
Antiguo 16-07-2007
Avatar de droguerman
droguerman droguerman is offline
Miembro
 
Registrado: abr 2005
Ubicación: tierra
Posts: 999
Poder: 20
droguerman Va por buen camino
a riesgo de equivocarme no creo que se pueda hacer mediante consultas, parece más sencillo hacer un objeto OLE que realize tal operacion
__________________
self.free;
Responder Con Cita
  #3  
Antiguo 16-07-2007
Delfino Delfino is offline
Miembro
 
Registrado: jul 2003
Ubicación: Madrid
Posts: 974
Poder: 21
Delfino Va por buen camino
Cita:
cómo puedo compactar una base d datos en Access desde Delphi
Aqui se explica como, ademas estoy seguro q ya se toco este tema en el foro, solo hace falta molestarse en buscar..
__________________
¿Microsoft? No, gracias..
Responder Con Cita
  #4  
Antiguo 16-01-2008
eduardo_2009 eduardo_2009 is offline
Registrado
 
Registrado: oct 2006
Posts: 5
Poder: 0
eduardo_2009 Va por buen camino
Thumbs up Este método esta muy bien...

// Compilado en Delphi 7 com Access 2000
// agrega en USES comobj,variants

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;

// llama esta funcion asi: CompactDataBaseDao('datos.mdb');
Responder Con Cita
  #5  
Antiguo 09-12-2009
darkone2k4 darkone2k4 is offline
Miembro
 
Registrado: abr 2008
Posts: 89
Poder: 17
darkone2k4 Va por buen camino
una consulta....

estoy utilizando ese mismo código en Delphi 6 y el problema que tengo es que una vez realizado el proceso de compactar me da el siguiente error:

Exception EOleException in module Captura.exe at 000A1C48.
Error de autenticación.

Alguien sabe a qué se debe????

gracias.


Responder Con Cita
  #6  
Antiguo 02-01-2010
Avatar de GerTorresM
GerTorresM GerTorresM is offline
Miembro
 
Registrado: nov 2005
Ubicación: Tunja - Boyacá
Posts: 210
Poder: 19
GerTorresM Va por buen camino
Prueba este

Código Delphi [-]
procedure CompactarBaseDeDatos (BaseDeDatos,contrasena : string);
var DBEngine : OLEVariant;
Begin
  try
    DeleteFile(BaseDeDatos + '2');
    DbEngine := CreateOleObject('Dao.DbEngine.35');
    DbEngine.CompactDataBase(BaseDeDatos, BaseDeDatos + '2', NULL, 0, ';pwd='+contrasena);
    DeleteFile(BaseDeDatos);
    RenameFile(BaseDeDatos + '2', BaseDeDatos);
  except
    try
      DeleteFile(BaseDeDatos + '2');
      DbEngine := CreateOleObject('Dao.DbEngine.36');
      DbEngine.CompactDataBase(BaseDeDatos, BaseDeDatos + '2', NULL, 0, ';pwd='+contrasena);
      DeleteFile(BaseDeDatos);
      RenameFile(BaseDeDatos + '2', BaseDeDatos);
    except
      try
        DeleteFile(BaseDeDatos + '2');
        DbEngine := CreateOleObject('Dao.DbEngine.120');
        DbEngine.CompactDataBase(BaseDeDatos, BaseDeDatos + '2', NULL, 0, ';pwd='+contrasena);
        DeleteFile(BaseDeDatos);
        RenameFile(BaseDeDatos + '2', BaseDeDatos);
      finally
      end;
    end
  end;
end;
Responder Con Cita
  #7  
Antiguo 22-02-2010
darkone2k4 darkone2k4 is offline
Miembro
 
Registrado: abr 2008
Posts: 89
Poder: 17
darkone2k4 Va por buen camino
Cita:
Empezado por GerTorresM Ver Mensaje
Código Delphi [-]
procedure CompactarBaseDeDatos (BaseDeDatos,contrasena : string);
var DBEngine : OLEVariant;
Begin
  try
    DeleteFile(BaseDeDatos + '2');
    DbEngine := CreateOleObject('Dao.DbEngine.35');
    DbEngine.CompactDataBase(BaseDeDatos, BaseDeDatos + '2', NULL, 0, ';pwd='+contrasena);
    DeleteFile(BaseDeDatos);
    RenameFile(BaseDeDatos + '2', BaseDeDatos);
  except
    try
      DeleteFile(BaseDeDatos + '2');
      DbEngine := CreateOleObject('Dao.DbEngine.36');
      DbEngine.CompactDataBase(BaseDeDatos, BaseDeDatos + '2', NULL, 0, ';pwd='+contrasena);
      DeleteFile(BaseDeDatos);
      RenameFile(BaseDeDatos + '2', BaseDeDatos);
    except
      try
        DeleteFile(BaseDeDatos + '2');
        DbEngine := CreateOleObject('Dao.DbEngine.120');
        DbEngine.CompactDataBase(BaseDeDatos, BaseDeDatos + '2', NULL, 0, ';pwd='+contrasena);
        DeleteFile(BaseDeDatos);
        RenameFile(BaseDeDatos + '2', BaseDeDatos);
      finally
      end;
    end
  end;
end;
disculpa la demora en responder...

muchas gracias por la respuesta...
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
Como crear una base de datos desde Access... JF Sebastian Conexión con bases de datos 5 29-03-2007 18:14:22
Compactar base de Datos Interbase Isnel Firebird e Interbase 4 02-11-2006 18:15:42
Compactar Base de Datos Paradox jdangosto Conexión con bases de datos 3 02-08-2005 18:34:57
Compactar Base de Datos Milu Firebird e Interbase 2 03-09-2004 21:12:48


La franja horaria es GMT +2. Ahora son las 13:16:58.


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