- 締切済み
Access VBAにてbegintrans
お世話になります。 Access2000のVBAで排他制御を行いたいと考えています。<begintrans>と言うメソッドがあるのですが、 1.<begintrans>で排他がかかるのはテーブルでしょうか?レコードでしょうか?ページでしょうか? 2.排他の単位はAccessのツール-オプションの指定に影響されるのでしょうか? 3.ネットで文献を見ていると<begintrans>はADOでしか使っていないようなイメージを受けましたが、DAOでも問題無く使えるのでしょうか? ご回答よろしくお願いします。
- rvr3958
- お礼率93% (302/323)
- その他(データベース)
- 回答数2
- ありがとう数2
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- Gin_F
- ベストアンサー率63% (286/453)
> レコード毎に排他フラグを立てるとか? 状況により、方法はいくつかあるのでしょうけど。。 私なら、入力フォームに対して、排他制御をします。 入力フォームを誰かが開いたら、ユーザ名を排他テーブルに書き込み、 そこにレコードが存在するときには、フォームを開かないようにする。 とか。 #当然、テーブルから直接入力はないという前提ですが。
- Gin_F
- ベストアンサー率63% (286/453)
BeginTrans は、排他ではなくトランザクションですね。 DAO から ADO への移植 Jet Provider と組み合わせた ADO の使用 http://www.microsoft.com/japan/msdn/data/techmat/ado/dao2ado_8.asp こちらの真中あたりに、ADO・DAOでのトランザクションの使用例が載っています。 Accessで通常、排他がかかるのは、ページだったと思います。 「ツール」→「オプション」で、レコードレベルでロックしても、ADO/DAOでは 関係なかったはずです。(たぶん。)
お礼
回答ありがとうございます。 そうですね。本来は排他が目的なのですが、VBAで排他を考えていたらBeginTransに突き当たりまして、これで出来るのかなぁ?と質問になりました。 ご提示のURLを見ましたがパッと見でちんぷんかんぷんなのでもう少し時間をかけて見て見ます。(^_^;) ソウデスカ。ADO/DAOではページロックになるのですか。通常VBAで排他を考える場合どのように構築するのが一般的なのでしょうか?レコード毎に排他フラグを立てるとか?
関連するQ&A
- ACCESSで実行時エラー3008
ACCESS2000でデータベースを作っています。ADOやDAOは使っていません。 フォームにあるテーブルのデータシートを表示していて、そのフォームのボタ ンクリックイベントでダイアログ形式で別のフォームを表紙し任意の主キーを 取得して、DoCmd.RunSqlで表示しているテーブルに対してUPDATEを投げたいの ですが、 "実行時エラー3008 ・・・排他的に開いているか、ユーザーインターフェイス を介しているので、操作する事はできません。"というエラーがでます。 どうすればクエリが実行できますでしょうか? [ツール]-[オプション]-[詳細]の"既定の開くモード"は"共有モード"に、"既定 のレコードロック"は"ロックしない"にしています。
- ベストアンサー
- その他(プログラミング・開発)
- Access200のFilterとFindの違い
Access2000のVBAを使ってプログラムを書いています。 Access97ではDAOのFindを使ってレコードの抽出を 行っていましたが、2000のADOになってからはFindも サポートしているけどFilterの方がいいよと言われた のですが、そもそもこのFindとFilterの二つの違いは なんでしょうか? 初心者的で申し訳ありませんが、ご回答よろしくお願いします。
- ベストアンサー
- その他(データベース)
- ACCESS2003 VBAよりVB.NETを使った方がいい?
ACCESS2003 VBAよりVB.NETを使った方がいい? プログラマーでもないのですが、仕事でAccess2003でVBAを書いています。フォームにテーブルから引っ張てきたデータを表示させてデータを閲覧したり、データを加工してExcelにデータを吐き出したりしています。テーブルには10万件程度のデータがあります。 特に私は便利に使っているのですが、上司がVB.netとMYSQLでプログラム書いた方が楽じゃない?VB.NETよかったら買ってあげるよと言われました。買ってくれるのは嬉しいのですが、.netなんてやったこともないですし、DAOしか使ったことがなくADOなんて全くわかりません。 何かACCESS VBAよりVB.net+MYSQLのメリットって何かありますでしょうか?ちなみに業務で使うためのものなので、家からアクセスして何かするというのは考えていません。あくまで社内で使う時にメリットはあるでしょうか?
- ベストアンサー
- Visual Basic
- VB+アクセス or アクセス どちらがいい?
今はアクセスで50000レコードのデータベース検索ツールを使っていますが、 これをVB+アクセスにすると どのようなメリットがあるのでしょうか? 検索ツールは1名(1台のパソコン)でしか使いません。(共有しない) なんとなくVBの方が細かな制御が出来るイメージがありますが 実際どうなんでしょう? 上記の環境ならアクセスでも、VB+テーブルだけアクセス でも変わらないですか?
- ベストアンサー
- その他(データベース)
- Accessでの排他制御
アクセスの排他制御に関して質問です。 ネットワーク上のサーバーにアクセスのMDBを置いて、複数の人が更新目的で開く場合、排他制御はどうなるのでしょうか? テーブル単位で、ロックが掛かるのでしょうか? もしそうであれば、複数の人が同時に使えないのですが、回避策はありませんでしょうか?
- 締切済み
- その他(データベース)
- 排他制御について
質問があります。 Access2003とSQLserver2005の排他制御についてです。 複数のPCから共有してアクセスし、レコード単位に排他制御したいといった場合、 排他制御に適しているのはどちらでしょうか? 「Accessではこういう問題があり適さない」などあったら教えてください。 よろしくお願いします。
- 締切済み
- SQL Server
- ACCESS2000 VBAを使用して最適化したい
ACCESS2000を使用しています。 VBAでデータベースの最適化/修復を行いたいと思っています。 連番をリセットしたいのですが、可能でしょうか? ツールからオプションでチェック入れることはわかりますが・・・ たとえば、データを入力しクエリで他テーブルに追加し 新規でまたこのテーブルにデータを入力していく作業があります。 クエリで他テーブルに追加した時点で、テーブルのデータを作成し、最適化して全くの新しいデータを1番からの連番で入力したいです。 出来ますか?
- 締切済み
- その他(データベース)
- フォームで1レコード削除したのに表示は残ったまま更新されない
Accessフォーム(表形式)に[削除]ボタンをつけました。 VBAで削除ボタン_Click()を書きました。 ADO接続 SQL発行し、該当レコード削除 (Delete from 予約 where 予約ID= me.予約ID ) というコードです。 削除後も、フォームにはレコードが見えたままなのですが、表示を更新するにはどうしたら良いのでしょうか? ----------------------------------- Set rs = Me.Recordset.Clone '' 予約テーブルからレコード削除処理 ... Me.Requery ----------------------------------- というやり方は、DAOだそうですね。 ADOではフォームのレコードソースを指定できないと参考書にありました。 しかし、DAOでは Delete SQL 発行の仕方がわからないので、できればADOで実現したいのです。 無理でしょうか?
- ベストアンサー
- その他(データベース)
- アクセス2000VBA DAOをADOに書き換えてください
アクセス2000VBA DAOをADOに書き換えてください 下記プログラムをADOに書き換えてください。(DAT1、DAT2はモジュールにて定義してあります) Option Compare Database Dim DBS As Database Dim QDF As QueryDef Dim RST As DAO.Recordset Dim COUNT1 Private Sub Form_Load() On Error Resume Next DAT2 = [Forms]![伝票]![HAKKOU1] Set DBS = CurrentDb Set QDF = DBS.QueryDefs("発行") With QDF .Parameters("DAT1") = DAT2 ’もしかしたら DAT2 ではエラーがでるかもしれません。 Set RST = .OpenRecordset() ’正しい記述を教えてください .Close End With With RST COUNT1 = !指示書 .Close End With
- ベストアンサー
- オフィス系ソフト
お礼
再びの回答ありがとうございます。 フォーム単位のロックですか。少し単位が大き過ぎるように思えますので、やはり地道に排他フラグを立てるしか無いのかな…。今回の前提が「皆で同じ画面を開いてバンバンとレコード更新しましょう!」なもので。(^_^)