
お世話になります。
現在Accessにてツールを作成しておりますが、読み取り専用で
開かれた場合は、処理をさせないようにしたいとところです。
処理が実行されると削除クエリの箇所で、削除できない旨のエラーが
出てしまい処理が中断します。
なお、中断される前にローカルにテンポラリテーブルを作成したり
している為、中途半端な状態で止まってしまいます。
※ツールはRuntime環境で利用する為、ユーザーが中途半端に
作成されたテーブル等を削除できません。
なので、フォームを開く際に読み取り専用で開かれたかどうか
チェックし、読み取り専用の場合は、処理させないようにボタンを
使用不可にしたいと考えております。
ご教示の程、宜しくお願い致します。
No.5ベストアンサー
- 回答日時:
>CurrentDb.Updatable って何をしようとして...
よく知らないですけど、、、
アクセスの環境変数みたいなものとして持っているものを返しているんじゃないかな?
ざっくばらんに言うと、どういう形でDBを開いたかをどこかで覚えておくためのものだと思います。
(ldb内に格納されているんじゃないかな)。
多分、参照だけなので、他には何の影響もないと思いますが、まあ、納品物なら
動作検証等はやっておいたほうがよいのかもしれませんね。
No.3
- 回答日時:
今ちょっとやってみたら、、、
MsgBox CurrentDb.Updatable
で判断できたよ。
Acc2000 でMDBファイルだったけど。
こちら2010ですが、読み取り専用だったらFalse、変更可能だったら
Trueになりました!ありがとうございます。
ちなみにですが・・・
If CurrentDb.Update = False Then
MsgBox "読み取り専用"
Else
MsgBox "読み取り専用ではない"
End If
としたら、「コンパイルエラー メソッドまたはデータメンバーが
見つかりません」となり.Updateの箇所でひっかがってるようです。
どのように評価すればよいでしょうか。
度々申し訳ございません。
No.2
- 回答日時:
>読取専用で開いた場合、
> Set d1 の箇所でFalse
> Set d2 の箇所でデータの表示と書込みを行う権限が無い旨のエラー
ってことは、きっと自分自身に対するチェックには利用できないってことですね。
あとは他のMDBから判断できるのかをチェックしてみるとか、
エラーハンドリングでそれを伝えるか、、、
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
この回答への補足
失礼しました。
普通に開いた場合(変更権限有り)、
Set d1 の箇所でTrue
Set d2 の箇所でTrue
となりました。
ということは、d1でFalseだったら読み取り専用で開かれたと
判断しても大丈夫なのでしょうか。
ShowMeHow様
ご回答ありがとうございます。
早速試してみたのですが。。
読取専用で開いた場合、
Set d1 の箇所でFalse
Set d2 の箇所でデータの表示と書込みを行う権限が無い旨のエラー
普通に開いた場合(変更権限有り)、
Set d1 の箇所でFalse
Set d2 の箇所でTrue
となりました。
結局なにをどう評価して「今読み取り専用で開かれてる」となるのでしょうか。
権限が無いエラーを拾う感じなのでしょうか。
いまいち理解できずにおります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Access VBA [リモートサーバー...
-
ACCESSのODBCリンクテーブルに...
-
SQL SERFVER で外部キーのエラ...
-
ACCESS2007 フォーム 「バリア...
-
ユニオンクエリで繋げられるテ...
-
MS Access2000でエクスポート時...
-
AccessのテーブルをSQL Server...
-
Access Update文の副問い合わせ
-
Oracleデータベーストリガーの...
-
ACCESSにてテーブルをEXCEL形式...
-
大きなテーブルに対する問い合...
-
accessでSQL実行時のテーブル名...
-
VBAの実行時エラー'2522'について
-
「マスタ」と「テーブル」の違...
-
Accessにインポートしたら並び...
-
SI Object Browserのテーブルス...
-
オラクルではできるのにSQLSERV...
-
ACCESSのSQLで、NULLかNULLでな...
-
重複するキーから一番古い年月...
-
ビューで引数を使いたい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ACCESS2007 フォーム 「バリア...
-
Access VBA [リモートサーバー...
-
Accessでクエリを完了できませ...
-
ACCESSのODBCリンクテーブルに...
-
大きなテーブルに対する問い合...
-
VBAの実行時エラー'2522'について
-
テーブル作成後なんですが、Pri...
-
accessでSQL実行時のテーブル名...
-
実行時エラー3086 削除クエリ...
-
Select ~ into ~ で作成した...
-
アクセスのワークシート変換に...
-
ユニオンクエリで繋げられるテ...
-
インデックスを調べる方法は?
-
AccessのテーブルをSQL Server...
-
PhpMyAdminで作成して実行せよ...
-
Access Update文の副問い合わせ
-
TRY CATCHでシステムエラーを検...
-
Access VBA 読み取り専用かチェ...
-
SQL Serverのテーブルってどう...
-
SSIS 変数の値をSQL実行タスク...
おすすめ情報