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

📄 h20000424-15.htm

📁 对于学习很有帮助
💻 HTM
📖 第 1 页 / 共 2 页
字号:
    {如果数据表没有打开,则操作失败 }<br>    if ( not DbfTable.active ) then exit;<br>    <br>    {进行设置显示操作 }<br>    errResult := DbiSetProp( hDBIObj(DbfTable.Handle),&nbsp;<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,     函 数 原 型 为&nbsp;<br>    function DbiGetRecord (hCursor : hDBICur;&nbsp;<br>    eLock : DBILockType; pRecBuff : Pointer;<br>    precProps : pRECProps ): DBIResult;<br>    ---- 该 函 数 用 来 取 得 当 前 记 录 的 一 些 属 性 . 其 中,hCursor     可 为 数 据 集 的Handle,eLock 为 对 记 录 加 锁 的 类 型,pRecBuff 存     放 记 录 的 缓 冲 区, precProps 为 记 录 属 性 集 .&nbsp;<br>    ----     下 面 就 是 一 个 典 型 的 例 子 .   <br>    同样,应在uses语句加上 DbiTypes,DbiProcs,DbiErrs. {取得当前记录的记录号     }&nbsp;<br>    function RecNo( ADbfTable : TTable ) : LongInt;var RecordProps: RecProps;&nbsp;<br>    begin Result := 0; {返回0表示函数执行失败 } with ADbfTable do begin {如果数据集处于非活<br>    动状态,则执行失败 } if not active then exit; {使数据集的当前记录与实际     的当前记录的位置<br>    一致 } UpdateCursorPos; {取得当前记录的属性, 主要是记录的位置 }&nbsp;<br>    if DBIERR_NONE &lt; &gt; DbiGetRecord (Handle, dbiNOLOCK, nil, @RecordProps) then exit;<br>    {发生错误,则操作失败 } Result := RecordProps.iPhyRecNum; {取得记录号 } end;     end;&nbsp;<br>    四 . 设 置 查 询 匹 配 方 式( 精 确 匹 配/ 非 精 确 匹 配)<br>    ---- 在 用Foxpro 时,Set Exact ON/OFF 对 数 据 查 询 影 响 很 大 . 在Delphi     中, 我 们&nbsp;<br>    同 样 可 以 进 行 这 样 的 设 置 .&nbsp;<br>    ----     要 用 到 的 函 数 名 为DbiSetProp, 这 次 用 的 属 性 名 称iProp     为curINEXACTON,&nbsp;<br>    属 性 值iPropValue 为 True 或False,True 表 示Set Exact OFF .&nbsp;<br>    ----     下 面 就 是 一 个 典 型 的 例 子 .&nbsp;<br>    同样,应在uses语句加上DbiTypes,DbiProcs,DbiErrs.<br>    <br>    {设置匹配方式,DbfTable&nbsp;<br>    包含了数据表的信息,ExactOn&nbsp;<br>    表示是否精确匹配,True表示是 }<br>    function SetDbfExact( DbfTable :&nbsp;<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 数 据 表 执 行 的 删 除 操 作 为     软 删 除 操 作 . 由 于 物 理 记 录 并 没 有 从 数 据 表 中 删 除,     我 们 就 可 以 恢 复 被 软 删 除 的 记 录, 只 要 去 掉 删 除 标 志     即 可 .&nbsp;<br>    ----     要 用 到 的 函 数 名 为DbiUndeleteRecord, 函 数 原 型 为:&nbsp;<br>    function DbiUndeleteRecord&nbsp;<br>    ( hCursor : hDBICur ): DBIResult;<br>    ---- 其 中,hCursor 可 为 数 据 集 的Handle .&nbsp;<br>    ----     下 面 就 是 一 个 典 型 的 例 子 .&nbsp;<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 &lt; &gt; DbiUndeleteRecord( Handle ) then<br>    exit;{发生错误,操作失败 }<br>    <br>    result := true; {操作成功 }<br>    end;<br>    end;<br>    ---- 上 面 是Delphi 操 作DBF 数 据 表 的 几 个 常 见 例 子, 希 望Delphi     会 给Delphi 程 序 员 带 来 越 来 越 多 的 方 便, 不 会 让Delphi 程 序     员 感 到 约 束 .&nbsp;<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">&nbsp; <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>&nbsp; </span></span></p><hr align="center" SIZE="1" width="700"><font color="#FFE8BB"><p align="center" class="ourfont"></font><font color="#000000"><span><span>&copy;&nbsp;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 + -