TDBISAMTableによるテーブルの作成
TDBISAMTableには、BDEのTTableと互換のメソッドでテーブルを定義し、作成する機能が用意されています。DBISAM
Ver.1の時代には、TDBISAMQueryはSELECT文のみしか使えず、その他のデータ操作にはBDE互換ルーチンを利用する必要がありましたが、その後のSQLエンジンの機能強化によって、UPDATE/INSERTはもちろん、CREATE
TABLE/DROP TABLE/ALTER
TABLEがサポートされるようになっているため、今となってはこの機能を積極的に使う必要はあまりないでしょう。
DBSYSユーティティのメニューから「Utilities」「Reverse
Engineer」を選び、出力フォーマットをDelphi 5 or 6 (Object Pascal)
とすることで、コードを生成することができます。興味のある方は一度見てみるのもよいでしょう。例えば、以下のようなコードが生成されます。
FieldDefs~CreateTableの部分がテーブルを新規作成するためのコードです。RestructureFieldDefs~RestructureTableの部分は、ALTER
TABLEに相当する部分で、新規作成時には不要な部分です。
※コードを書くときは★は抜いて下さい
procedure CreateTables(CreateDatabaseName: string); var TableToCreate: TDBISAMTable; begin TableToCreate:=TDBISAMTable.Create(Application); try with TableToCreate do begin DatabaseName:=CreateDatabaseName; TableName:='product'; Exclusive:=True; with FieldDefs do begin Clear; Add(★ProdId,ftInteger,0,True); Add(★Name,ftString,60,True); Add(★UnitPrice,ftInteger,0,True); Add(★Memo,ftMemo,0,False); end; with IndexDefs do begin Clear; Add('',★ProdId,[ixPrimary,ixUnique]); end; if not Exists then begin CreateTable; with RestructureFieldDefs do begin Clear; Add(★ProdId,ftInteger,0,True,'','','','',fcNoChange,1); Add(★Name,ftString,60,True,'','','','',fcNoChange,2); Add(★UnitPrice,ftInteger,0,True,'','','','',fcNoChange,3); Add(★Memo,ftMemo,0,False,'','','','',fcNoChange,4); end; with RestructureIndexDefs do begin Clear; Add('',★ProdId,[ixPrimary,ixUnique],icNone); end; RestructureTable(0,0,1,0,False,'','',512,-1,True); end; end; finally TableToCreate.Free; end; end;