グリッドに表示したデータをテーブルに追加/修正するには?


平井  2003-12-06 03:29:28  No: 5948

以前投稿させていただいた内容の続きなのですが…

複数のテーブルよりTQueryを用いてデータを取得し、
TDBGridに表示しています。
その内容をボタンクリックで、任意のテーブルに
追加/修正する処理を考えています。
UpdateSQLを用いて修正することはできていますが、
追加処理ができません。
登録先のテーブルをLocateメソッドを利用して識別し、
追加or修正の分岐はできています。
また、Insertメソッドで追加モードにもしていますが、
「この操作は行えません」というエラーメッセージが表示されます。

どうして追加処理ができないのかがわかりません。
皆様、ご指導宜しくお願いします。


平井  2003-12-06 06:24:22  No: 5949

自己レスです。
現状としては、単独での修正処理はできています。
追加処理は、一度更新処理を行うと可能となり、
最初に追加処理を行うとエラーとなります。
エラーになる原因がわかりません。

以下にソースを掲載させていただきます。

procedure TForm.ButtonClick(Sender: TObject);
begin
  if Table.Locate(NO',DBEdit.Text,[loCaseInsensitive]) then
    //----- 更新処理 -----//
    begin
      with Query do begin
        if Modified then
          begin
            UpdateSQL.ModifySQL.Clear();
            UpdateSQL.ModifySQL.Add('update文');
            Post;
          end;
        if State in [dsInsert, dsEdit] then
          Cancel;
        if UpdatesPending then
          Database.ApplyUpdates([Query]);
      end;
    end
  else
    //----- 追加処理 -----//
    begin
      with Query do begin
        if Modified then
          begin
            UpdateSQL.InsertSQL.Clear();
            UpdateSQL.InsertSQL.Add('insert文');
            Post;
          end;
        if State in [dsInsert, dsEdit] then
          Cancel;
        if UpdatesPending then
            Database.ApplyUpdates([Query]);
      end;
    end;
end;

どなたかお分かりになる方いらっしゃいましたら、
ご指導宜しくお願いします。


HOta  2003-12-07 17:11:41  No: 5950

TUpdateSQLのSQLを一々変えているようですが、設計時には設定できないような内容なのでしょうか?追加処理ができないのは、追加処理をステップ実行して、エラーの内容を把握するのが第一だと思います。


平井  2003-12-08 20:11:15  No: 5951

HOtaさん  レスありがとうございます。

追加処理のステップ実行をおこないましたが、
Database.ApplyUpdates([Query]);  の部分で、
「この操作は行えません」というエラーがでます。

前述した通り、
一度、更新処理を行った後に追加処理を行うと実行可能ですが、
最初から、追加処理を行うとエラーとなります。

そこで、ステップ実行を行ったのですが、上記の部分でエラーとなります。
前者のやり方では追加処理が可能なのに、後者の方法では
エラーとなる原因がわかりません。

なにか他に必要な処理があるのでしょうか?
ご指導宜しくお願いします。


HOta  2003-12-09 00:35:32  No: 5952

TQueryでも追加不可能でしょうか?同じinsert文で追加できますでしょうか?


平井  2003-12-09 01:57:57  No: 5953

HOtoさん  レスありがとうございます。

追加処理自体はおかしくないと思うのですが…
単独ではないにしろ一定の条件では正しく処理を行うので。
勘違いでしたら、すみません。


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

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






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