DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: webb123
今日帖子: 1
在线用户: 8
导航: 论坛 -> DELPHI技术 斑竹:liumazi,sephil  
作者:
男 hanwlh (sunny) ★☆☆☆☆ -
普通会员
2003/4/25 18:18:31
标题:
如何在delphi中真正删除dbf数据库中的记录? 浏览:3734
加入我的收藏
楼主: 我在网站http://www.delphiboy.com/cgi-bin/doc/datacontent.php?no=155上看到有一篇“为Delphi提供Pack和Undelete功能”的文章,别的网站也有类似的介绍,可是依据以下的两种写法的代码还是不能做到“delphi中真正删除dbf数据库中的记录”,原因可能是我以下的疑惑的第3点,在此我想请教一下,非常感谢!
   问题:用delphi6删除dbf数据库中软删除记录把未被的软删除记录备份到SQL数据库!(在delphi中用delete 命令删除dbf数据库的记录时,仅 将 记 录 用 星 号"*" 标 记 为 删 除, 实 际 并 没 有从数 据 库 中 进 行 物 理 上 的 删 除,也就是说记录还在。)
   环境:win2000、delphi6、foxpro数据库(*.dbf)和SQL2000数据库(字段完全一样)
    操作如下:我在delphi用了一个Table(databasename为ODBC的数据库(dbase),tablename为foxpro数据库名(dbf)),用query还是查到所有数据!
代码1(网站上提供):
function PackDbfTable( DbfTable : TTable ) : boolean;
var
errResult : DBIResult;
begin
if not DbfTable.Exclusive then {如果不是以独占方式,操作失败 }
begin
result := false;
exit;
end;
{进行删除操作 }
errResult := DbiPackTable( DbfTable.dbHandle, DbfTable.handle, NIL, NIL, true );

{根据返回结果,返回成功与否的标志 }
if errResult = DBIERR_NONE then {没有错误,操作成功 }
result := true
else{没有错误,操作失败 }
result := false;
end;
代码2(您在网站公布的代码):
procedure PackTable(Table: TTable);
var
Props: CURProps;
hDb: hDBIDb;
begin
if not Table.Active then
raise EDatabaseError.Create(’Table必需已经打开’);
if not Table.Exclusive then
raise EDatabaseError.Create(’Table必需以独占方式打开’);
Check(DbiGetCursorProps(Table.Handle, Props));
if (Props.szTableType = szDBASE) then
Check(DbiPackTable(Table.DBHandle, Table.Handle, nil, szDBASE, True))
else
raise EDatabaseError.Create(’Table必需是dBASE或FoxPro类型’);
Table.Open;
end;
  疑惑:
   1、如果Table.Active、Table.Exclusive同时为true 无法执行
   2、还是无法真正删除dbf数据库的软删除记录(可能是由于以下第3点的原因造成,如何才正确呢?),
   3、(代码2)我跟踪显示到Props.szTableType 为“Driver do Microsoft dBase(*.db”,szDBASE为“DBASE”;、(代码1)我跟踪显示到errResult为9990,DBIERR_NONE 为0

   不知何故?“delphi中真正删除dbf数据库中的记录”的代码怎么写?使用什么控件?如何设置?请回复到:hanwlh@sohu.com或hanwlh@21cn.com

万分感谢!

sunny wei
2003.04.25
----------------------------------------------
-
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行96.67969毫秒 RSS