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

解決


Dビギナー  2006-02-22 12:19:43  No: 20143  IP: 192.*.*.*

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

編集 削除
HOta  2006-02-22 17:40:32  No: 20144  IP: 192.*.*.*

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

編集 削除
Dビギナー  2006-02-23 09:57:18  No: 20145  IP: 192.*.*.*

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 11:42:20  No: 20146  IP: 192.*.*.*

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

編集 削除
Dビギナー  2006-02-23 16:57:59  No: 20147  IP: 192.*.*.*

コンポーネントを「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-23 17:19:06  No: 20148  IP: 192.*.*.*

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

編集 削除
Dビギナー  2006-02-24 12:43:32  No: 20149  IP: 192.*.*.*

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

編集 削除