製品マスタ「基本情報」

製品マスタの詳細画面です。製品リストの詳細ボタンから起動し、図番の基本情報を参照できます。成形課・材料課・加工課・印刷課・品証課・営業課・生産管理の各課情報はタグ風ボタンで切り替えて表示します。

基本情報画面の構成

製品リストの詳細ボタンから起動します。基本情報の参照・編集・新規登録・作業工程と工程担当の管理をこの画面から一括して操作できます。リスト画面は閉じずに本フォームが開く設計のため、リストに戻る操作もスムーズです。

製品詳細フォーム基本情報 フォームビュー(管理者)

非管理者が開いた場合のフォームフッター表示


※ボタンが使用不可状態で表示される

画面の概要

項目 内容
図番 選択行の図番を表示
取引先 取引先コードと取引先名を表示
品名 製品の品名を表示
単価 売値を表示(小数点以下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製品(基本情報)のフォームをコピーして作成します。ボタンの位置を基本情報と完全に一致させることがこの設計の絶対条件です。

ボタン位置がわずかでもずれると、ボタンを押して開いた課フォームと基本情報フォームの間で見た目のズレが生じます。「タブを切り替えた」ように見せるにはフォーム全体のレイアウトとボタン配置が完全に一致している必要があるため、コピー後にボタン位置を変更してはいけません。

作成手順

  1. F10製品をコピーして新しいフォームを作成する
  2. フォーム名を課に合わせて変更する(例:F11製品成形)
  3. 詳細部のコントロールを課専用のフィールドに差し替える
  4. タグ風ボタンの位置は絶対に変更しない
  5. ヘッダー部(図番・品名・取引先・単価など)も共通レイアウトを維持する
  6. フッターのボタン構成を課に合わせて調整する
  7. レコードソースは空欄(非連結)のまま維持する

各コントロールの設定

タグ風ボタン(課切り替え)

各課ボタンを押すと現在のフォームを閉じて対応する課フォームを開きます。開いた課フォームは基本情報と同一レイアウトのため、タブ切り替えのように見えます。課フォームを開く際に図番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製品新規をフォームビューで開く

マクロの設置場所

項目 内容
フォーム 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工程名をフォームビューで開く

マクロの設置場所

項目 内容
フォーム 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工程担当をフォームビューで開く

マクロの設置場所

項目 内容
フォーム 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にハードルを感じている方への「もう一つの入り口」として、また将来的な後継者への引き継ぎ負荷を抑えるという実務上のメリットを考慮してのことです。設計の考え方の一つとして、状況に合わせて活用してください。