在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中有设置,如果让删除的记录参与操作则将会彻底删除记录。 dxComponentPrinter1 打印提示 printer has encountered error?是何原因 如何把窗體顯示在最底層去? 一条SQL语句的写法 [VCL组件开发]求教一种设计构想的可行性~~~~ 跪求这个内存怎么释放 组合框问题 这个奇怪的问题不知道是不是Delphi的问题,请高手指点怎样解决。 请教关于随机数的问题 偶正在做asp,不过用文本文件写太累了,有没有好一点的集成开发工具?//牛虻 又是一个奇怪的问题?? 这是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;