Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros temas > Trucos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Los mejores trucos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 30-06-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.119
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Compactar y Reparar Base de Datos en Access

Para compactar una Base de Datos en Access:

Código Delphi [-]
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;
Responder Con Cita
  #2  
Antiguo 09-12-2009
darkone2k4 darkone2k4 is offline
Miembro
 
Registrado: abr 2008
Posts: 89
Poder: 17
darkone2k4 Va por buen camino
gracias x el código, muy bueno.

el único 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????
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


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


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