在delphi中用ado连接foxpro数据库,如何真正的将数据库中的记录删除?真删除,不是假删除!在线等待! 如题! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 在Delphi程序中真正删除记录, 需要调用BDE函数,函数名为DbiPackTable,函数原型为:functionDbiPackTable(hDb:hDBIDb;hCursor :hDBICur;pszTableName:PChar;pszDriverType:PChar;bRegenIdxs :Bool):DBIResult;其中:hDb为数据库TDatabse的句柄, hCursor为数据表TTable的句柄, pszTableName为要删除记录的数据表的名称, pszDriverType为要删除记录的数据表的类型, bRegenIdxs表示是否在删除记录后自动更新索引文件. 在上面前四个参数中,hDb不能为NULL .hCursor、pszTableName、pszDriverType可以为NULL,但必须提供足够的信息来标识数据表的文件名称和类型,当hCursor不为空时,pszTableName 和pszDriverType可以为NULL;当pszTableName为数据表的路径和文件名时,hCursor和pszDriverType可以为NULL. 值得注意的是,在删除记录时,如 果用Table来实现,则Table必须以Exclusive=True的方式打开.下面就是一个典型的例子. 首先,应在uses语句加上:DbiTypes,DbiProcs,DbiErrs.{Pack一个DBF数据表,DbfTable包含了数据表的信息 }functionPackDbf le(DbfTable:TTable):boolean;varerrResult:DBIResult;beginifnotDbfTable.Exclusivethen {如果不是以独占方式,操作失败}beginresult:=false;exit;end;{进行删除操作}errResult:=DbiPackTable(DbfTable.dbHandle, DbfTable.handle,NIL,NIL,true); {根据返回结果,返回成功与否的标志}iferrResult=DBIERR_NONEthen {没有错误,操作成功}result:=trueelse{没有错误,操作失败}result:=false;end; use bde.pas先用Delete后,再用下面函数真正删除记录DbiPackTable();//自己看一下帮助 不用bde连接,而用ado连接的话,应该如何删除呢?? 我是每次打开数据库时作一次pack,勉强解决 adocommand1.CommandText:='pack ht.dbf';adocommand1.Execute; 在连接foxpro数据库的ODBC中有设置,如果让删除的记录参与操作则将会彻底删除记录。 listview问题!!! Delphi中调用SelectDirectory弹出的浏览文件夹的对话框为何总是在右下角 给Button发送消息 欧洲杯 1/4决赛 法国VS希腊,猜中200分!! 如何用adoquery执行存储过程? 一个渴望得到帮助的新人希望大家鼓励一下新手。 TADOQuery,select ,insert???? 问aa.saveas(sdir,8)8是什么意思啊? 请问.db文件是什么数据库,哪儿有下载,如何创建?在线等待!~急! 关于API函数的使用 这是DELPHI的一个BUG吗? 高分求教:天心的主介面的流程圖用甚麼東西做的?
hCursor为数据表TTable的句柄,
pszTableName为要删除记录的数据表的名称,
pszDriverType为要删除记录的数据表的类型,
bRegenIdxs表示是否在删除记录后自动更新索引文件. 在上面前四个参数中,hDb不能为NULL .hCursor、pszTableName、pszDriverType可以为NULL,但必须提供足够的信息来标识数据表的文件名称和类型,当hCursor不为空时,pszTableName 和pszDriverType可以为NULL;当pszTableName为数据表的路径和文件名时,hCursor和pszDriverType可以为NULL. 值得注意的是,在删除记录时,如 果用Table来实现,则Table必须以Exclusive=True的方式打开.下面就是一个典型的例子. 首先,应在uses语句加上:DbiTypes,DbiProcs,DbiErrs.{Pack一个DBF数据表,DbfTable包含了数据表的信息 }
functionPackDbf le(DbfTable:TTable):boolean;
var
errResult:DBIResult;
begin
ifnotDbfTable.Exclusivethen {如果不是以独占方式,操作失败}
begin
result:=false;
exit;
end;
{进行删除操作}
errResult:=DbiPackTable(DbfTable.dbHandle, DbfTable.handle,NIL,NIL,true);
{根据返回结果,返回成功与否的标志}
iferrResult=DBIERR_NONEthen {没有错误,操作成功}
result:=true
else{没有错误,操作失败}
result:=false;
end;
adocommand1.Execute;