Jet 4.0 OLE DBプロバイダーを使用して、cmShareDenyWriteモードでMicrosoft Access .MDBファイルへのADO接続(dbGo)を開こうとしているDelphi2009アプリケーションがあります。目標は、.MDBファイルを読み取り/書き込みモードで開くことですが、他のアプリケーションがファイルを書き込みモードで開くのを防ぐことです。読み取りモードでファイルに同時にアクセスする他のアプリケーションは問題ありません。実際、それがポイントです。
TADOConnection、TADOQuery(および/またはTADOTable)、およびTDataSourceの組み合わせを使用して、データベース対応コントロールに接続しています。ドキュメントを読んだ(そして読んだり読んだりする)ことからの私の理解は、接続文字列のアクセス許可を「共有拒否書き込み」に設定することでうまくいくということです。
データベースを開くのに問題はありません。接続が成功したときにADOConnectionで返されるモードは、予想どおりcmShareDenyWriteです。データベース対応コントロールを使用してデータセットをナビゲートするのに問題はありません。ただし、レコードを変更して結果を投稿しようとすると、次のことができません。データベースが読み取り専用モードになっているようです。
基本的に、MDBテーブルへのADOアクセスに「共有拒否書き込み」を選択すると、ファイルへの書き込み機能が拒否されるようです。何かが足りないか、これはJETのOLEDBプロバイダーでサポートされていないシナリオです。
誰かが私がどこで間違っているのか、または私が元の目標をどのように達成できるのかを知っていますか?
前もって感謝します、
ジョン・ベネット