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