[Delphi10 Seattle]TFDQueryのApplyUpdatesについて

解決


吉田大先生の弟子  2017-01-31 18:32:48  No: 48494

■構成
Windows10
TDBGrid-TDataSource-TQuery-TFDConnection-ODBC-iSeries Access ODBC Driver-DB2

■現象
上記構成でTDBGridで修正した箇所をTQueryのApplyUpdatesでテーブルに反映しようとしたところエラーは発生せず更新もされませんでした。

■検証内容
・上記構成でDelphi 10.1で動作確認したところ反映を確認しました。

・CachedUpdates=Falseで即時更新でも反映されませんでした。

・Insertではエラーが発生しました。
[FireDAC][Phys][ODBC][IBM][System i Access ODBCドライバー][DB2 for i5/OS]
SQL104-トークン)は正しくない。有効なトークンはDAY PATH YEAR LAVEL MONTH
OPTION RESULT DEFAULT CONNECTIONです。

・TFDQUery.Adapter.InsertCommand, TFDQUery.Adapter.UpdateCommandともにnilが設定されていました。

解決の糸口がつかめず困っています。
よろしくお願いします。


あだち  2017-02-03 22:26:13  No: 48495

あだちです。

同じ環境(設定)で使ったことがないのとコードがわからないので、はずしているかも知れませんが、FireDACでは、ApplyUpdates()のエラーは、戻り値でチェックする必要があります。戻り値が、0であれば正常に処理が行われ、0以外だと何らかのエラーが発生となります。例外などは発生しません。

あと私論ですが、DB2はほぼ使った事が無いに等しいので、何か理由がありそうしているのかはわからないのですが、FireDACは、DB2もサポートしているのに、ODBC経由にしているのはなぜなのかが疑問です。FireDACの問題なのか、ODBCの問題なのか絞り込めないように思います。


igy  2017-02-04 07:19:56  No: 48496

(関係ないかもしれませんが・・・)
アップデートサブスクリプションに加入していれば、ですけど、
Update 1 
November 2016 Seattle Update Subscription Update
は適用済みですか?


吉田大先生の弟子  2017-02-10 19:59:30  No: 48497

確認が遅れてしまい申し訳ありません。

>>あだち様
ApplyUpdates()の戻り値は0:正常をリターンしていました。
ODBC経由の理由はDB2-FOR-AS400の為WINDOWS系とは毛色が違うのと
ODBCでの開発実績があったので使用していました。

>>igy様
未加入なのでアップデートが当てられない環境です。
これについては検証できませんでした。

回りくどい解決方法ですが、テーブルとDBの同期は手動で
行うこととしました。
直接の解決ではないですがこれで解決とします。
ありがとうございました。

以下
検証により解ったことを記載しておきます。

・ADO-ODBC接続ではグリッドInsertは正常動作を確認できました。
Updateは設定が悪いのかエラーになってしまいましたが、これは設定の誤りがだと思います。


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

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






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