使いやすいように設計された Microsoft リレーショナル データベース管理システムのファミリ。
MukkuMukuです。
待ち時間の調整はできたっけかな?
後出し側の更新が実行時エラー発生前に更新できるようになったとしても取得したレコードセットは過去のものとなっている可能性があるから再度取得から再試行を盛り込む感じでしょうか。
このブラウザーはサポートされなくなりました。
Microsoft Edge にアップグレードすると、最新の機能、セキュリティ更新プログラム、およびテクニカル サポートを利用できます。
Access2007をWindowsXPで使用しています。
MDBファイルをプログラムとデータで分け、データはサーバーに
プログラムは各端末に置きサーバーのデータMDB内のテーブルを
リンクしています。
ADOのレコードセットによるレコードロックに関して質問します。
まず以下のようにしてコネクションを開きます。
Dim cnn As ADODB.Connection
Set cnn = New ADODB.Connection
cnn.ConnectionString = CurrentProject.BaseConnectionString
cnn.Open
次に以下のようにしてレコードセットを開きます
Dim rst As ADODB.Recordset
Set rst = New ADODB.Recordset
rst.Open "(SELECT文)", cnn, adOpenStatic, adLockPessimistic
上記のようにして開いたレコードセットのフィールドに値を代入して
編集状態に入ると、UpdateかCancelUpdateするまでそのレコードが
ロックされます。
(テーブルを開くとそのレコードの左端に鍵マークがついた状態です)
この状態で、他の端末が同じ方法で同じレコードのフィールドに値を代入した場合、
そこで処理が止まり(ロックの開放待ち状態と考えられます)、およそ3秒以内に
開放されないと例外エラーが発生します。
そこで、そのエラーをトラップして「他の端末で操作中」という旨のメッセージを出しています。
ここで本題なのですが、現状で約3秒の開放待ち時間をもっと延ばす方法はないでしょうか?
CommandTimeoutプロパティはヘルプを読むとExecuteメソッドに対するものであり、
既定値も30秒とされているので違うように思います。
どなたかご存知の方がおられましたら宜しくお願いします。
使いやすいように設計された Microsoft リレーショナル データベース管理システムのファミリ。
ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。
質問作成者が受け入れた回答
MukkuMukuです。
待ち時間の調整はできたっけかな?
後出し側の更新が実行時エラー発生前に更新できるようになったとしても取得したレコードセットは過去のものとなっている可能性があるから再度取得から再試行を盛り込む感じでしょうか。
MukkuMukuさん、お返事ありがとうございます。
なるほど・・・再試行ロジックを組み込むしかないということですか・・・
ちょっと考えてみます。ありがとうございました。
tarosuke さん、こんにちは。
マイクロソフト コミュニティ への投稿ありがとうございます。
VBA についての質問の場合、当フォーラムでは情報が集まりにくいことがあるようです。
ある程度待ってもコメントが寄せられない時は、開発者の方々が情報交換を行っている MSDN フォーラムを利用して情報を集めるのがよいかもしれません。