データベース接続でのエラーについて


安曇野  2005-09-30 19:46:10  No: 17792

Delphiで初めてデータベースを作っていますが、"access violation"  エラー
が出てしまいます。
データベース、トランザクション、データセット(SQLパラメータの設定)をした後、コネクト/トランザクションスタート/データセットオープンをしようとしましたがエラーで通りません。何が原因か見当がつきませんどなたかヒントをいただけないでしょうか。
よろしくお願いいたします。

    プロジェクト・オプションでの順はTDataModule1を先頭にしています。

procedure TDataModule1.DataModuleCreate(Sender: TObject);
var strdbpath: string;

begin
  with DataModule1.IBDatabase1 do
    begin
    //  データベースの設定
      strdbpath:='e:\database\passctl\secudata.fdb';
      Databasename:= strdbpath;
      Params.Clear;
      Params.Add('password=masterkey');
      Params.Add('User_name=SYSDBA');
      Params.Add('Lc_ctype=SJIS_0208');
    end;
  with DataModule1.IBTransaction1 do
    begin
    //  トランザクションの設定
      Params.Clear;
      Params.SetText('consistency');
      Params.SetText('wait');
      Params.SetText('write');
    end;
  with DataModule1.IBDataSet1 do
    begin
    //  データセットの設定
      DeleteSQL.Clear;
      DeleteSQL.Add('DELETE FROM SECUDATA');
      DeleteSQL.Add(' WHERE ');
      DeleteSQL.Add('LOGONID=:ID_Text');
            ・
            ・
            ・
//  データセットのオープン
  DataModule1.IBDatabase1.Connected := true;
  DataModule1.IBTransaction1.StartTransaction;
  DataModule1.IBDataSet1.Open;
end;


えーと  2005-10-01 01:35:46  No: 17793

Delphiやインターベースのバージョンが不明ですし
AVを出している行も特定されていないので、なんとも言えませんが。

ConnectedでAVならサービスを起動していないとか。
データベースのパスや設定が間違っている。

StartTransactionでAVなら、IBDatabaseとIBTransactionの接続のし忘れ。

OpenでAVならSQLの間違い。パラメータの設定失敗。
それからOpen;だけでなくDeleteも必要です。

普通はエラーメッセージが出るので、ほかの所でAVが出ているような気もします。


きりり  2005-10-03 23:53:37  No: 17794

自分の経験だけで言わせて頂きますと・・
データベース関連のエラーは、エラーメッセージから内容を読み取るのは難しい場合が多い気がします。
access violationもその一例ですね。
(SQLの記述ミスとかだとエラーメッセージで分かる場合もありますが)

そのためのIDE環境になるわけで、デバッガで1行単位で実行させていき、
まずはどの行でエラーが出ているのかを特定しないと、
回答する側も適切な回答ができないと思います。


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

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






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