• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Access VBA 読み取り専用かチェック)

Access VBA 読み取り専用かチェック

このQ&Aのポイント
  • Access VBAで作成したツールで、読み取り専用で開かれた場合に処理を中断する方法を知りたい。
  • Access VBAツールの処理中に、読み取り専用で開かれた場合に発生するエラーを回避する方法を教えてください。
  • Accessのフォームを読み取り専用で開かれた場合に、処理をさせないようにする方法を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • ShowMeHow
  • ベストアンサー率28% (1424/5027)
回答No.5

>CurrentDb.Updatable って何をしようとして... よく知らないですけど、、、 アクセスの環境変数みたいなものとして持っているものを返しているんじゃないかな? ざっくばらんに言うと、どういう形でDBを開いたかをどこかで覚えておくためのものだと思います。 (ldb内に格納されているんじゃないかな)。 多分、参照だけなので、他には何の影響もないと思いますが、まあ、納品物なら 動作検証等はやっておいたほうがよいのかもしれませんね。

naoto0216
質問者

お礼

度々のご回答ありがとうざいます。 了解です。 とりあえず、影響無いことを検証したいと思います。 助かりました!

すると、全ての回答が全文表示されます。

その他の回答 (4)

  • ShowMeHow
  • ベストアンサー率28% (1424/5027)
回答No.4

updatable かな?

naoto0216
質問者

お礼

あ・・うまくいきました。すみません。 そもそも、CurrentDb.Updatable って何をしようとして Falseを返したりTrueを返したりしてるのでしょうか。 勉強不足で大変恐縮です。。

naoto0216
質問者

補足

要するにCurrentDb.Updatable ってやることにより 変更権限有りで開いたときに何か影響がないかを懸念 している次第です。

すると、全ての回答が全文表示されます。
  • ShowMeHow
  • ベストアンサー率28% (1424/5027)
回答No.3

今ちょっとやってみたら、、、 MsgBox CurrentDb.Updatable で判断できたよ。 Acc2000 でMDBファイルだったけど。

naoto0216
質問者

お礼

こちら2010ですが、読み取り専用だったらFalse、変更可能だったら Trueになりました!ありがとうございます。 ちなみにですが・・・ If CurrentDb.Update = False Then MsgBox "読み取り専用" Else MsgBox "読み取り専用ではない" End If としたら、「コンパイルエラー メソッドまたはデータメンバーが 見つかりません」となり.Updateの箇所でひっかがってるようです。 どのように評価すればよいでしょうか。 度々申し訳ございません。

すると、全ての回答が全文表示されます。
  • ShowMeHow
  • ベストアンサー率28% (1424/5027)
回答No.2

>読取専用で開いた場合、 > Set d1 の箇所でFalse > Set d2 の箇所でデータの表示と書込みを行う権限が無い旨のエラー ってことは、きっと自分自身に対するチェックには利用できないってことですね。 あとは他のMDBから判断できるのかをチェックしてみるとか、 エラーハンドリングでそれを伝えるか、、、

すると、全ての回答が全文表示されます。
  • ShowMeHow
  • ベストアンサー率28% (1424/5027)
回答No.1

この辺りが参考になるかな? 詳しく読んでもいないので、自分自身に対してできるかよくわかんないけど。 Dim d1 As database, d2 As database Set d1 = OpenDatabase("biblio.mdb", 0, -1) 'set read-only option True debug.print d1.Updatable ' Updatable prints False, 0, as expected. Set d2 = OpenDatabase("biblio.mdb", 0, 0) 'set read-only option False debug.print d2.Updatable ' Updatable still prints False, 0 定義では、更新可能なプロパティは、読み取り専用アクセスが True、およびその逆の場合に False を返します。 まあ、最悪の場合、チェック専用にテーブル作ってエラー処理したルーチンから、そのテーブル書きに行ってみればわかると思うけど。

参考URL:
http://support.microsoft.com/kb/107074/ja
naoto0216
質問者

お礼

ShowMeHow様 ご回答ありがとうございます。 早速試してみたのですが。。 読取専用で開いた場合、  Set d1 の箇所でFalse  Set d2 の箇所でデータの表示と書込みを行う権限が無い旨のエラー 普通に開いた場合(変更権限有り)、  Set d1 の箇所でFalse  Set d2 の箇所でTrue となりました。 結局なにをどう評価して「今読み取り専用で開かれてる」となるのでしょうか。 権限が無いエラーを拾う感じなのでしょうか。 いまいち理解できずにおります。

naoto0216
質問者

補足

失礼しました。 普通に開いた場合(変更権限有り)、  Set d1 の箇所でTrue  Set d2 の箇所でTrue となりました。 ということは、d1でFalseだったら読み取り専用で開かれたと 判断しても大丈夫なのでしょうか。

すると、全ての回答が全文表示されます。

関連するQ&A