お世話になります。
現在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で質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) EXCELの外部データ取得ができない 1 2023/03/23 09:03
- Word(ワード) PCで作ったwordをスマホで編集しようとすると「このファイルは読み取り専用です。」と表示される。 3 2023/05/30 14:51
- システム 外付けHDDの初期化について 4 2023/03/05 21:19
- システム 外付けHDDの初期化について 4 2023/03/05 20:00
- システム CSV が読み取り専用になる。 1 2022/07/17 11:58
- Excel(エクセル) ネットワーク上のエクセルとリンクしている時にデータ更新をvbaで、refresh Allで行う場合の 2 2023/04/10 05:39
- Visual Basic(VBA) ExcelからAccessのテーブルに書き込む時に時間がかかる 1 2022/10/14 20:38
- Visual Basic(VBA) Access VBAから使用したExcelプロセスを閉じる方法について 4 2022/06/08 17:50
- Illustrator(イラストレーター) Illustrator アンカーポイント選択について 3 2023/01/30 12:31
- Access(アクセス) Access 登録ボタンからサブフォームの更新 1 2022/07/22 10:23
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
ACCESSでデータ読み取り専用を解除する方法
その他(データベース)
-
読み取り専用で開いているか否かの確認(アクセス)
Access(アクセス)
-
ODBCリンクの際にACCESSでは読み取り専用にしたい!
Oracle
-
-
4
日付型のフィールドに空白を入れる方法を教えてください
その他(データベース)
-
5
ACCESSで、EXCELのような、sumif関数のような関数ってありますか?
Access(アクセス)
-
6
「データベースまたはオブジェクトは読み取り専用なので、更新できません」エラーについて
その他(データベース)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Access VBA [リモートサーバー...
-
ACCESS2007 フォーム 「バリア...
-
ユニオンクエリで繋げられるテ...
-
ACCESSにてテーブルをEXCEL形式...
-
pgAdmin IIIでDELETEするために...
-
結合テーブルクエリPrimaryKey...
-
PhpMyAdminで作成して実行せよ...
-
実行時エラー3086 削除クエリ...
-
勤続年数の求め方
-
「マスタ」と「テーブル」の違...
-
SELECT時の行ロックの必要性に...
-
Accessのリンクテーブルについて
-
SQLServer + PHP で直近に追加...
-
ACCESS 一番最新の日付の金額...
-
ビューで引数を使いたい
-
重複するキーから一番古い年月...
-
accessテーブル作成クエリを実...
-
データの二重表示の原因
-
どういう時にテーブルロックを...
-
Accessにインポートしたら並び...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Access VBA [リモートサーバー...
-
ACCESS2007 フォーム 「バリア...
-
Accessでクエリを完了できませ...
-
実行時エラー3086 削除クエリ...
-
大きなテーブルに対する問い合...
-
ユニオンクエリで繋げられるテ...
-
VBAの実行時エラー'2522'について
-
Select ~ into ~ で作成した...
-
ACCESSのODBCリンクテーブルに...
-
SQL Serverのテーブルってどう...
-
SQL SERFVER で外部キーのエラ...
-
accessでSQL実行時のテーブル名...
-
AccessのテーブルをSQL Server...
-
Access Update文の副問い合わせ
-
Oracleデータベーストリガーの...
-
ACCESSにてテーブルをEXCEL形式...
-
PhpMyAdminで作成して実行せよ...
-
TRY CATCHでシステムエラーを検...
-
SSIS 変数の値をSQL実行タスク...
-
Access VBA 読み取り専用かチェ...
おすすめ情報