Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 05-07-2005
Perio Perio is offline
Miembro
 
Registrado: abr 2005
Ubicación: Argentina
Posts: 71
Poder: 20
Perio Va por buen camino
Exclamation Compactar y reparar BD Access

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
Responder Con Cita
  #2  
Antiguo 05-07-2005
Avatar de Alexander
Alexander Alexander is offline
Miembro
 
Registrado: may 2004
Posts: 235
Poder: 20
Alexander Va por buen camino
Post Intenta a ver con este

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
Responder Con Cita
  #3  
Antiguo 11-07-2005
Perio Perio is offline
Miembro
 
Registrado: abr 2005
Ubicación: Argentina
Posts: 71
Poder: 20
Perio Va por buen camino
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.
Responder Con Cita
  #4  
Antiguo 12-07-2005
Perio Perio is offline
Miembro
 
Registrado: abr 2005
Ubicación: Argentina
Posts: 71
Poder: 20
Perio Va por buen camino
Thumbs up

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;
Gracias de todos modos a todos lo que respondieron
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 18:10:42.


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