もともとmdbにデータを持っていたDAO/Jetのプログラムを、
なるべく変更しないでSQL Serverに対応させたいため、
DAO/ODBCDirectで動かそうとしています。
〜環境〜
VB6.0
Access2000→SQL Server2000
DAO/Jetでは、CommitTrans前にOpenしたRecordSetに対して、CommitTrans後もアクセスできたのですが、
ODBCDirectでは実行時エラー3670(カーソルが無効です)となってしまいます。
原因は下記のためと思われます。
http://support.microsoft.com/default.aspx?scid=kb;ja;409745
> 詳細
> 〜中略〜
> SQL Server(TM) ODBC Driver バージョン2.65.0240 の仕様によるものです。
> トランザクション処理後のカーソルの振る舞いは ODBC ドライバによって決定されます。
> 〜中略〜
> SQL Server ODBC Driver は SQL_CB_CLOSE が設定されているため、
> コミットおよびロールバック後にカーソルはクローズされます。
> その後、カーソルを必要とする Recordset オブジェクトの操作を行うとエラーが発生します。
> 対処方法
> CommitTrans メソッド、Rollback メソッド実行後に Requery メソッドにより
> Recordset オブジェクトを再構築してください。
対処はRequeryとなっているのですが、そうではなく、
SQL_CB_PRESERVE(カーソル保持)に変更する方法はないでしょうか?
ODBC APIだとSQLSetConnectOptionなどで変更できるようなのですが...。
何か方法をご存知の方がいらっしゃいましたら、宜しくお願い致します。
ツイート | ![]() |