读书人

Delphi中ADO控件删除dbf数据库解决方法

发布时间: 2012-03-12 12:45:33 作者: rapoo

Delphi中ADO控件删除dbf数据库
处理一dbf数据库,要求每次保存数据前删除dbf中现有记录,我知道BDE可以实现,但因为我的程序主数据库是SQL Server的,所以采用ADO,在网上查过,dbf数据库文件对记录的删除是软删除,在foxpro中要调用Pack才能实现物理删除,有没有哪位有解决方案,非常感激。

[解决办法]
方法比笨,不了dbf的物理除...

Delphi(Pascal) code
procedure TForm1.Button1Click(Sender: TObject);var    adoconnection1,adoconnection2:Tadoconnection;begin    adoconnection1:=Tadoconnection.Create(nil);    adoconnection1.ConnectionString:='Provider=MSDASQL.1;Password="";Persist Security Info=True;Data Source=dbf1';    adoconnection1.Open;    adoconnection1.execute('delete from X1-31-P40');    adoconnection1.Close;    adoconnection1.Free;    //adoconnection1.Destroy; adoconnection2:=Tadoconnection.Create(nil);    adoconnection2.ConnectionString:='Provider=MSDASQL.1;Password="";Persist Security Info=True;Data Source=dbf1';//dbf1是指向自由表文件的odbc数据源    adoconnection2.Open;    adoconnection2.execute('pack X1-31-P40.dbf');    adoconnection2.Close;    adoconnection2.Free;    //adoconnection2.Destroy; end;
[解决办法]
如果是除,又要恢data,那可以...

在Delphi用程式中,DBF料表行的除操作除操作.由於物理 有料表中除,我就可以恢被除的,只要去掉除即可.
  要用到的函名DbiUndeleteRecord,函原型:
Delphi(Pascal) code
functionDbiUndeleteRecord (hCursor:hDBICur):DBIResult;其中,hCursor可料集的Handle .  下面就是一典型的例子.  同,在uses句加上:DbiTypes,DbiProcs,DbiErrs. {恢被除的}functionUndeleteRecord(DbfTable:TTable):boolean;beginResult:=false;{返回false表示函行失}withDbfTabledobegin{如果料集於非活,行失}ifnotactivethenexit;{使料集的目前的目前的位置一致}UpdateCursorPos;{恢被除的}ifDBIERR_NONEDbiUndeleteRecord(Handle)thenexit;{生,操作失}result:=true; {操作成功}end;end;
[解决办法]
ocommand1.commandtext:='pack X1-31-P40.dbf';
adocommand1.Execute;

读书人网 >.NET

热点推荐