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;
Delphiやインターベースのバージョンが不明ですし
AVを出している行も特定されていないので、なんとも言えませんが。
ConnectedでAVならサービスを起動していないとか。
データベースのパスや設定が間違っている。
StartTransactionでAVなら、IBDatabaseとIBTransactionの接続のし忘れ。
OpenでAVならSQLの間違い。パラメータの設定失敗。
それからOpen;だけでなくDeleteも必要です。
普通はエラーメッセージが出るので、ほかの所でAVが出ているような気もします。
自分の経験だけで言わせて頂きますと・・
データベース関連のエラーは、エラーメッセージから内容を読み取るのは難しい場合が多い気がします。
access violationもその一例ですね。
(SQLの記述ミスとかだとエラーメッセージで分かる場合もありますが)
そのためのIDE環境になるわけで、デバッガで1行単位で実行させていき、
まずはどの行でエラーが出ているのかを特定しないと、
回答する側も適切な回答ができないと思います。
ツイート | ![]() |