# Native Code > برنامه نویسی در Delphi >  با کدهای دلفی چطور دیتابیس خود را compact & repair کنیم

## davoodmz

با سلام
در یکی از برنامه ها از بانکهای اکسس استفاده می شود و می خواهم از طریق دلفی دیتابیس را compact & repair کنم میدونید برای چی این کار رامیخواهم انجام دهم:
به خاطر اینکه من برای ذخیره  تصاویر  از آن دیتابیس استفاده میکنم و میخواهم بعد از پاک کردن یک یا چند تصویر دیتابیس compact & repair شود تا حجم واقعی خود را نشان دهد.

با تشکر
   داود

----------


## monster_ant

کد زیر رو امتحان کن.....


var 
 despath : string
ole : oleVariant;
 
connection.Close;
  ole := CreateOleObject('DAO.DBEngine.36');
  ole.CompactDataBase(ExtractFilePath(ParamStr(0))
    + 'c:\DB.mdb' , ExtractFilePath(paramStr(0)) + 'c:\DB1.mdb');
  DeleteFile(ExtractFilePath(paramStr(0)) + 'c:\DB.mdb');
  RenameFile(ExtractFilePath(ParamStr(0))
    + 'c:\DB1.mdb' , ExtractFilePath(ParamStr(0)) + 'c:\DB.mdb');
  despath := ExtractFilePath(Application.ExeName);
  despath := despath + 'c:\DB.mdb';
  connection.ConnectionString := despath
    connection.open;

----------


## davoodmz

باسلام
باتشکر ازشما
ولی این کد فکر کنم برای ارتباط بابانک اطلاعاتی است. لطفاً بیشتر توضیح بدهید.

با تشکر
داود

----------


## mzjahromi

یه جستجو بکنبد در این زمینه کدهای زیادی نوشته شده

----------


## mr13668248

ای بابا
دستور
ole.CompactDataBase(ExtractFilePath(ParamStr(0))    + 'c:\DB.mdb' , ExtractFilePath(paramStr(0)) + 'c:\DB1.mdb');

تابع CompactDataBase کجاش بود؟    :شیطان:

----------


## omegao

سلام
آموزش بسيار عالي و كامل 
http://delphi.about.com/od/sqlserver.../aa091801a.htm

----------


## K.Mohammadreza

> با سلام
> در یکی از برنامه ها از بانکهای اکسس استفاده می شود و می خواهم از طریق دلفی دیتابیس را compact & repair کنم میدونید برای چی این کار رامیخواهم انجام دهم:
> به خاطر اینکه من برای ذخیره  تصاویر  از آن دیتابیس استفاده میکنم و میخواهم بعد از پاک کردن یک یا چند تصویر دیتابیس compact & repair شود تا حجم واقعی خود را نشان دهد.
> 
> با تشکر
>    داود



function CompactAndRepair(DB: string): Boolean;
var
  v: OLEvariant;
begin
  Result := True;
  try
    v := CreateOLEObject('JRO.JetEngine');
    try
      V.CompactDatabase('Provider=Microsoft.Jet.OLEDB.4.  0;Data Source='+DB,
                        'Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+DB+
                        'x;Jet OLEDB:Engine Type=5');
      DeleteFile(DB);
      RenameFile(DB + 'x', DB);
    finally
      V := Unassigned;
    end;
  except
    Result := False;
  end;
end;

----------

