![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
|
Buenasss, como estan todos...
Tengo una consulta de relativa urgencia, necesito compactar y reparar una base de datos Access desde Delphi, Como podria hacerlo? Supongo que debe existir alguna unit de objetos OLE o algun componente, les agradecería que me ayuden o me orienten como encarar el problema.- Saludos desde Argentina Perio |
|
#2
|
||||
|
||||
|
Alguien me envió este código y la verdad no se si funcione.
Intenta funcionar con este a ver. Debes poner JRO_TLB en el uses. Código:
procedure TfMainForm.P_CompactarClick(Sender:TObject);
var
JE : TJetEngine; //Jet Engine
sdbTemp : WideString; //TEMP database
sdbName : WideString;
const
SProvider = 'Provider=Microsoft.Jet.OLEDB.4.0;DataSource=';
begin
inherited;
DBM.ADOConnection.Close;
sdbName := g_sAppPath + g_sPrograma + '.mdb';
sdbTemp := g_sAppPath + 'TEMP_' + g_sPrograma +'.mdb';
if FileExists(sdbTemp) then
DeleteFile(sdbTemp);
JE := TJetEngine.Create(Application);
try
try
JE.CompactDatabase(SProvider + sdbName, SProvider + sdbtemp);
DeleteFile(sdbName);
RenameFile(sdbTemp, sdbName);
except
on E:Exception do
ShowMessage(E.Message);
end;
finally
JE.FreeOnRelease;
ShowMessage('Proceso terminado.');
Close;
end;
end;
__________________
Cielos azules |
|
#3
|
|||
|
|||
|
sigo sin compactar....
Hola Alexander, muchas gracias por tu pronta respuesta, pero sigo con inconvenientes para hacer funcionar el código.
En la linea siguiente del codigo que me pasaste: JE.CompactDatabase(SProvider + sdbName, SProvider + sdbtemp); Me tira el error "No se pudo encontrar el archivo ISAM instalable".- No tengo idea que puede llegar a ser. Un saludazo desde Argentina.- Perio Última edición por Perio fecha: 11-07-2005 a las 17:07:37. |
|
#4
|
|||
|
|||
|
Guenasss, como andan todos... pude compcatar la puta base de datos y lo hice asiss:
Código:
//Agregar en la uses
uses JRO_TLB;
procedure TForm1.Button2Click(Sender: TObject);
var
JetEngine1 : TJetEngine;
DBName: String;
DataSource, DataDest, DataDestName, Source : String;
begin
DBName := 'C:\Eduardo_Vadalá_(no_borrar)\data_STT.mdb ';
//Si no existe, corta el proceso
if not FileExists(DBName) then
begin
Showmessage('Base de Datos no Encontrada');
Exit;
end;
//Ruta de base de datos temporal
DataDestName := 'C:\WINDOWS\Temp\data_STT.mdb';
//Si existe lo borra
if FileExists(DataDestName) then
begin
DeleteFile(DataDestName);
Showmessage('Archivo no Encontrado');
end;
DataSource :='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+DBName+';';
DataDest :='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+DataDestName+';';
dataDest := DataDest +'Jet OLEDB:Engine Type=5';
JetEngine1 := TJetEngine.Create(self);
try
JetEngine1.CompactDatabase(DataSource,DataDest);
Showmessage('Base de Datos Compactada en: '+DataDestName);
JetEngine1.Free;
if DeleteFile(DBName) then
begin
if RenameFile(DataDestName,DBName) then
Showmessage(DataDestName+ ' Renombrada a: ' +DBName)
else
Showmessage(DataDestName+ ' no Renombrada' +DBName);
end
else
Showmessage('Error: '+DBName+',no pudo ser borrada');
except
on E: Exception do Showmessage(E.Message);
end;
end;
|
![]() |
|
|
|