Delphi2005,INTERBASE6,WinXPの環境下でデータベースアプリを勉強中です
DataModuleにIBDatabase1,IBTransaction1,IBDataSet1,Datasouece1をそれぞれ配置してDataModule1.DataModuleCreateイベントでオープンしようとしていますがIBTransaction.StartTransactionで
「プロジェクト〜.exeは例外クラスEIBClientError(メッセージ’Cannot perform operation--DB is not open')を送出しました」でエラーになります。
HELPでは不適切な方法でコンポーネントを使用したときに出るようなのですが調べてもよく分かりませんどなたかご教授をお願いします。ちなみにコードを使用しないで同じコンポーネントで実行した場合はDB接続プロンプトがでて
開くことが出来ます。
コードは以下のように書いています。
procedure TDataModule1.DataModuleCreate(Sender: TObject);
begin
with IBDatabase1 do
begin
// データベースの設定
DatabaseName := 'E:\〜.fdb';
Params.Clear;
Params.Add('Password=masterkey');
Params.Add('user_name=SYSDBA');
Params.Add('lc_ctype=SJIS_0208');
end;
with IBTransaction1 do
begin
// トランザクションの設定
Params.Clear;
Params.SetText('consistency');
Params.SetText('wait');
Params.SetText('write');
end;
with IBDataset1 do
begin
// データセットの設定
DeleteSQL.Clear;
DeleteSQL.Add('DELETE FROM BUHINLIST');
DeleteSQL.Add(' WHERE ');
DeleteSQL.Add(' hinban = :hinban');
InsertSQL.Clear;
InsertSQL.Add('INSERT INTO BUHINLIST ');
InsertSQL.Add('(hinban,hinmei,check_flg,dd_setup,dd_update)');
InsertSQL.Add('VALUES '); InsertSQL.Add('(:hinban,:hinmei,:check_flg,:dd_setup,:dd_update)');
RefreshSQL.Clear;
RefreshSQL.Add('SELECT * FROM BUHINLIST ');
RefreshSQL.Add('WHERE hinban=:hinban ');
SelectSQL.Clear;
SelectSQL.Add('SELECT * FROM BUHINLIST ');
ModifySQL.Clear;
ModifySQL.Add('UPDATE BUHINLIST ');
ModifySQL.Add('SET ');
ModifySQL.Add('hinban=:hinban ');
ModifySQL.Add('hinmei=:hinmei ');
ModifySQL.Add('check_flg=:check_flg ');
ModifySQL.Add('dd_setup=:dd_setup ');
ModifySQL.Add('dd_update=:dd_update ');
end;
// データセットのオープン
IBDatabase1.Connected;
IBTransaction1.StartTransaction; <<===ここでエラーになります。
IBDataset1.Open;
end;
>IBDatabase1.Connected;
を
IBDatabase1.Connected := True;
にすれば、どうなりますか?
igy様
早速のご指摘ありがとうございました。
"True"を追加しておかげさまで通りました、単純なことでしたがなにぶん初めてのため気がつきませんでしたお。騒がせして申し訳ありません。
今後ともよろしくお願いいたします。
ツイート | ![]() |