資材マスタ「リスト」

資材マスタの一覧画面です。取引先・資材名・種別の3条件を組み合わせて絞り込みができます。各検索コンボボックスに入力するたびにリストがリアルタイムで絞り込まれる設計です。

資材リスト画面の構成

メインメニューから資材マスタボタンで起動する画面です。取引先・資材名・種別の3条件検索、詳細表示、新規登録までをこの1画面から一括して操作できます。製品マスタのリスト画面と操作感を揃えつつ、資材特有の「種別」検索を追加している点が特徴です。

フォームビュー

実際に起動した状態の画面です。上部に3つの検索コンボボックスと再検索ボタンが並び、下部のサブフォームに絞り込み結果が一覧表示されます。

資材リストフォーム フォームビュー

画面の概要

各コントロールの役割を一覧にまとめます。取引先・資材名・種別のいずれも部分一致(または完全一致)で絞り込みができ、詳細・新規登録ボタンから別フォームへ遷移します。

画面の概要

項目 内容
取引先検索 取引先名で絞り込むコンボボックス。部分一致で検索
資材名検索 資材名で絞り込むコンボボックス。部分一致で検索
種別検索 種別で絞り込むコンボボックス。完全一致で検索
再検索ボタン 全検索条件をNullにクリアして全件表示に戻す
リスト(サブフォーム) 取引先名・資材名・仕様・単価・備考・種別・関係部署・登録者・登録日・有効を1行で表示
詳細ボタン 選択行の資材情報を編集フォームで表示(資材マスタ 編集ページで解説)
新規登録ボタン 新規登録フォームを開く(資材マスタ 新規登録ページで解説)
件数 フッターに常時表示。絞り込み結果と連動して更新
有効チェックボックス 現状有効な資材かどうかを一覧上で確認できる
閉じるボタン フォームを閉じる

デザインビューで見る仕組み

フォームの内部構造を確認します。このフォームはレコードソースを持たない非連結フォームで、検索条件をサブフォームのクエリに渡すことで絞り込みを実現しています。デザインビューでその配置を見ていきます。

デザインビュー

フォームヘッダー・詳細部・フォームフッターの各セクションにコントロールがどう配置されているかを確認できます。

資材リストフォーム デザインビュー

デザインビューの概要

主要なプロパティ設定をまとめます。レコードソースが空欄になっている点が非連結フォームである証拠です。

デザインビューの概要

項目 設定内容
レコードソース 空欄(非連結フォーム)
検索エリア 取引先検索・資材名検索・種別検索の3つのコンボボックスを横並びで配置
サブフォーム F60資材リストサブを埋め込み
フォームフッター 件数・新規登録・閉じるボタンを配置

クエリ:Q60資材リストサブの構成

サブフォームのレコードソースになるクエリです。T60資材Mを軸に、T05取引先M・T02従業員所属部署・T01従業員M・T60資材種別の4テーブルを結合し、コードだけでなく取引先名・所属部署名・登録者名・種別名を一覧に表示できるようにしています。3条件はいずれも「入力があれば絞り込み、空欄なら全件表示」という同じ仕組みで統一されています。

クエリデザインビュー

5テーブルの結合関係とフィールドの抽出条件を確認できます。

Q60資材リストサブ クエリデザインビュー

クエリの概要

クエリの基本情報をまとめます。5テーブルではなく4テーブルの結合で、取引先名・部署名・登録者名・種別名をまとめて取得しています。

クエリの概要

項目 内容
クエリ名 Q60資材リストサブ
種別 選択クエリ
テーブル T60資材M、T05取引先M、T02従業員所属部署、T01従業員M、T60資材種別
結合1 T60資材M.取引先コード = T05取引先M.ID
結合2 T60資材M.所属部署コード = T02従業員所属部署.ID
結合3 T02従業員所属部署.ID = T01従業員M.ID
結合4 T60資材M.種別コード = T60資材種別.ID

Q60資材リストサブ フィールド構成

各フィールドがどのテーブルから来ているか、並べ替えや抽出条件の有無を一覧にします。

Q60資材リストサブ フィールド構成

フィールド テーブル 並べ替え 抽出条件 内容
ID T60資材M 資材ID
取引先コード T60資材M 取引先コード
略称(取引先名) T05取引先M Is Null Or Like “” & [Forms]![F60資材リスト]![取引先検索] & “ 一覧の「取引先」列
種別コード T60資材M Is Null Or Like “” & [Forms]![F60資材リスト]![種別検索] & “ 検索用の内部条件
種別 T60資材種別 昇順 一覧の「種別」列
資材名 T60資材M Is Null Or Like “” & [Forms]![F60資材リスト]![資材名検索] & “ 一覧の「資材名」列
仕様 T60資材M
単価 T60資材M
備考 T60資材M
所属部署コード T60資材M
所属略称 T02従業員所属部署 一覧の「関係部署」列
略称(登録者) T01従業員M 一覧の「登録者」列
登録日 T60資材M
有効 T60資材M
取引先検索・資材名検索・種別検索の3つの抽出条件はすべて「入力があれば絞り込み、空欄なら全件表示」というLike演算子の仕組みで統一されています。3条件は同時に効くため、「取引先だけ指定」「資材名と種別を同時指定」など柔軟な組み合わせで絞り込みが可能です。

各コントロールの設定

リスト画面上の各コントロールの動作を1つずつ解説します。検索系は再クエリで即座に絞り込み結果に反映され、ボタン系はマクロで別フォームを開いたり画面をリセットしたりする仕組みです。

検索コンボボックス(3条件:取引先・資材名・種別)

取引先検索・資材名検索・種別検索の3つは、いずれも値の変更イベントで再クエリを実行し、リストをリアルタイムに絞り込みます。

再検索ボタン

3つの検索条件を一括でクリアし、全件表示に戻すボタンです。値の代入で各コンボボックスをNullにしてから再クエリを実行するシンプルな構成です。

サブマクロ:資材リスト再検索

サブマクロのテキスト表示
サブマクロ:資材リスト再検索
 値の代入 [取引先検索]、Null
 値の代入 [資材名検索]、Null
 値の代入 [種別検索]、Null
 再クエリ ()
 マクロの中止
サブマクロの最後

マクロの概要

項目 内容
処理内容 3つの検索コンボボックスをNullにクリアし、サブフォームを再クエリして全件表示に戻す

マクロの設置場所

項目 内容
フォーム F60資材リスト
コントロール 再検索ボタン
イベント クリック時
呼び出し元 なし(ボタンから直接実行)

詳細ボタン

選択行の資材情報を編集フォームに転写して表示するボタンです。開くマクロと転写の仕組みの詳細は資材マスタ 編集ページで解説します。編集フォームは全登録データを表示するとともに、登録データの編集も兼ねたフォームになっています。

資材マスタ 編集ページにて解説

関連記事

資材マスタの編集画面です。資材リストの詳細ボタンから開き、選択した資材の全フィールドをその場で編集できます。ロット別単価・旧単価の登録状況は「ロット単価登録あり」ラベルで自動的にお知らせする仕組みです。 資材マスタ編集画面の構成 資[…]

新規登録ボタン

新規登録フォームを開くボタンです。登録の流れと関連マクロの詳細は資材マスタ 新規登録ページで解説します。

資材マスタ 新規登録ページにて解説

関連記事

資材マスタの新規登録画面です。取引先・資材名・種別・単価などの必須項目を入力し、ダブりチェックを経て登録します。取引先を選択すると同じ取引先の登録済み資材が右側に一覧表示されるため、似た資材の重複登録に気づきやすい設計になっています。 […]

件数

フッターに常時表示される件数表示です。絞り込み結果に応じて自動的に数値が変わります。

項目 内容
コントロールソース =DCount(“*”,”Q60資材リストサブ”)
更新タイミング サブフォームの再クエリと連動して自動更新

有効チェックボックス表示

一覧上に有効チェックボックスを配置することで、現状使われている資材かどうかを検索せずに一目で判別できます。

閉じるボタン

フォームを閉じます(M99共通.閉じるを使用)。

関連記事

フォームごとに同じ処理のマクロを個別に作ると、マクロの数が際限なく増えて管理が大変になります。M99共通マクロはどのフォームでも使い回せる処理をサブマクロとして一箇所に集約したものです。コントロール名を統一しておくことでフォームを問わず同じ[…]


まとめ

資材リストは取引先・資材名・種別の3条件で絞り込める一覧画面です。T60資材Mを軸にT05取引先M・T02従業員所属部署・T01従業員M・T60資材種別の4テーブルを結合したクエリで、コードだけでなく名称・略称を一覧に表示できる設計になっています。詳細ボタン・新規登録ボタンから各フォームへ遷移する構成は製品マスタと共通です。

 

本サイトではマクロを用いた構築手順を中心に紹介していますが、決してマクロを唯一の正解として推奨しているわけではありません。VBAが扱える環境であれば、より多彩で柔軟なプログラムが組めるVBAでの構築をむしろ推奨したいと考えています。

ここでマクロという選択肢を提示しているのは、VBAにハードルを感じている方への「もう一つの入り口」として、また将来的な後継者への引き継ぎ負荷を抑えるという実務上のメリットを考慮してのことです。設計の考え方の一つとして、状況に合わせて活用してください。