delphi如何物理删除DBF数据
delphi如何物理删除DBF数据
[解决办法]
删除以后,需要pack一下,pack之前需要断开数据联接
老代码了,试试看行否
- Delphi(Pascal) code
{***************************************************************** Unit Name: unAccessTools* Purpose : Provide tools to compact and repair Access database.*****************************************************************}unit unAccessTools;interfaceuses Sysutils,ComObj,Dialogs;function DaoActive(var DaoObject:OleVariant):Boolean;function DaoCompactDB(const FileName:string):Boolean;function DaoRepairDB(const FileName:string):Boolean;implementationfunction DaoActive(var DaoObject:OleVariant):Boolean;begin Result:=False; try DaoObject:=GetActiveOleObject('DAO.DBEngine.36'); Result:=True; except try DaoObject:=CreateOleObject('DAO.DBEngine.36'); Result:=True; except DaoObject:=Null; end; end;end;//压缩Access数据库function DaoCompactDB(const FileName:string):Boolean;var db:OleVariant; TempFile:string;begin Result:=False; try if not DaoActive(db) then Exit; try TempFile:=ExtractFilePath(FileName)+'msaTemp.mdb'; db.CompactDatabase(FileName,TempFile); DeleteFile(FileName); RenameFile(TempFile,FileName); Result:=True; except on E:EOleException do ShowMessage(E.Message); end finally db:=Unassigned; end;end;//修复Access数据库function DaoRepairDB(const FileName:string):Boolean;var db:OleVariant;begin Result:=False; try if not DaoActive(db) then Exit; try db.RepairDatabase(FileName); Result:=True; except on E:EOleException do ShowMessage(E.Message); end finally db:=Unassigned; end;end;end.