Accessフォーム読取専用時のコマンドボタン無効化について

このQ&Aのポイント
  • Accessフォームを読取専用で開いた場合に、特定のコマンドボタンを無効にする方法について教えてください。
  • 社内ネットワーク上のデータベースを読取専用で開く際、一部のユーザーには「データベースは読み取り専用です。」と表示され、特定のコマンドボタンを無効にしたいと考えています。
  • VBAやシステムに詳しくないため、具体的な方法がわかりません。質問にお答えいただけると幸いです。
回答を見る
  • ベストアンサー

アクセスフォーム読取り専用時コマンドボタンを無効

アクセスで設備管理のデータベースを作成しています。 テーブルA 設備管理No. 設備名 型式 ・ ・ テーブルB 設備管理No. 設備名 取得価額 期首帳簿価額 当期償却額 期末帳簿価格 フォームC テーブルAをリスト表示 フォームD テーブルBを単票形式で表示 フォームCにコマンドボタン1を作成、クリックでフォームDが開くよう、 ウィザードを利用し作成しました。 この際、設備管理No.で関連付けをし、特定のレコードのみを表示させています。 社内ネットワーク上にデータベースを置いていますが、 「データベースは読み取り専用です。」とメッセージが表示され方もいます。 社内システム管理者が、データベースを保存してあるフォルダに 制限を掛けているからだと思いますが・・・ 読み取り専用で開く方際、特に問題は無いのですが、 この場合のみ、コマンドボタン1を無効にすることはできますか? 通常に開いた場合は、現状のままにしておきたいと思っています。 VBAやシステムに関して素人で、よくわからず 質問させて頂きました。 どなたかご教示願います。 よろしくお願い致します。

  • cuxxx
  • お礼率94% (18/19)

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

  • ベストアンサー
  • DexMachina
  • ベストアンサー率73% (1287/1744)
回答No.1

> 「データベースは読み取り専用です。」とメッセージが表示され方もいます。 その方のPC端末で、WindowsのメニューからAccessのみを立ち上げた後、  Access2003以前の場合:メニューで「ファイル(F)→開く(O)」を選択  Access2007以降の場合:「Officeボタン(画面左上隅)→開く」を選択 して『ファイルを開く』ダイアログを表示させ、対象ファイルを選択したら、 右下にある『開く(O)』ボタンの『▼』をクリックし、そこの選択肢から『開く』 をクリックしてみてください。 (ここの選択肢で「読み取り専用で開く」を選択すると、次回起動時からは  自動で読み取り専用で開かれるようになってしまうので) ・・・上記で「読み取り専用」のメッセージが表示されなくなるようでしたら、 以下の操作は不要です。 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 上記操作を行ってもご質問のメッセージが表示される状態であれば、 そのファイルを開いた状態で、Ctrl+Gの同時押しをしてみて下さい。 『イミディエイトウィンドウ』が表示されるはずなので、そこに ?CurrentDb.Updatable と入力した上で、Enterキーを押してみてください。 (『イミディエイト ウィンドウ』が表示されない場合は、一旦Accessを閉じた後、  Shiftキーを押しっぱなしにした状態で同じファイルを開いて『起動時の設定』  を無効にしてから、再びCtrl+Gを押します:  それでも表示されない場合は、下記の【補足】を参照) ?Currentdb.Updatable False と表示されるようであれば、以下の方法で『コマンドボタン1』の有効/無効を 切り替えられます。 ※上記操作で「True」が表示される場合は、以下の対応は無意味です(汗) 1)フォームCをデザインビューで開く 2)何もないところをダブルクリックするなどして、フォームのプロパティシートを開く 3)『イベント』タブの『開く時』にカーソルを移動し、右端の『...』(ビルダ)ボタンを  クリック 4)『ビルダの選択』ダイアログが開いた場合は、「コードビルダ」をダブルクリック 5)Visual Basic Editor(VBE)画面が開き、「Private Sub Form_Open(Cancel  As Integer)」と「End Sub」という行が表示されるので、その間の行に以下の  コードを記述  (同イベントに既にコードが記述されている場合は、他のコードに支障がなく、   また、確実に処理が行われる行に記述する必要があります):   Me!コマンドボタン1.Enabled = CurrentDb.Updatable 6)フォームを保存して閉じる ・・・以上です。 【補足】 Shiftキーを押しっぱなしにするタイミングは、「開く直前の状態から」です。  ・Access2002/2003で、「キャンセル/開く/詳細」の選択肢が表示される   場合は、『開く』をクリックするところから。  ・それ以外のバージョンで、Passwordが設定されている場合は、Password   を入力し終わった後、『OK』ボタンをクリックするところから。  ・上記以外の場合は、ファイルをダブルクリックするところなどから。 Shiftキーを押しっぱなしにしても、Ctrl+Gで『イミディエイト ウィンドウ』が表示 されない場合は、Shift起動が無効にされていますので、データベース作成者 に一旦解除してもらうか、上記の確認(「?CurrentDb.Updatable」で「False」 が表示されるか)をしてもらってください。

cuxxx
質問者

お礼

ご回答ありがとうございます。 無事に設定することができました。大変助かりました。 大感謝です。 ありがとうございました。

関連するQ&A

  • Access2003でフォームにあるコマンドボタンで更にフォームを開く

    Access2003でフォームにあるコマンドボタンで更にフォームを開くときのVBA記述で困っています。 Access2003で社員情報管理のデータベースを作成中です。 社員の情報を入力するにあたり、【基本情報】と【詳細情報】とでフォームを分けてあり、【詳細情報】を入力したい場合は、"基本情報フォーム"にあるコマンドボタンをクリックして"詳細情報フォーム"を開くようになっています。 この際、"基本情報フォーム"で開いている社員の【社員番号】を"詳細情報フォーム"の【社員番号】欄にも自動的に表示させるため、以下のようなVBAを記述しました。 Private Sub コマンドボタン_Click() DoCmd.OpenForm "詳細情報フォーム" Forms![詳細情報フォーム![社員番号].DefaultValue = Me![社員番号] End Sub 【社員番号】は7ケタの半角英数で、社員によって、数字だけの場合と、英数混じっている場合とがあります(データ型はテキスト型にしてあります)。 困っているのは、 1.上記を実行した際に、数字だけの社員番号は問題ないのですが、英数混じりの場合だと"社員番号"テキストボックスが「#Name?」という表示になってしまう 2."基本情報フォーム"のコマンドボタンをクリックして新規の"詳細情報フォーム"を開き(社員番号のみが反映され、他の項目は空欄の状態)、詳細情報を入力→保存したあと、別の社員番号で"基本情報フォーム"を開き、コマンドボタンで"詳細情報フォーム"を開くと、前に入力した社員の情報が出てきてしまう。 (つまり、"詳細情報フォーム"のもととなるテーブルに、1行でもレコードがあると、それが出てきてしまう。) 【詳細情報】は、 1.データを入力する社員としない社員とがいる 2.新規でレコードを作成する場合と、既存のレコードを上書きする場合とがある ので、もととなる"詳細情報テーブル"にその【社員番号の】レコードがなければ新規入力画面を、レコードがあればそのレコードを呼び出す形にしたいのですが、英数混じりの表示の件も含め、どうすれば、正しく表示されるか教えていただきたいです。 ぜひぜひよろしくお願いします。

  • アクセスフォームについて教えて下さい。

    アクセスフォームについて教えて下さい。 テーブル T_設備 設備管理No. 状態ID(フィールドプロパティ→コンボボックス) 分類ID(フィールドプロパティ→コンボボックス) 設備名 (その他項目あり) T_状態 ID  001  稼動中 002  停止中 T_分類 ID 001  専用機 002  マシニング T_設備、T_状態、T_分類はリレーションシップを組んでいます。 クエリ T_設備を元にクエリを作成 Q_設備 (全データを表示) 稼動中の設備を抽出 Q_稼働設備 停止中の設備を抽出 Q_停止設備 フォーム Q_稼働設備を元にフォームを作成 F_稼働設備一覧(表形式) Q_稼働設備を元にフォームを作成 F_稼働詳細(単票形式) 表形式のフォーム(F_稼働設備一覧)にコマンドボタン(コマンド1)を作成、 OPENFORMメソッドでクリックした行のデータを表示させるようにしました。 (単票形式のF_稼働詳細でデータの詳細を確認したい) Private Sub コマンド1_Click() DoCmd.OpenForm "F_設備詳細" Forms!F_設備詳細!設備管理No. = Forms!F_稼働設備一覧!設備管理No. End Sub しかし、コンボボックスの内容を変更(稼動中から停止中へ)し、フォームを閉じ、 再度F_稼働設備一覧を開くと、データがQ_停止設備へ移動しておらず、 コンボボックスも稼動中に戻ってしまっています。 コマンド1ボタンからではなく、直接F_設備詳細を開き、コンボボックスの停止中を 選択した場合は、データはQ_停止設備へ移動します。 OpenFormメソッドの記入に問題があるのでしょうか? 色々と試しましたが、解決できませんでした。 よろしくお願いいたします。   

  • Accessユーザーフォームでコマンドボタンのcaptionについてで

    Accessユーザーフォームでコマンドボタンのcaptionについてですが Aテーブルを基に表記式でフォームを作成し、コマンドボタンを配置します。 この際、コマンドボタンのcaptionをAテーブルのフィールド値を表示したいのですが 可能でしょうか? フォームを開く際に Private Sub フォーム_Load() Me!コマンド1.Caption = Me![フィールド1] End Sub とイベントを発生させましたが、全てのボタンのCaptionがAテーブル1行目、 フィールド1の値で表示されてしまいます。 Dlookupを使用しても結果か同じでしたので、 フォームをLoadした時のMe![フィールド1]の値がAテーブル1行目の値であり その値でCaptionが設定されていであろうことはなんとなくわかるのですが 何をどうすればいいか行き詰ってしまいました。 どんなやり方があるのかお教えください。

  • アクセスフォームのコマンドボタン複写がうまくいきません

    主キーはオートナンバーで、顧客は個人ごとに番号を決めて作成中です。これをフォーム上のコマンドボタンで複写しようとすると、顧客番号が1件のみであればいくらでも複写ができるのですが、2件目からは複写できずエラーとして関係のないテーブルが作られてしまいます。なぜ複写できないのかわかりません。初心者なのでよろしくです。

  • <ACCESS>フォームのコマンドボタンについて

    宜しくお願いします。 フォームを作成するとき、ツールボックスから「コマンドボタン」を選択し、貼り付けると、前はウィザードが表示され、このボタンをクリックするとレポート印刷するとか、色々なことをウィザードで簡単にできたのですが、それが表示されなくなりました。 どうすれば表示されるのでしょうか?

  • アクセスコマンドボタンで登録。

    アクセスのフォームで、コマンドボタンをクリックして、初めて登録ができるというのはどのようにすればいいのでしょうか?普通、登録画面といったら、テーブルを基にしてフォームを作成していいのでしょうか?それとも非連結にしてフォームからフォームへ登録という風にするものなのでしょうか?フォーム上のテキストボックスに一つでも文字を入力すると、×ボタンで消しても、データがテーブルに入っていってしまいます。これを防ぐことはできるのでしょうか?保存でもいいですし登録でもいいのですが、コマンドボタンを作成して、それをクリックして初めてテーブルにデータが入っていくという風にしたいのですが。どなたか分かる方居ましたらご教示ください。宜しくお願いします。

  • アクセス2003のフォーム上のコマンドボタンについて。

    アクセス2003のフォームで一覧を作っています。その中の1つをクリックすると詳細画面に移動させようとコマンドボタンをおいたのですが、下記のエラーが出ます。対処法を教えてください。 エラーの内容です↓ テーブル’業者登録’はほかのユーザーが排他的に開いているか、既にユーザーインターフェイスを介して開いているので、プログラムによって操作することはできません。 ACCESSのバージョンは2003です。 ’メンテナンス進捗’というフォーム上に一覧があり、それぞれに詳細ボタンを置き、その詳細ボタンをクリックするとそのIDに見合ったメンテナンスの画面を開きたいです。 主テーブルは‘メンテナンス‘で副テーブルには’機器登録’と’業者登録’があります。‘メンテナンス‘と’機器登録’は機器管理IDで結ばれ、と’機器登録’と’業者登録’は業者IDで結ばれています。このリレーションの仕方が悪いのでしょうか?分かりづらくて申し訳ありません。

  • ACCESSのフォームだけを起動する方法

    ACCESS2000のVBAにて、管理システムのようなものを作成しました。  このままクライアントに渡すと、新規にテーブルを作ったり、新規にクエリを作成したりと、せっかくのデータベース、レポートがぐちゃぐちゃになりそうな気がします。  そこで、おききしたいことがあります。   ・フォームだけを表示できないでしょうか。    ※ACCESS起動後、フォームだけが起動する。    その他、メニューは表示させない。    (テーブルからのデータ入力、フィールド追加、クエリ作成をできないようにする)    "F11"キーでのメニュー表示も無効にする。 データベースは、SQLからテーブルリンクしております。 どうぞよろしくお願い致します。

  • Accessで作成した登録ボタン

    Access2003で営業管理システムを作成しております。 フォームで色々な情報を入力する画面を作成したのですが、 登録ボタン(コマンドボタン)をクリックした際、 入力した情報をデータベースに反映させるにはどうしたらよいのでしょうか? マクロの組み方やクエリの作成の仕方など まだまだわっからないことだらけですので ご指導頂けたらと思います。 よろしくお願いいたします。

  • ACCESS フォームで、ボタンの形を変えたい

    ACCESS 2003のフォームで、コマンドボタンの形を変えたいのです。 新規フォームでボタンを作ると、角の丸いボタンになるのですが、 使用中のデータベースのボタンは角のとがったボタン(単なる長方形)に影が付いているものなので、そちらに合わせたいのです。 どのようにすれば、コマンドボタンの形を変えられますか。

専門家に質問してみよう