どうやら、VS2012では、SQL_CUR_USE_ODBCは非推奨になっています。[更新:カーソルライブラリがVS2012から完全に削除されたようです]。
MFCのCDatabaseはそれを使用しなくなりました(VS2010および以前のバージョンのMFCのデフォルトでしたが)が、代わりにSQL_CUR_USE_DRIVERを使用します。
残念ながら、SQL_CUR_USE_DRIVERはJet ODBCドライバーでは正しく機能しません(Accessデータベースとやり取りしています)。ドライバーは当初、位置操作をサポートすると主張しますが(位置の更新はサポートしません)、実際にデータベースにクエリを実行しようとすると、MFCライブラリがデータベースとの読み取り専用の対話にドロップダウンするまで、すべての同時実行モデルは失敗します(これは実行されません)。私たちのために飛ぶために)。
質問
- これは、開発者にJetベースのデータソースから離れてSQL Express(または同様のもの)に移行することを強制するMSの最新の試みですか?
- VS2012バージョンのMFC/ODBCを介してAccessデータベースと対話するために使用する必要がある別のモダリティはありますか?(1)
参照: http ://social.msdn.microsoft.com/Forums/kk/vcmfcatl/thread/acd84294-c2b5-4016-b4d9-8953f337f30c
更新:さまざまなオプションを見ると、カーソルライブラリがVS2012のODBCライブラリから削除されているようです。Jetが位置の更新を正しくサポートしていないという事実(2)と相まって、「スナップショット」モードが使用できなくなります。基になるテーブルに主キーがある限り、「ダイナセット」をサポートしているように見えます。キーなしのテーブルは、「dynaset」モード(3)と互換性がありません。つまり、VS 2010を使い続けるか、テーブルを変更して自動番号などを含めて、レコードセットにダイナセットモードを使用できるようにpkeyを確実に使用できるようにすることができます。
(1)たとえば、CRecordsetに別のオープンタイプを使用する必要がありますか?現在、CRecordset::snapshotを使用しています。しかし、スナップショット、ダイナミック、ダイナセットのさまざまなモードを実際に理解したことはありません。「各試行」のクイックセットは、アクセスデータベースへの更新可能なインターフェイスを取得できませんでした...
(2)最初に照会されたときに要求しますが、以前にサポートすると主張したすべての同時実行モードに対してエラーを返します
(3) Jetはそれをまったくサポートしていないので(テストからわかることから)、「動的」も出ています。