■構成
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が設定されていました。
解決の糸口がつかめず困っています。
よろしくお願いします。
あだちです。
同じ環境(設定)で使ったことがないのとコードがわからないので、はずしているかも知れませんが、FireDACでは、ApplyUpdates()のエラーは、戻り値でチェックする必要があります。戻り値が、0であれば正常に処理が行われ、0以外だと何らかのエラーが発生となります。例外などは発生しません。
あと私論ですが、DB2はほぼ使った事が無いに等しいので、何か理由がありそうしているのかはわからないのですが、FireDACは、DB2もサポートしているのに、ODBC経由にしているのはなぜなのかが疑問です。FireDACの問題なのか、ODBCの問題なのか絞り込めないように思います。
(関係ないかもしれませんが・・・)
アップデートサブスクリプションに加入していれば、ですけど、
Update 1
November 2016 Seattle Update Subscription Update
は適用済みですか?
確認が遅れてしまい申し訳ありません。
>>あだち様
ApplyUpdates()の戻り値は0:正常をリターンしていました。
ODBC経由の理由はDB2-FOR-AS400の為WINDOWS系とは毛色が違うのと
ODBCでの開発実績があったので使用していました。
>>igy様
未加入なのでアップデートが当てられない環境です。
これについては検証できませんでした。
回りくどい解決方法ですが、テーブルとDBの同期は手動で
行うこととしました。
直接の解決ではないですがこれで解決とします。
ありがとうございました。
以下
検証により解ったことを記載しておきます。
・ADO-ODBC接続ではグリッドInsertは正常動作を確認できました。
Updateは設定が悪いのかエラーになってしまいましたが、これは設定の誤りがだと思います。
ツイート | ![]() |