网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > DELPHI > 正文
BDE函数对DBF数据库的的几个常用操作
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/12
下载{$ArticleTitle}原创论文样式

在下面讨论中, 主要应用了BDE的函数.
Delphi 1.0 没有提供 BDE 函数的帮助文件, 请参见
DelphiDoc 中的 DbiTypes.int、 DbiProcs.int 和
DbiErrs.int 三个文件; 在Delphi 3.0/4.0 中可参
见 BDE 帮助文件. 本文讨论的 DBF 数据库操作主要
有: 真正删除记录、显示被删 除记录、 获取当前记
录号、 设置查询匹配方式、 恢复被删除记录.

一.真正删除记录

    在 Delphi 程序中, 用 TTable 或 TQuery 构件
的方法 Delete 执行删除记录的操作时, 执行的是软
删除, 即相当于 Foxpro 中的 "SetDeleteOff" 的效
果, 仅 将记录用星号 "*" 标记为删除, 实际并没有
数据 库中进行物理上的删除. 要进行真正的删除,
需要进行 PackTable 的操作.

    在 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;
varerrResult: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;

二.显示或不显示被软删除记录

    当 DBF 数据库中的记录被软删除后, 缺省情况
下在 TDBGrid 等数据库构件中是看不见这些记录的.
我们可以用 BDE 函数来控制是否显示 DBF 数据库
中被软删除的记录, 就象在 Foxpro 中利用语句 Set
DeleteON/OFF 那样.

    要用到的函数名为 DbiSetProp, 函数原型为

function DbiSe

网学推荐

免费论文

原创论文

浏览:
设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
湘ICP备09003080号