⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 h20000424-15.htm

📁 对于学习很有帮助
💻 HTM
📖 第 1 页 / 共 2 页
字号:
<html><head><script language="JavaScript">	function reset(){   for ( var i=0; i < document.Form1.elements.length; i++ )     { document.Form1.elements[i].options[0].selected=true }}function going(url){        parent.location=url;        reset();}</script><style><!--A:link {text-decoration: none; color: #000000; font-family: 宋体}A:visited {text-decoration: none; color: #000000; font-family: 宋体}A:active {text-decoration: none; font-family: 宋体}A:hover {text-decoration: underline:#ffffff; color: #ff0000}body,table {font-size: 9pt; font-family: 宋体}.H1 {font-size: 9pt ; line-height:9pt; align=center}.ourfont {font-size: 9pt ; line-height:9pt; }.ourfont1 {font-size: 9pt ; line-height:9pt; }--></style><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><title>在Delphi 程 序 中 维 护DBF 数 据 库?</title></head><body topmargin="0" leftmargin="0"><div align="center"><center><table border="0" cellPadding="0" cellSpacing="0" width="700"><tbody>  <tr>    <td><p class="content4"><span class="font"><img border="0" height="3" src="../../soft/pix.gif" width="700"></span></td>  </tr></tbody></table></center></div><div align="center"><center><table border="0" cellPadding="0" cellSpacing="0" width="700"><tbody>  <tr>    <td bgColor="#3399ff" width="658"><p class="ourfont"><span class="font">&nbsp; </span><a style="text-decoration: none; color: rgb(255,255,255)" href="../os/H00705-2.htm">操作系统</a><font color="#FFFFFF"><span class="font"><span> |</span></span></font><a style="color: rgb(255,255,255); text-decoration: none" href="../image/H00705-14.htm">图像处理</a><font color="#FFFFFF"><span>|<span class="font"> </span></span></font><a style="color: rgb(255,255,255); text-decoration: none" href="../autoCAD/H00705-19.htm">辅助设计</a><span class="font"><font color="#FFFFFF"><span> | </span></font></span><a style="color: rgb(255,255,255); text-decoration: none" href="../data/H00705-18.htm">数     据 库</a><span class="font"><font color="#FFFFFF"><span> | </span></font></span><a style="color: rgb(255,255,255); text-decoration: none" href="H00706-1.htm">高级编程</a><span class="font"><font color="#FFFFFF"><span> | </span></font></span><a style="color: rgb(255,255,255); text-decoration: none" href="../netuse/H00705-20.htm">网络应用</a><font color="#FFFFFF"><span><span class="font"> | </span></span></font><a style="color: rgb(255,255,255); text-decoration: none" href="../webpage/H00705-21.htm">网页制作</a><font color="#FFFFFF"><span><span class="font"> |</span></span></font> <a style="color: rgb(255,255,255); text-decoration: none" href="../technic/H00706-3.htm">技术交流     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </a><a style="color: rgb(255,255,255); text-decoration: none" href="http://202.100.13.77/clslyb/default.asp?clsid=jiaoc"><font color="#FFFFFF"><strong>过客留言</strong></font></a></td>    <td bgColor="#3399ff" width="32"><p align="center" class="ourfont"><a href="mailto:net@163.sn.cn"><img src="../../soft/email.gif" alt="email.gif (493 字节)" border="0" WIDTH="20" HEIGHT="19"></a></td>  </tr></tbody></table></center></div><div align="center"><center><table border="1" cellSpacing="1" width="700" bordercolor="#3399FF"><tbody>  <tr>    <td align="left" bgColor="#FFFFFF" vAlign="top" width="700" bordercolor="#0000FF" bordercolorlight="#0000FF" bordercolordark="#0000FF"><p class="ourfont"> </p>    <p align="center">在Delphi 程 序 中 维 护DBF 数 据 库&nbsp;<br>    <br>    王 发 军&nbsp; </p>    <p><br>    <br>    ---- 由 于Delphi 开 发 的 易 用 性 和 快 速 性, 很 多 原 来 使 用Foxpro     和Visual Foxpro编 程 的 程 序 员 转 向 了Delphi . 但 由 于 工 作 上 或     其 它 的 原 因, 原 来 的 应 用 系 统 尤 其 是 应 用 数 据, 不 可     能 被 一 下 丢 弃, 因 而 需 要 用Delphi 来 维 护xBase 数 据 库 的 应     用 系 统 . 本 文 总 结 了 在 工 作 和 学 习 中 的 经 验, 与 广 大Delphi     程 序 员 和 爱 好 者 共 享 .&nbsp;<br>    ---- 在 下 面 讨 论 中, 主 要 应 用 了BDE 的 函 数 .Delphi1.0 没 有     提 供BDE 函 数 的 帮 助 文 件, 请 参 见 DelphiDoc 中 的DbiTypes.int、DbiProcs.int     和DbiErrs.int 三 个 文 件; 在Delphi3.0/4.0 中 可 参 见BDE 帮 助 文 件 .     本 文 讨 论 的DBF 数 据 库 操 作 主 要 有: 真 正 删 除 记 录、 显     示 被 删 除 记 录、 获 取 当 前 记 录 号、 设 置 查 询 匹 配 方     式、 恢 复 被 删 除 记 录 .&nbsp;<br>    一 . 真 正 删 除 记 录<br>    ---- 在Delphi 程 序 中, 用TTable 或TQuery 构 件 的 方 法Delete 执 行 删     除 记 录 的 操 作 时, 执 行 的 是 软 删 除, 即 相 当 于Foxpro 中     的&quot;Set Delete Off&quot; 的 效 果, 仅 将 记 录 用 星 号&quot;*&quot; 标     记 为 删 除, 实 际 并 没 有 数 据 库 中 进 行 物 理 上 的 删 除 .     要 进 行 真 正 的 删 除, 需 要 进 行Pack Table 的 操 作 .&nbsp;<br>    ---- 在Delphi 程 序 中 真 正 删 除 记 录, 需 要 调 用BDE 函 数, 函     数 名 为DbiPackTable,&nbsp;<br>    函 数 原 型 为:&nbsp;<br>    function DbiPackTable ( hDb : hDBIDb;hCursor :<br>    hDBICur; pszTableName : PChar;<br>    pszDriverType : PChar; bRegenIdxs : Bool ): DBIResult;<br>    ---- 其 中,hDb 为 数 据 库TDatabse 的 句 柄,hCursor 为 数 据 表TTable 的     句 柄,pszTableName 为 要 删 除 记 录 的 数 据 表 的 名 称,pszDriverType     为 要 删 除 记 录 的 数 据 表 的 类 型,bRegenIdxs 表 示 是 否 在 删     除 记 录 后 自 动 更 新 索 引 文 件 .&nbsp;<br>    ---- 在 上 面 前 四 个 参 数 中,hDb 不 能 为NULL .hCursor、pszTableName、pszDriverType     可 以 为 NULL, 但 必 须 提 供 足 够 的 信 息 来 标 识 数 据 表 的     文 件 名 称 和 类 型, 当hCursor 不 为 空 时, pszTableName 和pszDriverType     可 以 为NULL; 当pszTableName 为 数 据 表 的 路 径 和 文 件 名 时,hCursor     和pszDriverType 可 以 为NULL .&nbsp;<br>    ---- 值 得 注 意 的 是, 在 删 除 记 录 时, 如 果 用Table 来 实 现,     则Table 必 须 以Exclusive=True 的 方 式 打 开 . 下 面 就 是 一 个 典 型     的 例 子 .&nbsp;<br>    首先,应在uses语句加上DbiTypes,DbiProcs,DbiErrs.<br>    { Pack一个DBF数据表,DbfTable包含了数据表的信息 }<br>    function PackDbfTable( DbfTable : TTable ) : boolean;<br>    var<br>    errResult : DBIResult;<br>    begin<br>    if not DbfTable.Exclusive then&nbsp;<br>    {如果不是以独占方式,操作失败 }<br>    begin<br>    result := false;<br>    exit;<br>    end;<br>    {进行删除操作 }<br>    errResult := DbiPackTable( DbfTable.dbHandle,<br>    DbfTable.handle, NIL, NIL, true );<br>    <br>    {根据返回结果,返回成功与否的标志 }<br>    if errResult = DBIERR_NONE then<br>    {没有错误,操作成功 }<br>    result := true<br>    else{没有错误,操作失败 }<br>    result := false;<br>    end;<br>    二 . 显 示 或 不 显 示 被 软 删 除 记 录<br>    ---- 当DBF 数 据 库 中 的 记 录 被 软 删 除 后, 缺 省 情 况 下 在TDBGrid     等 数 据 库 构 件 中 是 看 不 见 这 些 记 录 的 . 我 们 可 以 用BDE     函 数 来 控 制 是 否 显 示DBF 数 据 库 中 被 软 删 除 的 记 录, 就     象 在Foxpro 中 利 用 语 句 Set Delete ON/OFF 那 样 .&nbsp;<br>    ----     要 用 到 的 函 数 名 为DbiSetProp, 函 数 原 型 为&nbsp;<br>    function DbiSetProp ( hObj : hDBIObj; iProp&nbsp;<br>    : Longint; iPropValue : Longint): DBIResult;<br>    ---- 该 函 数 用 来 设 置DBI 对 象 中 某 个 属 性 的 值. 其 中,hObj 为DBI     对 象 名 称, 我 们 这 里 为 数 据 表TTable 的 句 柄;iProp 为 属 性     名 称, 我 们 用 的 是 软 删 除 属 性curSOFTDELETEON;iPropValue 为 属 性     值, 我 们 用True 或False 表 示 是 否 使 软 删&nbsp;<br>    除 的 记 录 被 显 示 .&nbsp;<br>    ----     下 面 就 是 一 个 典 型 的 例 子 .&nbsp;<br>    ----     同 样, 应 在uses 语 句 加 上DbiTypes,DbiProcs,DbiErrs.&nbsp;<br>    {显示DBF数据表中的软删除记录,<br>    DbfTable包含了数据表的信息,DeleteOn&nbsp;<br>    表示是否显示,True表示显示 }<br>    function SetDbfDelete( DbfTable :&nbsp;<br>    TTable ; DeleteOn : boolean ) : boolean;<br>    var<br>    errResult : DBIResult;<br>    begin<br>    result := false; {操作失败时,返回False }<br>    <br>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -