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

📄 00000001.htm

📁 水木清华关于C++Builder程序的代码
💻 HTM
字号:
<HTML><HEAD>  <TITLE>BBS水木清华站∶精华区</TITLE></HEAD><BODY><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER>发信人:&nbsp;zodiac&nbsp;(zozo),&nbsp;信区:&nbsp;BCB&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>标&nbsp;&nbsp;题:&nbsp;如何给Table减肥.Re:725自问自答&nbsp;<BR>发信站:&nbsp;BBS&nbsp;水木清华站&nbsp;(Fri&nbsp;Mar&nbsp;&nbsp;5&nbsp;13:52:00&nbsp;1999)&nbsp;<BR>&nbsp;<BR>用BCB进行多媒体数据库开发时常会发现这样一个现象,当你把一条记录从表中删除时,表的大小并没有相应减小。这样在进行多次插入删除之后,表文件就会越来越庞大。之所以会有这种现象,是因为TTable控件的&nbsp;<BR>Delete&nbsp;&nbsp;<BR>Method并不真正从表中删除记录,而只是在记录前加上一个删除标志。在DBase和Foxpro中有Pack语句对表进行压缩,但在TTable类中却没有相应的函数。其实在BDE的API函数中已经提供了DbiPackTable来对DBase或Foxpro表进行压缩,但是这个函数对Paradox的表不起作用。要想给Paradox&nbsp;<BR>表减肥得用DbiDoRestructure函数来完成,以下例程完成Pack&nbsp;Paradox表的功能。&nbsp;<BR>&nbsp;<BR>//This&nbsp;function&nbsp;Pack&nbsp;the&nbsp;Paradox&nbsp;table.&nbsp;write&nbsp;by&nbsp;zodiac&nbsp;<BR>void&nbsp;__fastcall&nbsp;TForm1::PackParadoxTable(hDBIDb&nbsp;hDB,&nbsp;AnsiString&nbsp;TblName)&nbsp;<BR>{&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;//Paradox&nbsp;table&nbsp;use&nbsp;a&nbsp;quite&nbsp;different&nbsp;way&nbsp;to&nbsp;be&nbsp;packed&nbsp;than&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;//DBase&nbsp;or&nbsp;Foxpro&nbsp;table,&nbsp;it&nbsp;use&nbsp;the&nbsp;DBiDoRestructure&nbsp;not&nbsp;the&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;DBiPackTable&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;DBIResult&nbsp;rslt;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;CRTblDesc&nbsp;TblDesc;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;//filled&nbsp;the&nbsp;structure&nbsp;CRTbiDesc&nbsp;with&nbsp;0&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;memset((void&nbsp;*)&amp;TblDesc,0,sizeof(CRTblDesc));&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;//copy&nbsp;the&nbsp;table&nbsp;name&nbsp;and&nbsp;type&nbsp;to&nbsp;the&nbsp;structure&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;lstrcpy(TblDesc.szTblName,TblName.c_str());&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;lstrcpy(TblDesc.szTblType,szPARADOX);&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;//set&nbsp;bPack&nbsp;to&nbsp;true&nbsp;to&nbsp;specify&nbsp;Pack&nbsp;Function&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;TblDesc.bPack=true;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;//Pack&nbsp;the&nbsp;table&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;rslt=DbiDoRestructure(hDB,1,&amp;TblDesc,NULL,NULL,NULL,false);&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;if(rslt!=DBIERR_NONE)&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Application-&gt;MessageBox(&quot;不能压缩表&quot;,&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;压缩数据表出错&quot;,MB_ICONERROR);&nbsp;<BR>}&nbsp;<BR>注意,在Restructure之前,表必须处于关闭状态。以下例程调用PackParadoxTable.&nbsp;<BR>&nbsp;<BR>void&nbsp;__fastcall&nbsp;TForm1::PackTable(AnsiString&nbsp;table_name)&nbsp;<BR>{&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;//Pack&nbsp;the&nbsp;table&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;TTable&nbsp;*temp_table=new&nbsp;TTable(Form1);&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;temp_table-&gt;DatabaseName=&quot;YourDatabaseAlias&quot;;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;temp_table-&gt;TableName=table_name;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;temp_table-&gt;Exclusive=true;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;temp_table-&gt;Open();&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;//get&nbsp;the&nbsp;Database&nbsp;Handle&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;hDBIDb&nbsp;hDB=temp_table-&gt;DBHandle;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;temp_table-&gt;Close();&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;PackParadoxTable(hDB,table_name);&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;temp_table-&gt;Close();&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;temp_table-&gt;Free();&nbsp;<BR>}&nbsp;<BR>&nbsp;<BR>&nbsp;<BR>对Foxpro和DBase的Pack参见BDE&nbsp;API&nbsp;Help的DbiPackTable函数说明。&nbsp;&nbsp;<BR>--&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;oooO&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;(&nbsp;&nbsp;&nbsp;)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Oooo&nbsp;<BR>&nbsp;&nbsp;\&nbsp;(&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(&nbsp;&nbsp;&nbsp;)&nbsp;<BR>&nbsp;&nbsp;&nbsp;\_)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)&nbsp;/&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(_/&nbsp;&nbsp;&nbsp;&nbsp;Success&nbsp;is&nbsp;a&nbsp;journey,&nbsp;not&nbsp;a&nbsp;goal...&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;<BR>※&nbsp;来源:·BBS&nbsp;水木清华站&nbsp;bbs.net.tsinghua.edu.cn·[FROM:&nbsp;green.ncic.ac.c]&nbsp;<BR><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER></BODY></HTML>

⌨️ 快捷键说明

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