uses
BDE
//データベース最適化
var
Props: CURProps;
hDb: hDBIDb;
TableDesc: CRTblDesc;
begin
//テーブルの再構築(パック)
Table1.Close;
try
Table1.Exclusive := True;
Table1.Open;
//テーブルのカーソルハンドルの取得
DbiGetCursorProps(Table1.Handle, Props);
//構造体を空白にする
FillChar(TableDesc, sizeof(TableDesc), 0);
//テーブルのカーソルハンドルからデータベースハンドルを取得
DbiGetObjFromObj(hDBIObj(Table1.Handle), objDATABASE, hDBIObj(hDb));
//テーブルディスクプリタにテーブル名を格納
StrPCopy(TableDesc.szTblName, Table1.TableName);
//テーブルディスクプリタにテーブルの形式を格納
StrPCopy(TableDesc.szTblType, Props.szTableType);
//テーブルディスクプリタのPackオプションをTRUEに設定
TableDesc.bPack := True;
//テーブルをクローズし再構築を終了
Table1.Close;
//DbiDoRestructure関数の呼び出し
DbiDoRestructure(hDb, 1, @TableDesc, nil, nil, nil, False);
Table1.Exclusive := False;
Table1.Open;
except
on EDatabaseError do
MessageDlg('データベースを使っている人がいます!!' + #13#10 +
'そのため再構築できません。' + #13#10 +
'誰も使用中で無い時に再度、再構築して下さい。',mtError,[mbOK],0);
end;
end;
|