Accessマクロで作る 受注管理「受注照会」フォームの作り方

受注データの一覧確認と絞り込み検索を行うためのページです。納期範囲・取引先・図番・手配番号・納期回答という複数の切り口から目的のデータへすぐに辿り着けるほか、分納が完了していない注残データだけに絞り込む機能も備えています。詳細な確認や訂正が必要な場合は、姉妹ページの受注編集フォームへ引き継ぐ構成になっています。

このページでは以下のことを解説しています。

  • 納期範囲・取引先・図番・手配番号・納期回答という複数の切り口を組み合わせた絞り込み検索
  • フォームを開いた瞬間に直近1年〜納期の最大値までのデータを自動表示(ボタン操作なしで「見るべきデータ」がすぐ見られる)
  • 分納が完了していない注残データだけへのワンタッチ切り替え表示
  • 出荷状況(未納・完納・分納中)や取消済みデータを色分けで即座に判別
  • 表示中データに連動した件数・合計金額のリアルタイム集計
  • 取消済みデータもあえて除外せず、取消日・取消フラグで確認できる一覧設計
  • 詳細ボタンから受注編集フォームへの遷移(訂正・取消はそちらで対応)

受注照会フォームの画面構成と一覧表示の仕組み

受注データ照会フォームは、納期範囲での絞り込みと4種類の検索ボックス、注残リストの表示切り替えを備えた一覧フォームです。サブフォームには指定期間内の全データを一度抽出したうえで、検索ボックスや注残リストでさらに絞り込む2段構えの設計になっています。

受注照会フォーム フォームビュー

受注照会フォーム デザインビュー

主な構成要素

コントロール 種別 役割
納期範囲(いつから/いつまで) 非連結テキスト 一覧に表示する納期の範囲を指定
今日〜全期間ボタン群 ボタン 期間の自動セット(詳細は別ページで解説)
取引先検索/図番検索/手配番号検索/納期回答検索 非連結テキスト インクリメンタルサーチによる絞り込み
再検索ボタン ボタン 検索条件をクリアし初期状態に戻す
注残リストボタン/注残リスト表示中ボタン ボタン(切替表示) 分納が完了していないデータだけに絞り込む
件数/合計金額 非連結テキスト 表示中データの件数と金額合計を集計表示
一覧サブフォーム サブフォーム Q20受注リストサブを元に一覧表示

納期範囲検索の詳細は別ページで解説

納期範囲検索セクション部分

このページの「いつから」「いつまで」の日付範囲と、今日・前日・翌日、今週・前週・翌週、今月・前月・翌月、全期間の各ボタンは、複数の照会フォームで共通利用しているマクロで動いています。ボタン一つで期間を切り替えられる仕組みと、月末日を求める工夫など「地味に便利」な設計まで詳しく解説していますので、気になる方はこちらのページをご覧ください。

納期範囲検索ボタンの解説ページ

関連記事

複数の照会フォームで共通利用している、納期範囲を指定してデータを絞り込む仕組みを紹介します。今日・前日・翌日、今週・前週・翌週、今月・前月・翌月といったボタン一つで期間を切り替えられる入力アシストで、受注照会をはじめ複数の照会フォームで多用[…]

フォームを開いた時点で、この納期範囲マクロ(注文期間開く時)がオンロードで自動実行され、直近1年〜納期の最大値までのデータがあらかじめ表示された状態でフォームが開きます。ユーザーがボタンを押さなくても、まず「見るべきデータ」が最初から画面に出ている状態です。

一覧サブフォーム(Q20受注リストサブ)のクエリ構成

一覧に表示される全項目は、T20受注M・T05取引先M・T01従業員Mの3テーブルを結合した1本のクエリから抽出しています。納期範囲・検索ボックス・注残リストの絞り込みは、すべてこのクエリの抽出条件に集約されています。

Q20受注リストサブ デザインビュー(前半)

Q20受注リストサブ デザインビュー(後半)

クエリの構成

フィールド テーブル 抽出条件
ID T20受注M
納期 T20受注M Between [いつから] And [いつまで]
略称 T05取引先M Is Null Or Like “” & [取引先検索] & “
図番 T20受注M Is Null Or Like “” & [図番検索] & “
手配番号 T20受注M Is Null Or Like “” & [手配番号検索] & “
納期回答 T20受注M Is Null Or Like “” & [納期回答検索] & “
注残リスト 演算フィールド Is Null Or Like “” & [注残リスト] & “
出荷状況 演算フィールド
数量/単価/金額/備考 T20受注M
略称(発注者) T01従業員M
分納残数/分納回数/成形フォーキャスト/取消 T20受注M

演算フィールドの中身

フィールド名
出荷状況 IIf([分納残数]=[数量],”未納”,IIf([分納残数]<=0,”完納”,IIf([分納残数]<>[数量],”分納中”)))
注残リスト IIf([分納残数]=[数量],1,IIf([分納残数]<=0,””,IIf([分納残数]<>[数量],1)))
金額 [単価]*[数量]

取消済みのデータも抽出条件で除外せず、そのまま一覧に含めています。取消日・取消フラグはそのまま列として表示され、取り消したことがオペレーターにわかる形になっています。

注残リストフィールドに設定した演算式により注文残がある注文だけを抽出する仕組みになってます。


一覧行の条件付き書式によるステータス色分け

一覧の各行には条件付き書式を設定し、出荷状況や取消の有無をひと目で判別できるようにしています。「行全体(複数コントロール)」と「出荷状況コントロール単体」の2種類のルールを組み合わせて色分けしている点が特徴です。

サブフォームの条件付き書式 行全体(複数コントロール)のルール

サブフォームの条件付き書式 出荷状況コントロール単体のルール

行全体(複数コントロール)に適用されているルール

優先順位 ルール 書式
1 フォーカスがある 黄色
2 式が [取消]=True グレー
3 式が [出荷状況]=”完納” 薄いグレー
4 式が [出荷状況]=”分納中” 水色
5 式が [ID]=[行色] 淡い黄色

出荷状況コントロール単体に適用されているルール

優先順位 ルール 書式
1 フォーカスがある 黄色
2 式が [取消]=True グレー
3 値が “分納中” と等しい 水色
4 値が “完納” と等しい オレンジ
5 式が [ID]=[行色] 淡い黄色

行全体には行の見分けやすさを重視した控えめな色を、出荷状況コントロールにはより目立つオレンジ色を個別に重ねることで、「行としての状態」と「出荷状況というピンポイントの情報」を視覚的に二重に強調する作りです。取消済みの行はどちらのルールでもグレーが最優先で効くため、取消データが他のステータス色に紛れて見落とされることがありません。

1行おきの縞模様で視線のズレを防ぐための解説ページ

関連記事

Accessのフォームにおける「色」は、単なるデザイン要素ではありません。オペレーターが今どこにいて何をすべきかを直感的に伝えるための「重要なナビゲーション」だと考えています。 画面を開いた瞬間に「新規登録」か「編集」かを色で感じ取り、無[…]

検索ボックスの絞り込みと再クエリの仕組み

取引先検索・図番検索・手配番号検索・納期回答検索の4つの検索ボックスは、それぞれのプロパティの更新後処理にM99共通マクロの「再クエリ」を設定しているだけのシンプルな作りです。文字を入力するたびにクエリの抽出条件(Like ““&検索値&”“)が働き、サブフォームがその場で絞り込まれます。

M99共通マクロ集(マクロの使い回し)

関連記事

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


注残リストボタン機能の仕組みとマクロ設計

注残リストボタンを押すと、分納が完了していないデータだけに一覧を絞り込みます。ボタンを押した状態を示すため、ボタン自体を注残リスト表示中ボタンに入れ替えて表示するのが特徴です。Q20受注リストサブクエリの注残リストフィールドに演算式を設定して抽出条件で注文残がある注文だけを抽出して表示します。

サブマクロ:注残リスト

サブマクロのテキスト表示
サブマクロ:注残リスト
値の代入
 アイテム = [注残リスト]
 式    = 1
コントロールの移動(閉じる)
値の代入
 アイテム = [Forms]![F20受注リスト]![注残リスト表示中].[Visible]
 式    = True
値の代入
 アイテム = [Forms]![F20受注リスト]![注残リストボタン].[Visible]
 式    = False
再クエリ ()
マクロの中止
サブマクロの最後

マクロの概要

項目 内容
目的 分納が未完了のデータだけに一覧を絞り込み、ボタンを表示中状態に切り替える
実行タイミング 注残リストボタンクリック時
処理内容 非表示の注残リストボックスに1を代入→注残リストボタンを隠し、注残リスト表示中ボタンを表示→再クエリ

マクロの設置場所

項目 内容
格納先 F20受注リストフォームの「注残リスト」ボタン
呼び出し元 ユーザーによるボタンクリック
分納残数はまれにマイナスになることがあります(受注数量を超えて納入され、過剰納品のまま完納扱いにするケースがあるため)。注残リストの式はこの「マイナス残数=完納扱い」もIIfで吸収し、完納・未納・分納中のいずれにも矛盾なく1件ずつ振り分けられるよう作られています。

注残リスト表示中ボタン機能の仕組みとマクロ設計

注残リストボタンが押されると入れ替わりで(重ねて設置してある)注残リスト表示中ボタンが可視される仕組みになっています。文字が赤くなることでリストのデータは注残リストだということを視覚的にアピールしています。また注残リスト表示中ボタンを押すことで元のリストに戻ります。

サブマクロ:注残リスト表示中

サブマクロのテキスト表示
サブマクロ:注残リスト表示中
値の代入
 アイテム = [注残リスト]
 式    = Null
コントロールの移動(閉じる)
値の代入
 アイテム = [Forms]![F20受注リスト]![注残リスト表示中].[Visible]
 式    = False
値の代入
 アイテム = [Forms]![F20受注リスト]![注残リストボタン].[Visible]
 式    = True
再クエリ ()
マクロの中止
サブマクロの最後

マクロの概要

項目 内容
目的 注残リストの絞り込みを解除し、通常表示に戻す
実行タイミング 注残リスト表示中ボタンクリック時
処理内容 注残リストボックスをNullに戻す→注残リスト表示中ボタンを隠し、注残リストボタンを再表示→再クエリ

マクロの設置場所

項目 内容
格納先 F20受注リストフォームの「注残リスト表示中」ボタン(注残リストボタンと同位置に重ねて設置)
呼び出し元 ユーザーによるボタンクリック

件数・合計金額の集計表示

一覧下部には、表示中データの件数と合計金額が自動で表示されます。どちらもコントロールソースに集計関数を直接設定するだけの非連結コントロールです。

コントロール コントロールソース
件数 =DCount(“*”,”Q20受注リストサブ”)
合計金額 =DSum(“金額”,”Q20受注リストサブ”)

集計元はQ20受注リストサブそのものなので、納期範囲・検索ボックス・注残リストのどの絞り込み状態でも、常に「今画面に表示されているデータ」に対しての件数・合計金額になります。


詳細ボタンから編集ページへの導線

一覧の各行にある詳細ボタンから、受注データの詳細確認・編集ができる別ページへ進みます。参照だけでなく訂正や取消も行える画面のため、マクロの構成やサブフォームの解説は別記事にまとめました。

受注編集フォーム設計(詳細参照・編集・取消)ページ

関連記事

受注データの詳細確認と編集を行うページです。受注照会ページの詳細ボタンから開き、手配番号1件分の情報を参照しながら、必要に応じて内容の訂正や取消ができます。同一図番の受注履歴・売上履歴もあわせて確認できるため、過去の分納状況を踏まえた判断が[…]

このリンク先では、詳細ボタンを押した際のDLookupによる値の展開、図番受注履歴・売上履歴の2つのサブフォーム、権限による編集ボタンの制御、取消時に仕入先発注データまで連動して取り消す仕組みまで解説しています。


まとめ

受注照会ページは、納期範囲・検索ボックス・注残リストという3種類の絞り込みを1本のクエリに集約し、常に「今表示されているデータ」に対して件数と合計金額を計算する設計です。取消済みデータもあえて除外せず、取消日や取消フラグで見分けられるようにしている点も実務者目線の工夫です。詳細な編集操作は姉妹ページの受注編集フォームに役割を分担しています。

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

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