INTERBASEでTRANSACTION接続時にエラー

解決


シルバーリング  2006-07-21 23:20:34  No: 22706

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;


igy  2006-07-21 23:36:49  No: 22707

>IBDatabase1.Connected;

IBDatabase1.Connected := True;
にすれば、どうなりますか?


シルバーリング  2006-07-22 01:14:10  No: 22708

igy様
早速のご指摘ありがとうございました。
"True"を追加しておかげさまで通りました、単純なことでしたがなにぶん初めてのため気がつきませんでしたお。騒がせして申し訳ありません。
今後ともよろしくお願いいたします。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加