データベースを更新するには?

解決


Dビギナー  2006-02-22 21:19:43  No: 20143

データベース(interbase)を更新しようと
DataModule1.tblMASTER.Active := True;
DataModule1.tblMASTER.Edit;
とすると「更新用問い合わせが用意されていないため更新できません」
と例外エラーになります。
データベースコンポーネントは、
「TIBDatabase」「TIBTransaction」「TIBDataset」「TDataSource」を
データモジュールに貼り付けています。


HOta  2006-02-23 02:40:32  No: 20144

データベースコンポーネントのプロパティはどうなっていますか?
できればソースも提示してください。


Dビギナー  2006-02-23 18:57:18  No: 20145

IBDatabaseのプロパティは、特にさわっておらずデフォルト通りです。
ソースは下記の通りです。
      wSQL := 'Select * from tblREGI ' + ' Where REGI_ID = ''' + gStrId + '''';
      DataModule1.tblREGI.Active := false;
      DataModule1.tblREGI.SelectSQL.Text := wSQL;
      DataModule1.tblREGI.Active := True;
      DataModule1.tblREGI.Edit;
      DataModule1.tblREGIREGI_OPEN.AsString := '1';
      DataModule1.tblREGIREGI_SETTLE.AsString := '0';
      DataModule1.tblREGIREGI_CHANGE.AsInteger := StrToInt(StrDeFormat(PRP0020D.TURI.Text));
      DataModule1.tblREGI.ApplyUpdates;

EDITとしたところでエラーになります。
ソースの通り、データベースの照会はSQLでできるのですが、
更新モードにできないようです。
「TIBDataset」のかわりに「TIBQuery」に替えて実行したのですが
結果は同じでした。
ご指摘の通り、「IBDatabase」や「IBTransaction」のプロパティを
チェックしましたが、特にReadonlyのような設定にはなっていない
ようです。


Dビギナー  2006-02-23 20:42:20  No: 20146

ちなみにデータモジュールは自動作成にしていますが、プロジェクトの記述で
メインフォームのApplication.CreateFormの前にCreateするように変更して
います。


Dビギナー  2006-02-24 01:57:59  No: 20147

コンポーネントを「IBTable」に変更して下記のコーディングに変更して
実行すると更新できました。
    DataModule1.tblREGI.Active := true;
    DataModule1.tblREGI.Filtered := false;
    wSQL := 'REGI_ID = ''' + gStrId + '''';
    DataModule1.tblREGI.Filter := wSQL;
    DataModule1.tblREGI.FindFirst;
    DataModule1.tblREGI.Edit;
    DataModule1.tblREGIREGI_OPEN.AsString := '1';
    DataModule1.tblREGIREGI_SETTLE.AsString := '0';
    DataModule1.tblREGIREGI_CHANGE.AsInteger := StrToInt(StrDeFormat(PRP0020D.TURI.Text));
    DataModule1.tblREGI.ApplyUpdates;

もともとデータモジュールを使用せずにユニットのフォームに「IBDataset」
を置いていた時には更新できていたのですが、データモジュールを介した
ようにしたら、更新モードにできなくなりました。
なぜ???


HOta  2006-02-24 02:19:06  No: 20148

TIBDatasetのModifySQLが無いとEditはできません。
ちなみに、追加の場合はInsertSQL、削除の場合はDeleteSQL
が必要です。
ほんとにフォームにIBDatasetの時はOKだったのですか?


Dビギナー  2006-02-24 21:43:32  No: 20149

HOtaさま。
ご指摘の通りでした。
全くトンチンカンな質問で申し訳ありませんです。
大変助かりました。
ありがとうございます。


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

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






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