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

📄 78727.htm

📁 在天极网上发布的各类delphi原码及技巧文档
💻 HTM
📖 第 1 页 / 共 2 页
字号:
<html xmlns="http://www.w3.org/TR/xhtml1/strict">   <head>      <title>天极网</title>      <meta http-equiv="Content-Type" content="text/html; charset=gb2312"></meta>      <meta http-equiv="Pragma" content="no-cache"></meta>      <meta http-equiv="expires" content="Mon,12 May 1998 00:36:05 GMT"></meta>      <link rel="stylesheet" href="/xslimages/css/cpcw.css"></link>   </head>   <style>.nava {  font-size: 9pt}.font1{font-size: 10.5pt}</style>   <body bgcolor="#FFFFFF" topmargin="2"><table width="760" border="0" cellspacing="0" cellpadding="0" align="center"><tr><td width="20%" rowspan="3" valign="top" align="center"><table width="95%" border="1" cellspacing="0" cellpadding="0" height="60" bordercolorlight="#CCCCCC" bordercolordark="#FFFFFF"><tr valign="middle" align="center"><td><div align="center"><span class="nava">天极硬件,新闻及时<br>资料详尽,敬请关注<br><a href="/33554432/35651584/yingjian.htm">www.myhard.com</a></span></div></td></tr></table></td><td width="57%" valign="bottom" rowspan="3" align="center"><div align="center"><script language="JavaScript" src="http://ad.cpcw.com/js/school.js"></script></div></td><td width="20%" valign="top" rowspan="3" align="center"><table width="95%" border="1" cellspacing="0" cellpadding="0" height="60" bordercolorlight="#CCCCCC" bordercolordark="#FFFFFF"><tr valign="middle" align="center"><td><div align="center"><span class="nava">好又多电子商务<br>让您一点动心<br><a href="http://www.hoyodo.com">www.hoyodo.com</a></span></div></td></tr></table></td></tr><tr></tr><tr></tr></table><table width="760" border="0" cellspacing="0" cellpadding="0" height="70" align="center"><tr><td width="145" valign="bottom" rowspan="3"><img src="/xslimages/content/logo.gif" width="140" height="60"></img></td><td colspan="3" width="100%" height="33" align="center"><a href="/" target="_blank">首页</a>|    <a href="/33554432/36700160/news.htm" target="_blank">新闻中心</a>|     <a href="/33554432/50331648/business.htm" target="_blank">企业中心</a>|	 <a href="/33554432/41943040/caijing.htm" target="_blank">财经中心</a>|  	 <a href="/33554432/39845888/fashion.htm" target="_blank">时尚中心</a>| 	 <a href="/33554432/35651584/yingjian.htm" target="_blank">硬件中心</a>| 	 <a href="/33554432/34603008/school.htm" target="_blank">学习中心</a>| 	 <a href="/33554432/37748736/game.htm" target="_blank">游戏中心</a>| 	 <a href="/33554432/38797312/ziyuan.htm" target="_blank">资源中心</a>| 		 <a href="http://www.hoyodo.com/" target="_blank">社区</a>| 	 <a href="http://training.yesky.com/" target="_blank">网校</a></td></tr><tr><td colspan="3" width="78%" height="20" align="right"><b>中心栏目:<a href="http://www.mydown.com" target="_blank"><font color="#FF0000"><u>红辣椒软件下载</u></font></a></b><a href="http://soft.yesky.com" target="_blank">       软件之窗 </a><a href="http://desktop.yesky.com" target="_blank">天极桌面网 </a><a href="http://art.yesky.com" target="_blank">美工教室       </a><a href="http://itdreamer.yesky.com" target="_blank">程序方舟 </a><a href="http://homepage.yesky.com" target="_blank">网页陶吧       </a><a href="http://safe.yesky.com" target="_blank">安全之路</a><a href="http://soft.yesky.com" target="_blank"></a></td></tr></table><table align="center" border="0" cellpadding="0" cellspacing="0" width="760"><tbody><tr bgcolor="#333333"><td colspan="2" height="1"></td></tr><tr><td bgcolor="#ff9900" height="16" valign="bottom" width="72%"><font color="#000000"><b><font color="#ffffff">学 习 中 心</font></b></font></td><td bgcolor="#6699cc" height="16" width="28%"><div align="center"><font face="Arial, Helvetica, sans-serif"><b><font color="#ffffff">N         E T S C H O O L</font></b></font></div></td></tr><tr bgcolor="#333333"><td colspan="2" height="1"></td></tr></tbody></table><table align="center" border="0" cellpadding="0" cellspacing="0" width="760" bgcolor="#eeeeee"><td colspan="2" height="28"><div align="center"><a href="/33554432/34603008/34635776/34636800/34636832/schoolinverse1.htm" target="_blank"><font color="#000000">HTML</font></a><font color="#000000"> _</font><a href="/33554432/34603008/34635776/34636800/34636864/schoolinverse1.htm" target="_blank"><font color="#000000">JavaScript</font></a><font color="#000000"> _</font><a href="/33554432/34603008/34635776/34636800/34636928/schoolinverse1.htm" target="_blank"><font color="#000000">CSS</font></a><font color="#000000">               _              <a href="/33554432/34603008/34635776/34637824/34637952/schoolinverse1.htm" target="_blank"><font color="#000000">                  PHP                </font></a><font color="#000000">                 _              </font></font><a href="/33554432/34603008/34635776/34637824/34637888/schoolinverse1.htm" target="_blank"><font color="#000000">ASP</font></a><font color="#000000"> _</font><a href="http://www.yesky.com/33554432/34603008/34635776/34637824/34637920/schoolinverse1.htm" target="_blank"><font color="#000000">Perl</font></a><font color="#000000"> _</font><a href="/33554432/34603008/34635776/34638848/34638880/schoolinverse1.htm" target="_blank"><font color="#000000">Dreamweaver</font></a><font color="#000000"> _</font><a href="/33554432/34603008/34635776/34639872/34639904/schoolinverse1.htm" target="_blank"><font color="#000000">XML</font></a><font color="#000000"> _</font><a href="http://www.yesky.com/33554432/34603008/34734080/schoolinverse2.htm" target="_blank"><font color="#000000">病毒</font></a><font color="#000000"> _</font><a href="http://www.yesky.com/67108864/68157440/68419584/inverse2.htm" target="_blank"><font color="#000000">程序开发</font></a><font color="#000000"> _</font><a href="http://www.yesky.com/33554432/34603008/34799616/34800640/schoolinverse1.htm" target="_blank"><font color="#000000">Email</font></a><font color="#000000"> _</font><a href="http://www.yesky.com/33554432/34603008/34897920/34898944/schoolinverse1.htm" target="_blank"><font color="#000000">Windows 9x</font></a><font color="#000000"> _</font><a href="/33554432/34603008/34897920/34900992/schoolinverse1.htm" target="_blank"><font color="#000000">Linux</font></a><font color="#000000"> _</font><a href="/33554432/34603008/34963456/34966528/schoolinverse1.htm" target="_blank"><font color="#000000">WPS</font></a><font color="#000000"> _</font><a href="http://www.yesky.com/33554432/34603008/34963456/34964480/schoolinverse1.htm" target="_blank"><font color="#000000">Word</font></a></div></td></table><table width="760" border="0" cellspacing="0" cellpadding="0" height="30" align="center"><tr><td align="left" valign="bottom"><span class="nava"><span class="nava"><a href="/index.htm">首页</a>→              <a href="/33554432/34603008/school.htm">学习中心</a>→              <a href="/33554432/34603008/34668544/schoolinverse2-pro.htm">程序方舟</a>→              <a href="/33554432/34603008/34668544/34672640/schoolinverse2.htm">技巧经验</a>→              <a href="/33554432/34603008/34668544/34672640/34672672/schoolinverse1.htm">DELPHI技巧</a>→              </span></span></td><td width="2%"></td></tr></table><table width="760" border="0" cellspacing="0" cellpadding="0" align="center"><tr><td colspan="3" valign="top" width="75%"><table width="98%" border="0" cellspacing="1" cellpadding="1" bgcolor="#000000"><tr bgcolor="#FFFFFF"><td width="100%" colspan="4" align="left"><table width="95%" align="center"><tr><td class="font1"><p align="center"><br><font size="3">在Delphi程序中维护DBF数据库</font><br><span class="nava"><font color="#CC9933">2000-06-11·						  -·中国计算机世界出版服务公司</font></span></p><p></p> <p>  由于Delphi开发的易用性和快速 性,很多原来使用Foxpro和VisualFoxpro编程的程序员转向了Delphi.但由于工作上或其它的原因,原来的应用系统尤其是应用数据,不可能被 一下丢弃,因而需要用Delphi来维护xBase数据库的应用系统.本文总结了在工作和学习中的经验,与广大Delphi程序员和爱好者共享.</p> <p>  在下面讨论中,主要应用了BDE的 函数.Delphi1.0没有提供BDE函数的帮助文件,请参见Delphi\Doc中的DbiTypes.int、DbiProcs.int和DbiErrs.int三个文件;在Delphi3.0/4.0中可参见BDE帮助文件.本文 讨论的DBF数据库操作主要有:真正删除记录、显示被删除记录、获取当前记录号、设置查询匹配方式、恢复被删除记录.</p> <p><strong><strong>一.真正删除记录</strong><br> </strong>  在Delphi程序中,用TTable 或TQuery构件的方法Delete执行删除记录的操作时执行的是软删除,即相当于Foxpro中的SetDeleteOff的效果,仅将记录用星号*标记为删除, 实际并没有数据库中进行物理上的删除.要进行真正的删除,需要进行Pack Table的操作.</p> <p>  在Delphi程序中真正删除记录, 需要调用BDE函数,函数名为DbiPackTable,函数原型为:</p> <blockquote>  <blockquote>  <p> functionDbiPackTable(hDb:hDBIDb;hCursor :hDBICur;pszTableName:PChar;pszDriverType:PChar;bRegenIdxs  :Bool):DBIResult;</p> </blockquote> </blockquote> <p>其中:hDb为数据库TDatabse的句柄,<br>    hCursor为数据表TTable的句柄,<br>    pszTableName为要删除记录的数据表的名称,<br>    pszDriverType为要删除记录的数据表的类型,<br>    bRegenIdxs表示是否在删除记录后自动更新索引文件.</p> <p>  在上面前四个参数中,hDb不能为NULL .hCursor、pszTableName、pszDriverType可以为NULL,但必须提供足够的信息来标识数据表的文件名称和类型,当hCursor不为空时,pszTableName 和pszDriverType可以为NULL;当pszTableName为数据表的路径和文件名时,hCursor和pszDriverType可以为NULL.</p> <p>  值得注意的是,在删除记录时,如 果用Table来实现,则Table必须以Exclusive=True的方式打开.下面就是一个典型的例子.<br> <br>   首先,应在uses语句加上:</p> <blockquote>  <blockquote>  <p>DbiTypes,DbiProcs,DbiErrs.{Pack一个DBF数据表,DbfTable包含了数据表的信息  }<br> functionPackDbfTable(DbfTable:TTable):boolean;<br> var<br> errResult:DBIResult;<br> begin<br> ifnotDbfTable.Exclusivethen {如果不是以独占方式,操作失败}<br> begin<br> result:=false;<br> exit;<br> end;<br> {进行删除操作}<br> errResult:=DbiPackTable(DbfTable.dbHandle, DbfTable.handle,NIL,NIL,true);  <br> {根据返回结果,返回成功与否的标志}<br> iferrResult=DBIERR_NONEthen {没有错误,操作成功}<br> result:=true<br> else{没有错误,操作失败}<br> result:=false;<br> end;</p> </blockquote> </blockquote> <p><strong>二.显示或不显示被软删除记录<br> </strong>  当DBF数据库中 的记录被软删除后,缺省情况下在TDBGrid等数据库构件中是看不见这些 记录的.我们可以用BDE函数来控制是否显示DBF数据库中被软删除的记录,就象在Foxpro中利用语句SetDeleteON/OFF那样.</p> <p>  要用到的函数名为DbiSetProp,函数原型为:</p> <blockquote>  <blockquote>  <p> functionDbiSetProp(hObj :hDBIObj;iProp:Longint;iPropValue:Longint):DBIResult;</p> </blockquote> </blockquote> <p>  该函数用来设置DBI对象中某个 属性的值.<br> 其中:hObj为DBI对象名称,我 们这里为数据表TTable的句柄;<br>    iProp为属性名称,我们用的是软删除属性curSOFTDELETEON;<br>    iPropValue为属性值,我们用True或False表示是否使软删除的记录被显示.</p> <p>  下面就是一个典型的例子.同样,应在uses语句加上</p> <blockquote>  <blockquote>  <p>DbiTypes,DbiProcs,DbiErrs. <br> {显示DBF数据表中的软删除记录,DbfTable包含了数据表的信息,DeleteOn表示是否显示,True表示显示}<br> functionSetDbfDelete(DbfTable:TTable;DeleteOn:boolean ):boolean;<br> var<br> errResult:DBIResult;<br> begin<br> result:=false;{操作失败时,返回False} <br> {如果数据表没有打开,则操作失败}<br> if(notDbfTable.active)then<br> exit; <br> {进行设置显示操作}<br> errResult:=DbiSetProp(hDBIObj(DbfTable.Handle), curSOFTDELETEON,LongInt(DeleteOn));<br> iferrResult=DBIERR_NONEthen{没有错误,则操作成功 }<br> begin<br> result:=true;<br> DbfTable.refresh;<br> end;<br> end;</p> </blockquote> </blockquote> <p><strong>三.获取当前记录号<br> </strong>  在用Foxpro 时,RecNo()函数用惯了,在Delphi程序没有这样的函数觉得别扭.下面我 们可以用BDE函数获取当前记录在数据集中的记录号.<br> <br>   要用到的函数名为DbiGetRecord,函数原型为:</p> <blockquote>  <blockquote>  <p><br> functionDbiGetRecord(hCursor :hDBICur;eLock:DBILockType;pRecBuff:Pointer;precProps:  pRECProps):DBIResult;</p> </blockquote> </blockquote> <p>  该函数用来取得当前记录的一些属性.</p> <p>其中:hCursor可为数据集的Handle,<br>    eLock为对记录加锁的类型,<br>    pRecBuff存放记录的缓冲区,<br>    precProps为记录属性集.</p> <p>  下面就是一个典型的例子.同样,应在uses语句加上:</p> <blockquote>  <blockquote>  <p>DbiTypes,DbiProcs,DbiErrs. <br>

⌨️ 快捷键说明

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