IBQueryのApplyUpdateについて

解決


サンプー  2006-06-28 19:55:29  No: 22323  IP: 192.*.*.*

DL6pro,xp,Interbase6の環境です。
paradoxよりinterbaseへデータベースを変更する作業をしています。
データモジュールにdatasource,IBQuery,IBdatabase,IBTransaction,IBUpdateSQLを貼り付けてあります。
以下のコードでエラーが発生します。
エラーメセージ
'更新失敗’
’ユーザーによる中断’

FrmShohiyoには、DBGridを貼り付け、DM009.IBQueryShohiyo 等を正しく関連付けています。

以下、コード
procedure TFrmShohiyo.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  with DM009.IBQueryShohiyo do
  If MessageDlg('変更を保存して終了しますか?',mtConfirmation,[mbYes,mbNo],0) = mrYes then
       begin
       DM009.IBQueryShohiyo.Edit;
       DM009.IBQueryShohiyo.post; //ここまでは、上手く動作し、DBGridの値も変更されます。
       DM009.IBQueryShohiyo.ApplyUpdates ;  // ここでエラー
       Close;
       Open;
       FrmShohiyo.Close;
       end
    else
    Cancel;
    FrmShohiyo.Close;
end;

編集 削除
HOta  2006-06-29 08:02:43  No: 22324  IP: 192.*.*.*

DM009.IBQueryShohiyoのChashedUpdatesプロパティは、Trueになっていますか?

編集 削除
サンプー  2006-06-29 08:34:38  No: 22325  IP: 192.*.*.*

HOTAさんいつも有難うございます。
DM009.IBQueryShohiyoのChashedUpdatesプロパティは、Trueになっていますか

一番最初に確認しました。trueです

編集 削除
HOta  2006-06-29 15:22:53  No: 22326  IP: 192.*.*.*

エラーメッセージは何がでていますか?

編集 削除
サンプー  2006-06-30 09:48:16  No: 22327  IP: 192.*.*.*

プロジェクトOnine09.exeがEIBClientErrorクラスの例外を生成しました。
’更新失敗’
プロセスは・・・・
となっています。
更にステップ実行を行うと
プロジェクトOnine09.exeがEIBClientErrorクラスの例外を生成しました。
’ユーザーによる中断’
という警告が発生されます

編集 削除
HOta  2006-06-30 21:48:50  No: 22328  IP: 192.*.*.*

キーに入る値は、文字の長さ等はきちんとしていますか?重複は有りませんか?NotNull項目には、データーが入っていますか?
文字列などで、CharSet に2バイト文字を指定していて、1バイト文字を入れた場合は、1文字に2バイト使います。
登録する文字列を短くしてみて、登録できるかも調べてみてください。

編集 削除
サンプ  2006-07-06 14:33:50  No: 22329  IP: 192.*.*.*

HOTAさん有難うございました。
私なりに、色々コードを調べたりして検討しました。時間がかかってしまいましたが、何とか質問の件については解決できました。解決法を上手く表現できないので、とりあえず結果だけを報告します。
又よろしくお願いします。

編集 削除