製品マスタの詳細画面です。製品リストの詳細ボタンから起動し、図番の基本情報を参照できます。成形課・材料課・加工課・印刷課・品証課・営業課・生産管理の各課情報はタグ風ボタンで切り替えて表示します。
基本情報画面の構成
製品リストの詳細ボタンから起動します。基本情報の参照・編集・新規登録・作業工程と工程担当の管理をこの画面から一括して操作できます。リスト画面は閉じずに本フォームが開く設計のため、リストに戻る操作もスムーズです。
製品詳細フォーム基本情報 フォームビュー(管理者)
非管理者が開いた場合のフォームフッター表示
画面の概要
| 項目 | 内容 |
|---|---|
| 図番 | 選択行の図番を表示 |
| 取引先 | 取引先コードと取引先名を表示 |
| 品名 | 製品の品名を表示 |
| 単価 | 売値を表示(小数点以下2桁) |
| 図番ID | 図番IDを表示。各課フォームへのデータ引き渡しに使用 |
| 重要事項 | 図番に対する重要事項を表示 |
| 図番メモ | 図番に対するメモを表示 |
| 登録日 | 製品マスタへの登録日を表示 |
| タグ風ボタン | 基本情報・成形課・材料課・加工課・印刷課・品証課・営業課・生産管理を切り替え。押すと対応するフォームが開く |
| 在庫数 | 最新の在庫数を表示 |
| 在庫更新日 | 最新の在庫更新日を表示 |
| 在庫メモ | 在庫に関するメモを表示 |
| 作業工程リスト | 工程1〜16の作業工程と工程担当を一覧表示 |
| 仕入先情報 | 仕入先情報のサブフォームを表示 |
| 受注履歴 | 受注履歴のサブフォームと件数を表示 |
| 事象履歴 | 事象履歴のサブフォームを表示 |
| 新規登録ボタン | 新規登録フォームを開く。管理者のみ使用可能 |
| 編集ボタン | 編集フォームを開く。管理者のみ使用可能 |
| 作業工程ボタン | 作業工程の追加・管理ポップアップを開く。管理者のみ使用可能 |
| 工程担当ボタン | 工程担当の追加・管理ポップアップを開く。管理者のみ使用可能 |
| 事象履歴登録ボタン | 事象履歴の登録フォームを開く |
| 閉じるボタン | フォームを閉じる |
デザインビューで見る仕組み
フォームの構造とプロパティ設定を確認します。
製品詳細フォーム基本情報 デザインビュー全体
デザインビューの概要
| 項目 | 設定内容 |
|---|---|
| フォーム名 | F10製品 |
| レコードソース | 空欄(非連結フォーム) |
| ヘッダー部 | 図番・取引先・品名・単価・図番ID・重要事項・図番メモ・登録日を配置 |
| タグ風ボタン行 | 基本情報〜生産管理の8ボタンを横並びで配置 |
| 詳細部左 | 在庫情報エリア・作業工程リスト(1〜16行)を配置 |
| 詳細部中央 | 仕入先情報サブフォーム・受注履歴サブフォームを配置 |
| 詳細部右 | 事象履歴サブフォームを配置 |
| フォームフッター | 新規登録・編集・作業工程・工程担当・事象履歴登録・閉じるボタンを配置 |
タグ風ボタンの設計
なぜタグではなくボタンなのか
タグ風ボタン
一見するとタブ切り替えのように見えますが、実際はコマンドボタンで構成されています。タブコントロールを使わない理由は、図番1件が持つ情報量にあります。
基本情報はT10製品Mに収めていますが、成形課・材料課・加工課・印刷課・品証課・生産管理はそれぞれ専用のテーブル(T11〜T19)に分離しています。1つのテーブルに全課の情報を詰め込むとDLookupで呼び出す際の処理時間が長くなるため、課ごとにテーブルを分けて必要な情報だけを呼び出す設計にしています。
各ボタンと対応テーブル
| ボタン名 | 対応フォーム | 対応テーブル |
|---|---|---|
| 基本情報 | F10製品 | T10製品M |
| 成形課 | F11製品成形 | T11製品成形 |
| 材料課 | F11製品材料 | T11製品成形(成形課と同一) |
| 加工課 | F12製品加工 | T12製品加工 |
| 印刷課 | F14製品印刷 | T14製品印刷 |
| 品証課 | F13製品品証 | T13製品品証 |
| 営業課 | F10製品営業 | T10製品M(基本情報と同一) |
| 生産管理 | F19製品生産管理 | T19製品生産管理 |
図番IDをメインメニューに格納する設計
各課フォームは非連結フォームのため、フォームを閉じると同時にそのフォームが保持していたデータは失われます。成形課ボタンを押すと基本情報フォームを閉じて成形課フォームを開く設計のため、このままでは「今どの図番を見ていたか」という情報が消えてしまいます。
この問題を解決するために、リストで図番を選択した時点で図番IDをメインメニュー(F00メインメニュー)の非表示コントロールに格納しておく設計を採用しています。各課フォームのDLookupは [Forms]![F00メインメニュー]![図番ID] を条件として参照するため、どの課フォームを開いても同じ図番IDを参照できます。
図番IDの流れ
リストで図番を選択
↓
メインメニューの非表示「図番ID」に格納
↓
基本情報フォームを閉じる
↓
成形課フォームを開く
↓
DLookUp("フィールド","T11製品成形","[図番ID]=[Forms]![F00メインメニュー]![図番ID]")
で最新データを取得して表示
メインメニューはログアウトするまで常時起動しているため、どの課フォームを開いても図番IDを見失いません。タグ風ボタンで課を切り替えるたびにフォームを開き直しても、常にメインメニューの図番IDを参照することで同じ図番のデータを表示し続けられます。
またこのシステムは複数PCで同時に使用されますが、非連結フォームの設計上メインメニューに格納された図番IDは各PCのAccess上にのみ存在します。あるPCで図番Aを開いていても、別のPCで図番Bを開いている操作とは完全に独立しており、互いに干渉しません。サーバー上のテーブルデータは共有されていますが、フォームに表示するための図番IDの管理は各PCが独立して行う設計です。
フォームの作り方とボタン位置の原則
各課フォームはF10製品(基本情報)のフォームをコピーして作成します。ボタンの位置を基本情報と完全に一致させることがこの設計の絶対条件です。
ボタン位置がわずかでもずれると、ボタンを押して開いた課フォームと基本情報フォームの間で見た目のズレが生じます。「タブを切り替えた」ように見せるにはフォーム全体のレイアウトとボタン配置が完全に一致している必要があるため、コピー後にボタン位置を変更してはいけません。
作成手順
- F10製品をコピーして新しいフォームを作成する
- フォーム名を課に合わせて変更する(例:F11製品成形)
- 詳細部のコントロールを課専用のフィールドに差し替える
- タグ風ボタンの位置は絶対に変更しない
- ヘッダー部(図番・品名・取引先・単価など)も共通レイアウトを維持する
- フッターのボタン構成を課に合わせて調整する
- レコードソースは空欄(非連結)のまま維持する
各コントロールの設定
タグ風ボタン(課切り替え)
各課ボタンを押すと現在のフォームを閉じて対応する課フォームを開きます。開いた課フォームは基本情報と同一レイアウトのため、タブ切り替えのように見えます。課フォームを開く際に図番IDを引き渡し、DLookupで対応テーブルから各フィールドの値を呼び出します。
また課フォームを開く際、リストサブフォームの各課チェックボックスの値を参照して、対応する課ボタンのEnabledをTrueに設定します。これにより担当課のボタンだけが有効になる設計です。
サブマクロ:成形開く
- サブマクロのテキスト表示
-
サブマクロ:成形開く ウィンドウを閉じる(, , 確認) フォームを開く(F11製品成形, フォームビュー, , , , 標準) コントロールの移動(基本情報) 値の代入 アイテム = [Forms]![F11製品成形]![図番ID] 式 = [Forms]![F00メインメニュー]![図番ID] 値の代入 アイテム = [Forms]![F11製品成形]![親図番ID] 式 = DLookUp("親図番ID","T10製品M","[図番ID]=[Forms]![F11製品成形]![図番ID]") If [Forms]![F10製品リスト]![F10製品リストサブ]![成形課]=True Then (各課ボタンのEnabled設定) If 文の最後 …(加工課・印刷課・営業課・品証課も同様) If [Forms]![F00メインメニュー]![権限]=2 Or [Forms]![F00メインメニュー]![権限]=3 Then 値の代入([Forms]![F11製品成形]![登録].[Enabled], True) If [Forms]![F00メインメニュー]![権限]=2 Or [Forms]![F00メインメニュー]![権限]=3 Then 値の代入([Forms]![F11製品成形]![編集].[Enabled], True) If [Forms]![F00メインメニュー]![権限]=2 Or [Forms]![F00メインメニュー]![権限]=3 Then 値の代入([Forms]![F11製品成形]![金型マスタ登録].[Enabled], True) If 文の最後 If 文の最後 If 文の最後 マクロの実行(M10製品.成形表示, , ) 再クエリ() マクロの中止 サブマクロの最後
マクロの概要
| ステップ | 処理 | 内容 |
|---|---|---|
| 1 | ウィンドウを閉じる | 現在のフォームを確認なしで閉じる |
| 2 | フォームを開く | F11製品成形をフォームビューで開く |
| 3 | コントロールの移動 | 基本情報にフォーカスを移動 |
| 4 | 値の代入 | 図番IDをメインメニューの図番IDから転写 |
| 5 | 値の代入 | 親図番IDをDLookupで取得 |
| 6〜10 | If 条件分岐 | 各課チェックがTrueの場合に対応ボタンをEnabledに設定 |
| 11 | If 条件分岐 | 権限=2 または 3 の場合に登録・編集・金型マスタ登録ボタンをEnabledに設定 |
| 12 | マクロの実行 | M10製品.成形表示を実行してDLookupで各フィールドを転写(成形課ページで紹介) |
| 13 | 再クエリ | フォームを更新 |
マクロの設置場所
| 項目 | 内容 |
|---|---|
| フォーム | F10製品 |
| コントロール | 成形課ボタン |
| イベント | クリック時 |
| 呼び出し元 | M10製品 > サブマクロ:成形開く |
他の課ボタンも同じ構成です。対応フォーム・権限コード・表示マクロが課ごとに異なります。
各課ボタンのマクロ設置場所一覧
| ボタン名 | 呼び出し元サブマクロ | 対応権限 |
|---|---|---|
| 成形課 | M10製品 > 成形開く | 権限=2 または 3 |
| 材料課 | M10製品 > 材料開く | 権限=2 または 3 |
| 加工課 | M10製品 > 加工開く | 権限=2 または 4 |
| 印刷課 | M10製品 > 印刷開く | 権限=2 または 5 |
| 品証課 | M10製品 > 品証開く | 権限=2 または 6 または 9 |
| 営業課 | M10製品 > 営業開く | 権限チェックなし |
| 生産管理 | M10製品 > 生産管理開く | 権限チェックなし |
新規登録ボタン・編集ボタン
新規登録ボタンは新規登録フォームを、編集ボタンは編集フォームを開きます。どちらも管理者(権限=2)のみ使用可能です。製品マスタ開くマクロの中で権限チェックを行い、条件を満たす場合のみEnabledをTrueに設定します。
サブマクロ:新規開く
マクロの概要
| 処理 | 内容 |
|---|---|
| フォームを開く | F10製品新規をフォームビューで開く |
マクロの設置場所
| 項目 | 内容 |
|---|---|
| フォーム | F10製品 |
| コントロール | 新規登録ボタン |
| イベント | クリック時 |
| 呼び出し元 | M10製品新規 > サブマクロ:新規開く |
◆リンクカード:製品マスタ新規登録ページ
サブマクロ:編集開く
- サブマクロのテキスト表示
-
サブマクロ:編集開く フォームを開く(F10製品編集, フォームビュー, , , , 標準) 値の代入 アイテム = [Forms]![F10製品編集]![図番ID] 式 = [Forms]![F00メインメニュー]![図番ID] 値の代入 アイテム = [Forms]![F10製品編集]![図番] 式 = DLookUp("図番","T10製品M","[図番ID]=[Forms]![F00メインメニュー]![図番ID]") 値の代入 アイテム = [Forms]![F10製品編集]![取引先コード] 式 = DLookUp("取引先コード","T10製品M","[図番ID]=[Forms]![F00メインメニュー]![図番ID]") 値の代入 アイテム = [Forms]![F10製品編集]![品名] 式 = DLookUp("品名","T10製品M","[図番ID]=[Forms]![F00メインメニュー]![図番ID]") 値の代入 アイテム = [Forms]![F10製品編集]![単価] 式 = DLookUp("単価","T10製品M","[図番ID]=[Forms]![F00メインメニュー]![図番ID]") …(各課フラグ・工程1〜16・工程作業者1〜16・在庫数・在庫更新日・ 登録者コード・業種コード・工程群コード・納期設定まで全フィールドをDLookupで転写) 再クエリ() マクロの中止 サブマクロの最後
マクロの概要
| ステップ | 処理 | 内容 |
|---|---|---|
| 1 | フォームを開く | F10製品編集をフォームビューで開く |
| 2 | 値の代入 | 図番IDをメインメニューの図番IDから転写 |
| 3〜 | 値の代入 | 図番・取引先コード・品名・単価・各課フラグ・工程1〜16・工程作業者1〜16・在庫数・在庫更新日など全フィールドをDLookupで転写 |
| 最終 | 再クエリ | フォームを更新 |
マクロの設置場所
| 項目 | 内容 |
|---|---|
| フォーム | F10製品 |
| コントロール | 編集ボタン |
| イベント | クリック時 |
| 呼び出し元 | M10製品編集 > サブマクロ:編集開く |
◆リンクカード:製品マスタ編集ページ
作業工程ボタン
作業工程はコードと名称をマスタとして管理しており、工程が増えるたびに追加していく運用です。どちらもポップアップフォームで管理します。管理者(権限=2)のみ使用可能で、製品マスタ開くマクロの中でEnabledをTrueに設定します。
作業工程名追加のポップアップフォーム
工程名追加ポップアップフォーム
| フォームビュー | デザインビュー |
![]() |
![]() |
既存の工程名一覧をリスト表示し、上部の入力欄から新規登録できます。コード・作業工程名の2列構成で並び替えボタン付きです。
サブマクロ:工程名開く
◆スクショ:製品詳細マクロ工程名開く サブマクロ画面
マクロの概要
| 処理 | 内容 |
|---|---|
| フォームを開く | F10工程名をフォームビューで開く |
マクロの設置場所
| 項目 | 内容 |
|---|---|
| フォーム | F10製品 |
| コントロール | 作業工程ボタン |
| イベント | クリック時 |
| 呼び出し元 | M10製品 > サブマクロ:工程名開く |
作業工程追加フォームの新規登録ボタン
工程名登録入力欄に工程名を入力して新規登録ボタンを押すと、未記入チェック・確認メッセージ・追加クエリ実行の順で処理されます。
追加クエリ:Q10工程名追加
クエリの概要
| 項目 | 内容 |
|---|---|
| クエリ名 | Q10工程名追加 |
| 種別 | 追加クエリ |
| レコードの追加先 | 工程名テーブルの工程名フィールド |
Q10工程名追加 フィールド構成
| フィールド | レコードの追加 | 内容 |
|---|---|---|
| 式1:[Forms]![F10工程名]![工程名] | 工程名 | フォームの入力欄から工程名を取得して追加 |
サブマクロ:工程名登録
- サブマクロのテキスト表示
-
サブマクロ:工程名登録 If IsNull([工程名]) Then メッセージボックス(登録する工程名が入力されていません, はい, 警告, 未記入) コントロールの移動(工程名) マクロの中止 If 文の最後 警告音 If MsgBox("新規工程名を登録してよろしいですか?",4+32,"確認")=6 Then メッセージの設定(いいえ) クエリを開く(Q10工程名追加, データシート, 編集) メッセージボックス(新規工程名を登録しました, はい, なし, 登録済) ウィンドウを閉じる オブジェクトの種類 フォーム オブジェクト名 F10工程名 オブジェクトの保存 確認 再クエリ() マクロの中止 Else メッセージボックス(処理を中止します, はい, なし, 中止) マクロの中止 If 文の最後 サブマクロの最後
マクロの概要
| ステップ | 処理 | 内容 |
|---|---|---|
| 1 | If 条件分岐 | 工程名が未入力の場合に警告メッセージを表示してマクロを中止 |
| 2 | 警告音 | 確認前に警告音を鳴らす |
| 3 | If 条件分岐 | 確認メッセージで「はい」を選択した場合のみ次の処理を実行 |
| 4 | クエリを開く | Q10工程名追加を実行して工程名を追加 |
| 5 | メッセージボックス | 登録完了メッセージを表示 |
| 6 | ウィンドウを閉じる | F10工程名フォームを確認付きで閉じる |
| 7 | 再クエリ | フォームを更新 |
| 8 | Else | 「いいえ」の場合は中止メッセージを表示 |
マクロの設置場所
| 項目 | 内容 |
|---|---|
| フォーム | F10工程名 |
| コントロール | 新規登録ボタン |
| イベント | クリック時 |
| 呼び出し元 | M10製品 > サブマクロ:工程名登録 |
工程担当ボタン
工程担当はコードと名称をマスタとして管理しており、担当が増えるたびに追加していく運用です。どちらもポップアップフォームで管理します。管理者(権限=2)のみ使用可能で、製品マスタ開くマクロの中でEnabledをTrueに設定します。
工程担当追加のポップアップフォーム
工程担当追加ポップアップフォーム
| フォームビュー | デザインビュー |
![]() |
![]() |
既存の工程担当一覧をリスト表示し、上部の入力欄から新規登録できます。コード・工程担当・工程担当コードの3列構成で並び替えボタン付きです。
サブマクロ:工程担当開く
マクロの概要
| 処理 | 内容 |
|---|---|
| フォームを開く | F10工程担当をフォームビューで開く |
マクロの設置場所
| 項目 | 内容 |
|---|---|
| フォーム | F10製品 |
| コントロール | 工程担当ボタン |
| イベント | クリック時 |
| 呼び出し元 | M10製品 > サブマクロ:工程担当開く |
工程担当追加フォームの新規登録ボタン
工程担当登録入力欄に工程担当名とコードを入力して新規登録ボタンを押すと、未記入チェック・重複チェック・確認メッセージ・追加クエリ実行の順で処理されます。工程名と異なりコードの重複チェックが加わっています。
クエリ:Q10工程担当追加
クエリの概要
| 項目 | 内容 |
|---|---|
| クエリ名 | Q10工程担当追加 |
| 種別 | 追加クエリ |
| レコードの追加先 | T10工程担当テーブルの工程担当・IDフィールド |
Q10工程担当追加 フィールド構成
| フィールド | レコードの追加 | 内容 |
|---|---|---|
| 式1:[Forms]![F10工程担当]![工程担当] | 工程担当 | フォームの入力欄から工程担当名を取得して追加 |
| 式2:[Forms]![F10工程担当]![コード] | ID | フォームの入力欄からコードを取得してIDに追加 |
サブマクロ:工程担当登録
- サブマクロのテキスト表示
-
サブマクロ:工程担当登録 If IsNull([工程担当]) Then メッセージボックス(登録する工程担当が入力されていません, はい, 警告, 未記入) コントロールの移動(工程担当) マクロの中止 If 文の最後 If IsNull([コード]) Then メッセージボックス(登録する工程担当コードが入力されていません, はい, 警告, 未記入) コントロールの移動(コード) マクロの中止 If 文の最後 If DCount("ID","T10工程担当","[ID] = Forms![F10工程担当]![コード] ") <> 0 And DCount("ID","T10工程担当","[コード] = Forms![F10工程担当]![コード] ") Is Not Null Then メッセージボックス(登録しようとした工程担当コードは既に登録されています。コードを取り直してください。, はい, 警告, 重複) コントロールの移動(コード) マクロの中止 If 文の最後 警告音 If MsgBox("新規工程担当を登録してよろしいですか?",4+32,"確認")=6 Then メッセージの設定(いいえ) クエリを開く(Q10工程担当追加, データシート, 編集) メッセージボックス(新規工程担当を登録しました, はい, なし, 登録済) ウィンドウを閉じる(フォーム, F10工程担当, 確認) 再クエリ() マクロの中止 Else メッセージボックス(処理を中止します, はい, なし, 中止) マクロの中止 If 文の最後 サブマクロの最後
マクロの概要
| ステップ | 処理 | 内容 |
|---|---|---|
| 1 | If 条件分岐 | 工程担当名が未入力の場合に警告メッセージを表示してマクロを中止 |
| 2 | If 条件分岐 | コードが未入力の場合に警告メッセージを表示してマクロを中止 |
| 3 | If 条件分岐 | 同一コードが既に登録済みの場合に重複警告を表示してマクロを中止 |
| 4 | 警告音 | 確認前に警告音を鳴らす |
| 5 | If 条件分岐 | 確認メッセージで「はい」を選択した場合のみ次の処理を実行 |
| 6 | クエリを開く | Q10工程担当追加を実行して工程担当を追加 |
| 7 | メッセージボックス | 登録完了メッセージを表示 |
| 8 | ウィンドウを閉じる | F10工程担当フォームを確認付きで閉じる |
| 9 | 再クエリ | フォームを更新 |
| 10 | Else | 「いいえ」の場合は中止メッセージを表示 |
マクロの設置場所
| 項目 | 内容 |
|---|---|
| フォーム | F10工程担当 |
| コントロール | 新規登録ボタン |
| イベント | クリック時 |
| 呼び出し元 | M10製品 > サブマクロ:工程担当登録 |
事象履歴登録ボタン
フッターの「事象履歴登録」ボタンを押すと事象履歴登録フォーム(F10製品履歴)がポップアップで開きます。図番・登録者コードが自動転写された状態で起動するため、内容と登録日を入力するだけで登録できます。
事象履歴登録フォーム
| フォームビュー | デザインビュー |
![]() |
![]() |
フォーム下部に既存の履歴一覧サブフォームが埋め込まれており、過去の事象を確認しながら新規登録できます。「改訂履歴に表示」チェックボックスをオンにすると改訂履歴にも反映されます。
サブマクロ:履歴登録開く
- サブマクロのテキスト表示
-
サブマクロ:履歴登録開く If IsNull([図番]) Then メッセージボックス メッセージ 履歴を登録する図番が選択されていません 警告音 はい メッセージの種類 警告 メッセージタイトル 未選択 コントロールの移動(図番) マクロの中止 If 文の最後 フォームを開く(F10製品履歴, フォームビュー, , , , 標準) 値の代入 アイテム = [Forms]![F10製品履歴]![図番ID] 式 = [Forms]![F00メインメニュー]![図番ID] 値の代入 アイテム = [Forms]![F10製品履歴]![図番] 式 = [Forms]![F00メインメニュー]![図番] 値の代入 アイテム = [Forms]![F10製品履歴]![登録者コード] 式 = DLookUp("従業員コード","T01従業員M","[従業員コード]=[Forms]![F00メインメニュー]![従業員コード]") 再クエリ() マクロの中止 サブマクロの最後
マクロの概要
| ステップ | 処理 | 内容 |
|---|---|---|
| 1 | If 条件分岐 | 図番が未選択の場合に警告メッセージを表示してマクロを中止 |
| 2 | フォームを開く | F10製品履歴をフォームビューで開く |
| 3 | 値の代入 | 図番IDをメインメニューの図番IDから転写 |
| 4 | 値の代入 | 図番をメインメニューの図番から転写 |
| 5 | 値の代入 | 登録者コードをDLookupで従業員マスタから取得して転写 |
| 6 | 再クエリ | フォームを更新 |
マクロの設置場所
| 項目 | 内容 |
|---|---|
| フォーム | F10製品 |
| コントロール | 事象履歴登録ボタン |
| イベント | クリック時 |
| 呼び出し元 | M10製品 > サブマクロ:履歴登録開く |
登録ボタン
サブマクロ:履歴登録
- サブマクロのテキスト表示
-
サブマクロ:履歴登録 If IsNull([登録日]) Then メッセージボックス(登録日が入力されていません, はい, 警告, 未入力) コントロールの移動(登録日) マクロの中止 If 文の最後 If IsNull([登録者コード]) Then メッセージボックス(登録者が入力されていません, はい, 警告, 未入力) コントロールの移動(登録者コード) マクロの中止 If 文の最後 If IsNull([内容]) Then メッセージボックス(内容が入力されていません, はい, 警告, 未入力) コントロールの移動(内容) マクロの中止 If 文の最後 警告音 If MsgBox("製品履歴を登録してよろしいですか?",4+32,"確認")=6 Then メッセージの設定(いいえ) クエリを開く(Q10製品履歴追加, データシート, 編集) 再クエリ() If MsgBox("[ "+[Forms]![F10製品履歴]![図番]+" ] の製品履歴を追加しました。") Then If 文の最後 ウィンドウを閉じる(フォーム, F10製品履歴, 確認) 再クエリ() マクロの中止 Else メッセージボックス メッセージ 処理を中止しました 警告音 はい メッセージの種類 警告 メッセージタイトル 中止 マクロの中止 If 文の最後 サブマクロの最後
マクロの概要
| ステップ | 処理 | 内容 |
|---|---|---|
| 1 | If 条件分岐 | 登録日が未入力の場合に警告メッセージを表示してマクロを中止 |
| 2 | If 条件分岐 | 登録者が未入力の場合に警告メッセージを表示してマクロを中止 |
| 3 | If 条件分岐 | 内容が未入力の場合に警告メッセージを表示してマクロを中止 |
| 4 | 警告音 | 確認前に警告音を鳴らす |
| 5 | If 条件分岐 | 確認メッセージで「はい」を選択した場合のみ次の処理を実行 |
| 6 | クエリを開く | Q10製品履歴追加を実行してレコードを追加 |
| 7 | 再クエリ | フォームを更新 |
| 8 | メッセージボックス | 登録完了メッセージを図番名入りで表示 |
| 9 | ウィンドウを閉じる | F10製品履歴フォームを確認付きで閉じる |
| 10 | Else | 「いいえ」の場合は中止メッセージを表示 |
マクロの設置場所
| 項目 | 内容 |
|---|---|
| フォーム | F10製品履歴 |
| コントロール | 登録ボタン |
| イベント | クリック時 |
| 呼び出し元 | M10製品 > サブマクロ:履歴登録 |
クエリ:Q10製品履歴追加
クエリの概要
| 項目 | 内容 |
|---|---|
| クエリ名 | Q10製品履歴追加 |
| 種別 | 追加クエリ |
| 追加先テーブル | T10製品履歴 |
Q10製品履歴追加 フィールド構成
| フィールド | レコードの追加 | 内容 |
|---|---|---|
| [Forms]![F10製品履歴]![図番ID] | 図番ID | フォームの図番IDを追加 |
| [Forms]![F10製品履歴]![図番] | 図番 | フォームの図番を追加 |
| [Forms]![F10製品履歴]![登録日] | 登録日 | フォームの登録日を追加 |
| [Forms]![F10製品履歴]![登録者コード] | 登録者コード | フォームの登録者コードを追加 |
| [Forms]![F10製品履歴]![部署分類] | 部署分類 | フォームの部署分類を追加 |
| [Forms]![F10製品履歴]![内容] | 内容 | フォームの内容を追加 |
| [Forms]![F10製品履歴]![改訂履歴表示] | 改訂履歴表示 | フォームの改訂履歴表示フラグを追加 |
閉じるボタン
M99共通 閉じるマクロ
マクロの設置場所
| 項目 | 内容 |
|---|---|
| フォーム | F10製品 |
| コントロール | 閉じるボタン |
| イベント | クリック時 |
| 呼び出し元 | M99共通 > サブマクロ:閉じる |
フォームごとに同じ処理のマクロを個別に作ると、マクロの数が際限なく増えて管理が大変になります。M99共通マクロはどのフォームでも使い回せる処理をサブマクロとして一箇所に集約したものです。コントロール名を統一しておくことでフォームを問わず同じ[…]
サブフォームの構成
基本情報フォームには仕入先情報・受注履歴・事象履歴の3つのサブフォームが埋め込まれています。図番IDをキーに各テーブル・クエリと連動し、該当図番に紐づく情報を一画面で参照できます。
仕入先情報(F10製品M仕入先サブ)
この図番を製造する仕入先(自社工場含む)を一覧表示するサブフォームです。資材の仕入先ではなく製造工場の登録管理に使用します。図番IDと連動してT30仕入先製品Mテーブルから対象レコードを表示します。
仕入先情報サブフォーム デザインビュー
主なプロパティ設定
| プロパティ | 設定値 |
|---|---|
| フォーム名 | F10製品M仕入先サブ |
| レコードソース | Q10製品M仕入先サブ |
| 移動ボタン | いいえ |
| 追加の許可 | いいえ |
各コントロールの共通プロパティ
| プロパティ | 設定値 |
|---|---|
| フォントサイズ | 9 |
| 編集ロック | はい |
表示フィールド
| フィールド | 内容 |
|---|---|
| 略称 | 仕入先の略称(T05取引先Mから取得) |
| 仕入単価 | この仕入先への仕入単価 |
| 備考 | 備考 |
| 手配 | 手配フラグ(Yes/No) |
| 有効 | 有効フラグ(Yes/No) |
| 成形 | 成形工程フラグ(Yes/No) |
| 加工 | 加工工程フラグ(Yes/No) |
| 印刷 | 印刷工程フラグ(Yes/No) |
編集ボタンは現在使用不可に設定しています。仕入先データの編集機能は保留中のため、参照専用として運用しています。
IDコントロールと行色コントロール(非連結)は行色アクション用
Accessのフォームにおける「色」は、単なるデザイン要素ではありません。オペレーターが今どこにいて何をすべきかを直感的に伝えるための「重要なナビゲーション」だと考えています。 画面を開いた瞬間に「新規登録」か「編集」かを色で感じ取り、無[…]
受注履歴(F10製品M受注履歴サブ)
この図番に紐づく受注データを一覧表示するサブフォームです。図番IDをキーに受注マスタから対象レコードを取得し、件数と合わせて表示します。
受注履歴情報サブフォーム デザインビュー
主なプロパティ設定
| プロパティ | 設定値 |
|---|---|
| フォーム名 | F10製品M受注履歴サブ |
| レコードソース | Q10製品M受注履歴サブ |
| 移動ボタン | いいえ |
| 追加の許可 | いいえ |
表示フィールド
| フィールド | 内容 |
|---|---|
| 詳細ボタン | 受注管理の詳細フォームを開く |
| 手配番号 | 受注の手配番号 |
| 納期 | 納期 |
| 数量 | 受注数量 |
| 単価 | 受注単価 |
| 金額 | 受注金額 |
| 分納残数 | 分納残数 |
| 出荷状況 | 出荷状況 |
詳細ボタンを押すと受注管理カテゴリの編集画面に遷移します。受注・売上情報の詳細は受注管理ページで解説しています。
◆リンクカード:受注管理(URL未定)
条件付き書式の設定
出荷状況が “未納”・”分納中”・”完納”によって色目で視認出来るように条件付き書式の設定をしています。
設定フィールド:手配番号・納期・数量・単価・金額・分納残・出荷状況
事象履歴(F10製品基本履歴サブ)
この図番で発生した事象(不良・金型移動・金型入荷など)を日記的に記録するサブフォームです。製品マスタ専用の履歴テーブル(T10製品履歴)と連動しています。フッターの「事象履歴登録」ボタンから新規登録、サブフォーム行の「編集」ボタンから既存レコードの編集ができます。
事象履歴サブフォーム デザインビュー
主なプロパティ設定
| プロパティ | 設定値 |
|---|---|
| フォーム名 | F10製品基本履歴サブ |
| レコードソース | Q10製品基本履歴サブ |
| 移動ボタン | いいえ |
| 追加の許可 | いいえ |
表示フィールド
| フィールド | 内容 |
|---|---|
| 編集ボタン | 選択行を事象履歴編集フォームで開く |
| 登録日 | 事象の登録日 |
| 部署分類 | 登録した部署 |
| 内容 | 事象の内容 |
| 登録者 | 登録者の略称 |
編集ボタン
サブフォーム行の「編集」ボタンを押すと事象履歴編集フォームがポップアップで開きます。選択行のデータがDLookupで転写された状態で起動するため、修正箇所だけを編集して「編集更新」ボタンで確定します。黒系フォームは編集中のサインです。
事象履歴編集フォーム
| フォームビュー | デザインビュー |
![]() |
![]() |
サブマクロ:履歴編集開く
- サブマクロのテキスト表示
-
サブマクロ:履歴編集開く フォームを開く(F10製品履歴編集, フォームビュー, , , , 標準) 値の代入 アイテム = [Forms]![F10製品履歴編集]![ID] 式 = [Forms]![F10製品]![F10製品基本履歴サブ]![ID] 値の代入 アイテム = [Forms]![F10製品履歴編集]![図番ID] 式 = [Forms]![F00メインメニュー]![図番ID] 値の代入 アイテム = [Forms]![F10製品履歴編集]![図番] 式 = [Forms]![F00メインメニュー]![図番] 値の代入 アイテム = [Forms]![F10製品履歴編集]![内容] 式 = DLookUp("内容","T10製品履歴","[ID]=[Forms]![F10製品]![F10製品基本履歴サブ]![ID]") 値の代入 アイテム = [Forms]![F10製品履歴編集]![改訂履歴表示] 式 = DLookUp("改訂履歴表示","T10製品履歴","[ID]=[Forms]![F10製品]![F10製品基本履歴サブ]![ID]") 値の代入 アイテム = [Forms]![F10製品履歴編集]![登録日] 式 = DLookUp("登録日","T10製品履歴","[ID]=[Forms]![F10製品]![F10製品基本履歴サブ]![ID]") 値の代入 アイテム = [Forms]![F10製品履歴編集]![登録者コード] 式 = DLookUp("従業員コード","T01従業員M","[従業員コード]=[Forms]![F10製品]![F10製品基本履歴サブ]![登録者コード]") マクロの中止 サブマクロの最後
マクロの概要
| ステップ | 処理 | 内容 |
|---|---|---|
| 1 | フォームを開く | F10製品履歴編集をフォームビューで開く |
| 2 | 値の代入 | サブフォームの選択行IDを転写 |
| 3 | 値の代入 | 図番IDをメインメニューから転写 |
| 4 | 値の代入 | 図番をメインメニューから転写 |
| 5 | 値の代入 | 内容をDLookupでT10製品履歴から転写 |
| 6 | 値の代入 | 改訂履歴表示フラグをDLookupで転写 |
| 7 | 値の代入 | 登録日をDLookupで転写 |
| 8 | 値の代入 | 登録者コードをDLookupで転写 |
マクロの設置場所
| 項目 | 内容 |
|---|---|
| フォーム | F10製品基本履歴サブ |
| コントロール | 編集ボタン |
| イベント | クリック時 |
| 呼び出し元 | M10製品 > サブマクロ:履歴編集開く |
サブマクロ:履歴編集更新
- サブマクロのテキスト表示
-
サブマクロ:履歴編集更新 警告音 If MsgBox("訂正・編集したデータを更新してもよろしいですか?",4+32,"確認")=6 Then メッセージの設定(いいえ) クエリを開く(Q10製品履歴編集更新, データシート, 編集) メッセージボックス メッセージ 訂正・編集したデータを更新しました。 警告音 はい メッセージの種類 なし メッセージタイトル 完了 ウィンドウを閉じる(フォーム, F10製品履歴編集, 確認) 再クエリ() マクロの中止 Else メッセージボックス メッセージ 処理を中止します 警告音 はい メッセージの種類 なし メッセージタイトル 中止 マクロの中止 If 文の最後 サブマクロの最後
マクロの概要
| ステップ | 処理 | 内容 |
|---|---|---|
| 1 | 警告音 | 確認前に警告音を鳴らす |
| 2 | If 条件分岐 | 確認メッセージで「はい」を選択した場合のみ次の処理を実行 |
| 3 | クエリを開く | Q10製品履歴編集更新を実行してレコードを更新 |
| 4 | メッセージボックス | 更新完了メッセージを表示 |
| 5 | ウィンドウを閉じる | F10製品履歴編集フォームを確認付きで閉じる |
| 6 | 再クエリ | フォームを更新 |
| 7 | Else | 「いいえ」の場合は中止メッセージを表示 |
マクロの設置場所
| 項目 | 内容 |
|---|---|
| フォーム | F10製品履歴編集 |
| コントロール | 編集更新ボタン |
| イベント | クリック時 |
| 呼び出し元 | M10製品 > サブマクロ:履歴編集更新 |
クエリ:Q10製品履歴編集更新
クエリの概要
| 項目 | 内容 |
|---|---|
| クエリ名 | Q10製品履歴編集更新 |
| 種別 | 更新クエリ |
| 対象テーブル | T10製品履歴 |
Q10製品履歴編集更新 フィールド構成
| フィールド | テーブル | レコードの更新 | 抽出条件 | 内容 |
|---|---|---|---|---|
| 図番ID | T10製品履歴 | [Forms]![F10製品履歴編集]![図番ID] | 図番IDを更新 | |
| 登録日 | T10製品履歴 | [Forms]![F10製品履歴編集]![登録日] | 登録日を更新 | |
| 登録者コード | T10製品履歴 | [Forms]![F10製品履歴編集]![登録者コード] | 登録者コードを更新 | |
| 部署分類 | T10製品履歴 | [Forms]![F10製品履歴編集]![部署分類] | 部署分類を更新 | |
| 内容 | T10製品履歴 | [Forms]![F10製品履歴編集]![内容] | 内容を更新 | |
| 改訂履歴表示 | T10製品履歴 | [Forms]![F10製品履歴編集]![改訂履歴表示] | 改訂履歴表示フラグを更新 | |
| ID | T10製品履歴 | [Forms]![F10製品履歴編集]![ID] | IDで対象レコードを特定 |
XX課ごとに異なる編集権限
製品マスタの各課フォームは、課ごとに編集できる権限コードが異なります。管理者(権限=2)はすべての課を編集できますが、各課担当者は自分の課フォームだけを編集できる設計です。
権限と編集可能な課の対応
| 権限コード | 区分 | 編集できる課 |
|---|---|---|
| 2 | 管理者 | 全課 |
| 3 | 成形課担当 | 成形課・材料課 |
| 4 | 加工課担当 | 加工課 |
| 5 | 印刷課担当 | 印刷課 |
| 6 | 品証課担当 | 品証課 |
| 9 | 業務担当(内職担当) | 品証課 |
| — | 営業課・生産管理 | 権限チェックなし(全員編集可) |
この設計のポイントは権限チェックをフォームのプロパティではなくマクロで動的に処理している点です。課フォームを開くマクロの中でIf条件分岐を使い、該当する権限コードのときだけ登録・編集ボタンのEnabledをTrueに切り替えます。フォームを開いた瞬間にログインユーザーの権限が自動判定されるため、同じフォームを開いても権限によって操作できる範囲が変わります。
品証課は権限=6(品証課担当)と権限=9(業務担当)の2つが編集可能になっています。品証課と業務担当は扱う情報が重なる部分があるため同等の権限を付与していますが、他の画面では棲み分けが必要なため別コードで管理しています。コードを分けておくことで将来的な権限の分離にも対応できます。
材料課は成形課と同一テーブル(T11製品成形)を使用しているため、成形課担当(権限=3)が材料課フォームも編集できる設計になっています。テーブル設計と権限設計が連動した実務的な判断です。
まとめ
製品マスタ基本情報は図番1件が持つ膨大な情報を課ごとのテーブルに分離し、タグ風ボタンで切り替える設計が核になっています。DLookupの処理速度を維持するためのテーブル分割、レイアウトの統一感を保つためのフォームコピー方式、そして課ごとに異なる編集権限の動的制御が組み合わさることで、大量の情報を扱いながらも直感的に操作できる画面を実現しています。
本サイトではマクロを用いた構築手順を中心に紹介していますが、決してマクロを唯一の正解として推奨しているわけではありません。VBAが扱える環境であれば、より多彩で柔軟なプログラムが組めるVBAでの構築をむしろ推奨したいと考えています。
ここでマクロという選択肢を提示しているのは、VBAにハードルを感じている方への「もう一つの入り口」として、また将来的な後継者への引き継ぎ負荷を抑えるという実務上のメリットを考慮してのことです。設計の考え方の一つとして、状況に合わせて活用してください。