• 締切済み

Access VBAにてbegintrans

お世話になります。 Access2000のVBAで排他制御を行いたいと考えています。<begintrans>と言うメソッドがあるのですが、 1.<begintrans>で排他がかかるのはテーブルでしょうか?レコードでしょうか?ページでしょうか? 2.排他の単位はAccessのツール-オプションの指定に影響されるのでしょうか? 3.ネットで文献を見ていると<begintrans>はADOでしか使っていないようなイメージを受けましたが、DAOでも問題無く使えるのでしょうか? ご回答よろしくお願いします。

みんなの回答

  • Gin_F
  • ベストアンサー率63% (286/453)
回答No.2

> レコード毎に排他フラグを立てるとか? 状況により、方法はいくつかあるのでしょうけど。。 私なら、入力フォームに対して、排他制御をします。 入力フォームを誰かが開いたら、ユーザ名を排他テーブルに書き込み、 そこにレコードが存在するときには、フォームを開かないようにする。 とか。 #当然、テーブルから直接入力はないという前提ですが。

rvr3958
質問者

お礼

再びの回答ありがとうございます。 フォーム単位のロックですか。少し単位が大き過ぎるように思えますので、やはり地道に排他フラグを立てるしか無いのかな…。今回の前提が「皆で同じ画面を開いてバンバンとレコード更新しましょう!」なもので。(^_^)

  • Gin_F
  • ベストアンサー率63% (286/453)
回答No.1

BeginTrans は、排他ではなくトランザクションですね。 DAO から ADO への移植 Jet Provider と組み合わせた ADO の使用 http://www.microsoft.com/japan/msdn/data/techmat/ado/dao2ado_8.asp こちらの真中あたりに、ADO・DAOでのトランザクションの使用例が載っています。 Accessで通常、排他がかかるのは、ページだったと思います。 「ツール」→「オプション」で、レコードレベルでロックしても、ADO/DAOでは 関係なかったはずです。(たぶん。)

rvr3958
質問者

お礼

回答ありがとうございます。 そうですね。本来は排他が目的なのですが、VBAで排他を考えていたらBeginTransに突き当たりまして、これで出来るのかなぁ?と質問になりました。 ご提示のURLを見ましたがパッと見でちんぷんかんぷんなのでもう少し時間をかけて見て見ます。(^_^;) ソウデスカ。ADO/DAOではページロックになるのですか。通常VBAで排他を考える場合どのように構築するのが一般的なのでしょうか?レコード毎に排他フラグを立てるとか?