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

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

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

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

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

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

仕入先発注管理リスト フォームビュー

仕入先発注管理リスト デザインビュー

主な構成要素

コントロール 種別 役割
納期範囲(いつから/いつまで) 非連結テキスト 一覧に表示する納期の範囲を指定
今日〜全期間ボタン群 ボタン 期間の自動セット(詳細は別ページで解説)
仕入先検索/図番検索/手配番号検索 非連結テキスト インクリメンタルサーチによる絞り込み
再検索ボタン ボタン 検索条件をクリアし初期状態に戻す
注残リストボタン/注残リスト表示中ボタン ボタン(切替表示) 分納が完了していないデータだけに絞り込む
件数/合計金額 非連結テキスト 表示中データの件数と金額合計を集計表示
一覧サブフォーム サブフォーム Q31仕入先発注成形課リストサブを元に一覧表示
詳細ボタン ボタン 仕入先発注成形課編集フォームへ遷移(訂正・取消はそちらで対応)
ID/行色 非連結(隠しコントロール) 条件付き書式による行の色分けに使用
納期・図番ラベルの▲▼ ボタン 昇順・降順の並べ替え(複数の照会フォーム共通の仕組みのため、専用の固定ページで別途解説予定)

フォームを開いた時点で、納期範囲マクロ(注文期間開く時)がオンロードで自動実行され、直近1年〜仕入先発注データの最大納期までのデータがあらかじめ表示された状態でフォームが開きます。ユーザーがボタンを押さなくても、まず「見るべきデータ」が最初から画面に出ている状態です。この納期範囲検索の仕組み自体(今日・今週・今月ボタンなど)は複数の照会フォームで共通利用しているため、詳細は以下のページで解説しています。

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

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

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

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

関連記事

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

一覧サブフォーム(Q31仕入先発注成形課リストサブ)のクエリ構成

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

◆スクショ:製造管理照会クエリサブフォーム1〜4.jpg Q31仕入先発注成形課リストサブ(デザインビュー、4枚)

つづき

つづき

つづき

クエリの構成

フィールド テーブル 抽出条件
ID T31仕入先発注M
納期(演算) T31仕入先発注M Between [いつから] And [いつまで](並べ替え:降順)
略称 T05取引先M Is Null Or Like “” & [取引先検索] & “
図番 T31仕入先発注M Is Null Or Like “” & [図番検索] & “
数量/仕入先単価 T31仕入先発注M
金額(演算)
手配番号 T31仕入先発注M Is Null Or Like “” & [手配番号検索] & “
備考表示(演算)
出荷状況(演算)
略称(発注者) T01従業員M
分納残数/分納回数 T31仕入先発注M
成形課 T31仕入先発注M True
現品票区分 T31仕入先発注M “1”
設定数量/取引区分/仕入先コード T31仕入先発注M
注残リスト(演算) Is Null Or Like “” & [注残リスト] & “
取消 T31仕入先発注M

演算フィールドの中身

フィールド名
納期 [T31仕入先発注M].[納期]-[T31仕入先発注M].[納期設定]
金額 [仕入先単価]*[数量]
備考表示 IIf([在庫出荷]=True,”【在庫出荷】” & [備考],[備考])
出荷状況 IIf([分納残数]>=[設定数量],”未納”,IIf([分納残数]<=0,”完納”,IIf([分納残数]<>[設定数量],”分納中”)))
注残リスト IIf([分納残数]>=[設定数量],1,IIf([分納残数]<=0,””,IIf([分納残数]<>[設定数量],1)))

※ 納期フィールドは単純な表示ではなく、製品マスタから導かれ仕入先発注マスタの「納期設定」に格納されたリードタイム分を差し引いた計算式になっています。初期値は0のため、通常はそのままの納期が表示されるケースが多くなります。

※ 備考表示フィールドは、在庫出荷フラグがTrueのデータに「【在庫出荷】」という目印を自動で付け加える仕組みです。在庫を消し込んで出荷したデータであることをオペレーターへその場でアナウンスする役割を持っています。

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

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

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

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

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

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

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

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

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

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

関連記事

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

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

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

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

関連記事

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

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

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

サブマクロ:注残リスト

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

マクロの概要

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

マクロの設置場所

項目 内容
格納先 F31仕入先発注成形課リストフォームの「注残リスト」ボタン
呼び出し元 ユーザーによるボタンクリック

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

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

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

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

マクロの概要

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

マクロの設置場所

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

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

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

コントロール コントロールソース 書式
件数 =DCount(“*”,”Q31仕入先発注成形課リストサブ”) #,##0″ 件”
合計金額 =DSum(“金額”,”Q31仕入先発注成形課リストサブ”) 通貨

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

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

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

サブマクロ:編集開く

サブマクロのテキスト表示
サブマクロ:編集開く
フォームを開く(F31仕入先発注成形課編集, フォーム ビュー, , , , 標準)
値の代入
    アイテム=[Forms]![F31仕入先発注成形課編集]![手配番号]
    式=[Forms]![F31仕入先発注成形課リスト]![F31仕入先発注成形課リストサブ]![手配番号]
マクロの実行(M31仕入先発注成形.編集表示,,)
マクロの中止
サブマクロの最後

マクロの概要

項目 内容
目的 選択した行の手配番号を編集フォームへ引き継ぎ、詳細確認・編集ができる画面を開く
実行タイミング 詳細ボタンクリック時
処理内容 F31仕入先発注成形課編集をフォームビューで開く→手配番号をサブフォームから転記→M31仕入先発注成形内の「編集表示」マクロを実行

マクロの設置場所

項目 内容
格納先 F31仕入先発注成形課リストサブの「詳細」ボタン
呼び出し元 ユーザーによるボタンクリック

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

◆リンクカード:仕入先発注編集フォーム設計(詳細参照・編集・取消)(URL未定)

まとめ

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

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

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