📄 h20000424-15.htm
字号:
{如果数据表没有打开,则操作失败 }<br> if ( not DbfTable.active ) then exit;<br> <br> {进行设置显示操作 }<br> errResult := DbiSetProp( hDBIObj(DbfTable.Handle), <br> curSOFTDELETEON,<br> LongInt( DeleteOn ));<br> if errResult = DBIERR_NONE then<br> {没有错误,则操作成功 }<br> begin<br> result := true;<br> DbfTable.refresh;<br> end;<br> end;<br> 三 . 获 取 当 前 记 录 号<br> ---- 在 用Foxpro 时,RecNo() 函 数 用 惯 了, 在Delphi 程 序 没 有 这 样 的 函 数 觉 得 别 扭 . 下 面 我 们 可 以 用BDE 函 数 获 取 当 前 记 录 在 数 据 集 中 的 记 录 号 . ---- 要 用 到 的 函 数 名 为DbiGetRecord, 函 数 原 型 为 <br> function DbiGetRecord (hCursor : hDBICur; <br> eLock : DBILockType; pRecBuff : Pointer;<br> precProps : pRECProps ): DBIResult;<br> ---- 该 函 数 用 来 取 得 当 前 记 录 的 一 些 属 性 . 其 中,hCursor 可 为 数 据 集 的Handle,eLock 为 对 记 录 加 锁 的 类 型,pRecBuff 存 放 记 录 的 缓 冲 区, precProps 为 记 录 属 性 集 . <br> ---- 下 面 就 是 一 个 典 型 的 例 子 . <br> 同样,应在uses语句加上 DbiTypes,DbiProcs,DbiErrs. {取得当前记录的记录号 } <br> function RecNo( ADbfTable : TTable ) : LongInt;var RecordProps: RecProps; <br> begin Result := 0; {返回0表示函数执行失败 } with ADbfTable do begin {如果数据集处于非活<br> 动状态,则执行失败 } if not active then exit; {使数据集的当前记录与实际 的当前记录的位置<br> 一致 } UpdateCursorPos; {取得当前记录的属性, 主要是记录的位置 } <br> if DBIERR_NONE < > DbiGetRecord (Handle, dbiNOLOCK, nil, @RecordProps) then exit;<br> {发生错误,则操作失败 } Result := RecordProps.iPhyRecNum; {取得记录号 } end; end; <br> 四 . 设 置 查 询 匹 配 方 式( 精 确 匹 配/ 非 精 确 匹 配)<br> ---- 在 用Foxpro 时,Set Exact ON/OFF 对 数 据 查 询 影 响 很 大 . 在Delphi 中, 我 们 <br> 同 样 可 以 进 行 这 样 的 设 置 . <br> ---- 要 用 到 的 函 数 名 为DbiSetProp, 这 次 用 的 属 性 名 称iProp 为curINEXACTON, <br> 属 性 值iPropValue 为 True 或False,True 表 示Set Exact OFF . <br> ---- 下 面 就 是 一 个 典 型 的 例 子 . <br> 同样,应在uses语句加上DbiTypes,DbiProcs,DbiErrs.<br> <br> {设置匹配方式,DbfTable <br> 包含了数据表的信息,ExactOn <br> 表示是否精确匹配,True表示是 }<br> function SetDbfExact( DbfTable : <br> TTable ; ExactOn : boolean ) : boolean;<br> var<br> errResult : DBIResult;<br> begin<br> {如果没有打开,则操作失败 }<br> if ( not DbfTable.active ) then<br> begin<br> result := false;<br> exit;<br> end;<br> <br> {进行设置显示操作 }<br> errResult := DbiSetProp( hDBIObj(DbfTable.Handle),<br> curINEXACTON,<br> LongInt( not ExactOn ));<br> <br> if errResult = DBIERR_NONE then<br> {没有错误,操作成功 }<br> result := true<br> else{发生错误,操作失败 }<br> result := false;<br> end;<br> 五 . 恢 复 被 软 删 除 的 记 录<br> ---- 在Delphi 应 用 程 序 中, 对DBF 数 据 表 执 行 的 删 除 操 作 为 软 删 除 操 作 . 由 于 物 理 记 录 并 没 有 从 数 据 表 中 删 除, 我 们 就 可 以 恢 复 被 软 删 除 的 记 录, 只 要 去 掉 删 除 标 志 即 可 . <br> ---- 要 用 到 的 函 数 名 为DbiUndeleteRecord, 函 数 原 型 为: <br> function DbiUndeleteRecord <br> ( hCursor : hDBICur ): DBIResult;<br> ---- 其 中,hCursor 可 为 数 据 集 的Handle . <br> ---- 下 面 就 是 一 个 典 型 的 例 子 . <br> 同样,应在uses语句加上DbiTypes,DbiProcs,DbiErrs.<br> <br> {恢复被软删除的记录 }<br> function UndeleteRecord<br> ( DbfTable : TTable ) : boolean;<br> begin<br> Result := false;<br> {返回false表示函数执行失败 }<br> <br> with DbfTable do<br> begin<br> {如果数据集处于非<br> 活动状态,则执行失败 }<br> if not active then exit;<br> <br> {使数据集的当前记录与<br> 实际的当前记录的位置一致 }<br> UpdateCursorPos;<br> <br> {恢复被软删除的记录 }<br> if DBIERR_NONE < > DbiUndeleteRecord( Handle ) then<br> exit;{发生错误,操作失败 }<br> <br> result := true; {操作成功 }<br> end;<br> end;<br> ---- 上 面 是Delphi 操 作DBF 数 据 表 的 几 个 常 见 例 子, 希 望Delphi 会 给Delphi 程 序 员 带 来 越 来 越 多 的 方 便, 不 会 让Delphi 程 序 员 感 到 约 束 . <br> ---- 以 上 程 序 在PWin98+Delphi3.0 下 调 试 通 过 . </td> </tr></tbody></table></center></div><hr align="center" SIZE="1" width="700"><p align="center" class="ourfont"><span><span><font color="#000000"> <a style="color: rgb(0,0,0); text-decoration: none" href="../../soft/network/index.htm">互联网络</font><font color="#FFFFFF"> </font></a><font color="#000000">|</span></span><a href="../../soft/system/index.htm" style="color: rgb(0,0,0); text-decoration: none">系统工具</a><span>|<span> <a href="../../soft/tools/index.htm" style="color: rgb(0,0,0); text-decoration: none">实用工具</a> | <a href="../../soft/multimedia/index.htm" style="color: rgb(0,0,0); text-decoration: none">媒体工具</a> | <a href="../../soft/image/index.htm" style="color: rgb(0,0,0); text-decoration: none">图形图像</a> | <a href="../../soft/game/index.htm" style="color: rgb(0,0,0); text-decoration: none">游戏娱乐</a> | </span><a href="../../soft/usesoft/index.htm" style="color: rgb(0,0,0); text-decoration: none">软件<span>使用</a></font><font color="#FFFFFF"> |</font> </span></span></p><hr align="center" SIZE="1" width="700"><font color="#FFE8BB"><p align="center" class="ourfont"></font><font color="#000000"><span><span>© Copyright 2000 </span></span>陕西公用计算机互联网信息中心<span><span> 版权所有 </font></p></span></span><p align="center" class="ourfont"><font color="#000000"><span><span>本站制作维护by <a style="color: rgb(0,0,0)" href="mailto:haiyuan@163.sn.cn">HAIYUAN</a></span></span></font></p><p align="center" class="ourfont"><font color="#000000"><span><span>电话:(029)8371051 8371055 8371049 联系信箱:<a href="mailto:net@163.sn.cn">net@163.sn.cn</a></span></span></font></p></body></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -