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;
