如何使用SQL删除DBF表中的记录,注意是真正的删除,而不是DELETE 如题!!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 pick.....这是在vf中在delphi 中好像有个3方控件。。我查查 在delphibbss 中找到的真正删除记录---- 在Delphi 程序中,用TTable 或TQuery 构件的方法Delete执行删除记录的操作时执行的是软删除, 即 相 当 于Foxpro 中 的"Set Delete Off" 的 效 果, 仅 将 记 录 用 星 号"*" 标 记 为 删 除, 实 际 并 没 有 数 据 库 中 进 行 物 理 上 的 删 除 . 要 进 行 真 正 的 删 除, 需 要 进 行Pack Table 的 操 作 . ---- 在Delphi 程 序 中 真 正 删 除 记 录, 需 要 调 用BDE 函 数, 函 数 名 为DbiPackTable, 函 数 原 型 为: function DbiPackTable ( 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包含了数据表的信息 }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; 如用ADO的话adocommand1.CommandText:='pack ht.dbf';adocommand1.Execute; zip问题(选择用VCLZIP,ZIPTV都不满意 怎样实现查询出字段的合并?这几天也为查询报表困扰? 如何在delphi中执行sql的osql脚本?在线等待~~~~~ 如何设置默认打印机???高手进 指针与数组的问题 如何像安装程序一样在最后打开一个readme文件 我會powerbuilder,能否介紹一本好的delphi入門的電子讀物。謝謝 进程与线程之间的协调? 送分 如何创建用户名称及密码登录窗口 如何在delphi源程序中操作sql数据库 请大家讨论一下到底哪种报表控件好呢?
在delphi 中好像有个3方控件。。我查查
真正删除记录
---- 在Delphi 程序中,用TTable 或TQuery 构件的方法Delete执行删除记录的操作时执行的是软删除, 即 相 当 于Foxpro 中 的"Set Delete Off" 的 效 果, 仅 将 记 录 用 星 号"*" 标 记 为 删 除, 实 际 并 没 有 数 据 库 中 进 行 物 理 上 的 删 除 . 要 进 行 真 正 的 删 除, 需 要 进 行Pack Table 的 操 作 . ---- 在Delphi 程 序 中 真 正 删 除 记 录, 需 要 调 用BDE 函 数, 函 数 名 为DbiPackTable, 函 数 原 型 为:
function DbiPackTable ( 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包含了数据表的信息 }
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;
adocommand1.CommandText:='pack ht.dbf';
adocommand1.Execute;