免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2975 | 回复: 1
打印 上一主题 下一主题

Delphi 编程去掉dbf的删除标记 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-09-01 22:03 |只看该作者 |倒序浏览
数据库为dbf文件,
数据记录被逻辑删除,做上del标记。
SQL2000访问不了带有删除标记的记录。
请问我该如何操作才能访问带有删除标记的记录,
delphi中用ADO操作。

论坛徽章:
0
2 [报告]
发表于 2009-09-02 13:02 |只看该作者

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

----   当DBF   数   据   库   中   的   记   录   被   软   删   除   后,   缺   省   情   况   下   在TDBGrid   等   数   据   库   构   件   中   是   看   不   见   这   些   记   录   的   .   我   们   可   以   用BDE   函   数   来   控   制   是   否   显   示DBF   数   据   库   中   被   软   删   除   的   记   录,   就   象   在Foxpro   中   利   用   语   句   Set   Delete   ON/OFF   那   样   .     
   
          要   用   到   的   函   数   名   为DbiSetProp,   函   数   原   型   为     
                function   DbiSetProp   (   hObj   :   hDBIObj;   iProp   :   Longint;   iPropValue   :   Longint):   DBIResult;   
   
  ----   该   函   数   用   来   设   置DBI   对   象   中   某   个   属   性   的   值.   
                其   中,hObj   为DBI   对   象   名   称,   我   们   这   里   为   数   据   表TTable   的   句   柄;   
                                      iProp   为   属   性   名   称,   我   们   用   的   是   软   删   除   属   性curSOFTDELETEON;   
                                      iPropValue   为   属   性   值,   我   们   用True   或False   表   示   是   否   使   软   删   除   的   记   录   被   显   示   .     
   
          下   面   就   是   一   个   典   型   的   例   子   .     
      同   样,   应   在uses   语   句   加   上DbiTypes,DbiProcs,DbiErrs.     
   
  {显示DBF数据表中的软删除记录,DbfTable包含了数据表的信息,DeleteOn   表示是否显示,True表示显示   }   
  function   SetDbfDelete(   DbfTable   :   TTable   ;   DeleteOn   :   boolean   )   :   boolean;   
  var   
        errResult   :   DBIResult;   
  begin   
            result   :=   false;   {操作失败时,返回False   }   
   
            {如果数据表没有打开,则操作失败   }   
            if   (   not   DbfTable.active   )   then     
                    exit;   
   
            {进行设置显示操作   }   
            errResult   :=   DbiSetProp(   hDBIObj(DbfTable.Handle),   curSOFTDELETEON,LongInt(   DeleteOn   ));   
            if   errResult   =   DBIERR_NONE   then   {没有错误,则操作成功   }   
            begin   
                            result   :=   true;   
                            DbfTable.refresh;   
              end;   
  end;
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP