Accessで1つのフォームを作成して、すべての内容を見せてレコードの編集ができるようにしています。
でも、そのフォームを開く時に制限を付けたいということあります。たとえば、管理者以外には、一部の情報に絞って読み取り専用で見せたいし、出力ボタンなどは非表示にしたいという場合です。
作成済みのフォームをコピーして、参照用のフォームを別途作成し、ボタンでそれぞれのフォームを開くようにしてもいいのですが、同じフォームでも開く時にマクロで制御することができます。
オブジェクトを増やしたくない、データベースのサイズを気にするような場合はお勧めです。
参考ここでは、ウィンドウは重ねて表示する設定にしています。
-
[タブ付きドキュメント]と[ウィンドウを重ねて表示する]の違い
Access2007以降、オブジェクトを表示すると、タブ付きウィンドウで表示されるようになっています。 昔からAccessを使用している方に ...
この記事の目次
テーブルの確認
ここでは、以下のような顧客情報の一覧を作成しています。
データシートビューです。
デザインビューは、以下のようになっています。
クエリの作成
[コース]フィールドの中で[一般]コースのレコードのみを表示するクエリを作成します。
デザイングリッドにテーブル[T_顧客]のすべてのフィールドを表示して、[コース]の[抽出条件]に["一般"]と入力します。
データシートビューで確認すると、以下のように[一般]コースのレコードのみが表示されます。
作成したクエリは、[Q_一般]という名前で保存します。
フォームの作成
テーブル[T_顧客]を基に分割フォームを作成して、[F_顧客一覧]という名前を付けて保存します。
フォーム[F_顧客]のフォームビューは、以下のようになっています。
参考分割フォームの作成については、以下の記事で解説しています。
-
分割フォーム(単票フォームとデータシートを同時に表示)の作成と使い方
Accessでは、画面を2つに分け[単票フォーム]と[データシート]を同時に表示できる[分割フォーム]というのがあります。Access200 ...
Excelへ出力するためのボタンを設置
Excelへ出力するボタンを設置します。
フォーム[F_顧客一覧]をデザインビューで表示します。
[デザイン]タブの[コントロール]グループにある[ボタン]をクリックして、フォームヘッダーでドラッグしてボタンを挿入します。
[コマンドボタンウィザード]が表示されたら、[キャンセル]ボタンをクリックして閉じます。
コマンドボタンのプロパティを開いて、名前や標題を修正します。コマンドボタンの名前は、[その他]タブで修正します。
ここでは[出力ボタン]としています。
[イベント]タブの[クリック時]の[ビルダー選択]ボタン[...]をクリックします。
[ビルダーの選択]ダイアログボックスが表示されますので、[マクロビルダー]を選択して[OK]ボタンをクリックします。
[マクロツール]が表示されます。アクション選択の▼ボタンをクリックして、[書式設定を保存したままエクスポート]を選択します。最後から5番目にあります。
そして、以下のように設定します。
[閉じる]ボタンをクリックして閉じます。
メッセージウィンドウが表示されたら、[はい]をクリックします。
プロパティには、[埋め込みマクロ]と表示されます。
参考Excelへ出力するボタンの作成する方法は、他にもあります。以下の記事で解説しています。
-
Excelへ出力(エクスポート)するコマンドボタンの作成
Access2010でテーブルやクエリをExcelへ出力するマクロを作成して、それをコマンドボタンに登録する方法です。 独立マクロを作成して ...
パスワードを入力するフォームを作成
編集可能なフォームは、パスワードを知っている人しか開けないようにしたいと思います。
テキストボックスに[定型入力ウィザード」でパスワードを設定
空白のフォームを作成して、テキストボックスを1つ挿入します。
そして、定型入力ウィザードを使って[パスワード]を設定します。
テキストボックスのプロパティを表示して、[データ]タブの[定型入力]にある[...]ボタンをクリックします。
[定型入力ウィザード]が表示されますので、[パスワード]を選択します。
プロパティには、[パスワード]と表示されます。
参考定型入力ウィザードについては、以下の記事で解説しています。
-
定型入力ウィザードを使用して簡単に入力パターンを設定
Accessでは、[定型入力]を使用して入力パターンを設定できます。 フィールドのデータ型が[数値型][通貨型][短いテキスト][日付/時刻 ...
[OK] ボタンと[キャンセル]ボタンを設置
[OK] ボタンと[キャンセル]ボタンを設置します。
そして、それぞれのボタンは埋め込みマクロで以下のように設定します。
[OK]ボタンの埋め込めマクロです。
テキストボックス[パスワード]へ入力した値が[1234]であれば、フォーム[F_顧客一覧]を開いて、違うなら[パスワードが違います]というメッセージウィンドウを表示しますという内容になります。
[キャンセル]ボタンの埋め込みマクロです。
[オブジェクトの種類]の指定を省略した場合は、アクティブウィンドウが閉じられます。
パスワードを入力したら、フォームが開くかどうかの動作を確認します。また、パスワードを間違えた場合の動作も確認しておきます。
フォームに名前を付けて保存します。ここでは[F_パスワード]とします。
参考パスワード入力フォームについては、以下の記事で解説しています。詳細は、以下の記事を参照してください。
-
パスワード入力フォームを作成してパスワードが合えば開くようにする
Accessでパスワード入力フォームを作成して、パスワードを入力してパスワードが合えばフォームを開くようにする方法です。 注意ここでは、Ac ...
メニューフォームの作成
参照用のフォームを開くためのボタンと管理者用のボタンを作成します。
管理者用のボタンをクリックすると、フォーム[F_パスワード]が開くように設定します。
ここでは、[顧客一覧を参照]と、[管理者用]という標題を付けています。
管理者用ボタンをクリックすると、フォーム[F_パスワード]が開くように設定します。
[管理者用]ボタンの埋め込みマクロです。
埋め込みマクロでフォームに制限をかける
[顧客一覧を参照]ボタンをクリックしたら、フォーム[F_顧客一覧]を開くようにするのですが、制限をかけたフォームにします。
マクロで以下の4つの内容で制限をかけます。
- フォームのデータモードは編集ができないように[読み取り専用]にします。
- フォームのレコードソースを[Q_一般]にします。
- [Excelへ出力]ボタンを非表示にします。
- フォームヘッダーのタイトルを変更します。
[顧客一覧を参照]ボタンのプロパティを表示して、マクロツールを表示します。
[F_顧客一覧]を[読み取り専用]で開く
まず、[フォームを開く]アクションを選択します。
[フォーム名]は、[F_顧客一覧]を選択します。
[データモード]は、▼ボタンをクリックして[読み取り専用]を選択します。
フォームのレコードソースを変更
[デザイン]タブの[表示/非表示]グループにある[すべてのアクションを表示]をクリックします。
[新しいアクションの追加]の▼ボタンをクリックして、[値の代入]をクリックします。最後から4番目にあります。
[値の代入]のポップヒントには、以下のように記されています。
値の代入
フォーム、フォームのデータシート、またはレポートにある、コントロール、フィールド、またはプロパティに値を設定します。
アイテムのテキストボックスには、以下のように入力します。
[式]にはクエリの名前を入力します。クエリ名は、ダブルクォーテーションで括ります。
"Q_一般"
参考これは、フォーム[F_顧客一覧]のプロパティで[レコードソース]をクエリ[Q_一般]に変更するということです。
[F_顧客一覧]の[出力ボタン]を非表示に変更
フォーム[F_顧客一覧]のフォームヘッダーに設置している[出力ボタン]を非表示にします。
同じようなマクロアクションを追加する場合は、コピー&ペーストすると効率的です。
-
マクロツールで既存のアクションをコピーして活用(再利用)するには
Accessでは多くのマクロアクションが使用できます。 しかし、毎回アクションを選択して入力するのは面倒ですね。 マクロアクションは、コピー ...
[アイテム]のテキストボックスに以下のように入力します。
[式]には、以下のように入力します。
false
参考入力していると、入力候補一覧(補助メニュー)が表示されますので、一覧から選択していくとミスを軽減できると思います。
この値の代入の設定は、[出力ボタン]のプロパティの[可視]で[いいえ]を設定したものと同じになります。
フォームヘッダーのタイトルを変更
フォーム[F_顧客一覧]のフォームヘッダーのタイトルを変更します。
[アクションの追加]で今度は、以下のように設定します。
[値の代入]を選択して、[アイテム]には、以下のように入力します。
[式]には、変更したい文字列入力します。ここでは、以下のように入力します。ダブルクォーテーションで括ります。
"顧客一覧・一般コースの参照"
参考この設定は、フォーム[F_顧客一覧]のフォームヘッダーの[標題]を変更するということです。
タイトルのラベルの大きさは、少し広めにしておく必要があります。
上記の設定が終わったら、マクロツールを閉じて、フォームも上書き保存します。
ボタンのプロパティ[イベント]タブの[クリック時]には、[埋め込みマクロ]と表示されています。
注意埋め込みマクロで設定した後、メニューフォームのボタンをクリックして[F_顧客一覧]を表示して、[F_顧客一覧]フォームの編集はしないように気を付けてください。
マクロでプロパティの値を書き換えているので、上書き保存すると、プロパティの値まで上書きされてしまいます。
[F_顧客一覧]フォームを編集するときは、単独で開いてから行うようにしたほうが無難です。
メニューフォームのボタンをクリックした時の動作を確認
フォーム[F_メニュー]をフォームビューで開いて、動作を確認します。
[顧客一覧を参照]ボタンをクリックすると、以下のようにフォーム[顧客一覧]が表示されますが、読み取り専用となっていて編集はできません。
コースは[一般]のみが表示されています。
[管理者用]ボタンをクリックすると、[パスワード入力]フォームが表示されます。
そして、正しいパスワードを入力して、[OK]ボタンをクリックすると、編集可能なフォームが表示されます。[VIP]コースのレコードも表示されます。そして、[Excel]へ出力するためのボタンも表示されます。
参考レコードの抽出は、マクロの[フォームを開く]アクションの[Where条件式]に以下のように設定することもできますが、
この場合は、フィルターが適用された状態で表示されますので、フィルターボタンなどを使用して、[一般]以外のレコードも表示できてしまいます。
抽出適用外のレコードが見えてもよい場合、見えては困る場合など、状況に合わせて設定してください。
[Where条件式]で抽出しても構わない場合は、クエリを作成する必要はありません。
[Where条件式]での設定は、以下の記事で解説しています。
-
テキストボックスの文字列でレコードを抽出(マクロビルダーで設定)
Accessでフォームのテキストボックスに入力した文字列でレコードを抽出する方法です。 ここでは、テーブルを基にウィザードを使って表形式のフ ...
-
データシートの[ID]をクリックして単票(詳細)フォームを開く
フォームのデータシートビューの[ID]番号をクリックしたら、その[ID]の単票フォームを開く方法です。 データシートのフォーム名は[F_デー ...
以下の記事では、レポートのボタンで印刷日時の表示/非表示を切り替える方法を解説しています。
-
コマンドボタンでコントロールの表示と非表示を切り替える
Accessではフォームにボタンを設置して、クリックしてフォームやレポートの表示を実行することが多いです。 2個のボタンを設置して同じレポー ...
また、レポートのレコードソースをオプションボタンの値によって切り替える方法も解説しています。まったく同じレイアウトのレポートであれば、レコードソースを変更するだけなので、レポートは1つで済みます。
-
フォームのオプションボタンでレポートのレコードソースを切り替え
1つのテーブルから、クエリを作成してデータを抽出することはよくあります。 そのクエリをもとにレポートを作成するとき、レポートのレコードソース ...