Accessマクロで作る 受注管理「新規登録」フォームの作り方

受注管理は、客先から届いた注文書をシステムに登録し、社内各部署(外製先含む)への製造指示につなげる入口となるページです。受注区分によって「製品マスタあり」「製品マスタなし」「材料受注」「シート受注」の4パターンを1つのフォームで切り替える設計になっており、区分ごとに入力すべき項目が自動的に変わります。

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

  • 受注区分(マスタあり/マスタなし/材料受注/シート受注)による入力画面の自動切り替え
  • 取引先・図番からの単価・担当課・フォーキャストの自動転記
  • 手配番号の自動採番(客先注文番号の手入力も可能)
  • 同一図番・複数納期の注文を最大10件まとめて登録(複数登録)
  • 過去の受注履歴・備考履歴・ロット単価からのワンクリック転記
  • 製造依頼書・材料手配書・受注日報の印刷と、日次更新による仕入先発注データの自動生成

目次

受注管理新規登録フォームの画面構成

受注新規登録は1つのフォーム(F20受注新規)で完結する構成です。まずは実際の画面と、そこで何ができるのかを確認します。

フォームビュー

受注区分・取引先・図番・納期・数量・単価などを入力する基本画面です。

受注新規登録 フォームビュー

画面の概要

画面上部で基本情報を入力し、右側の受注履歴サブフォームで同一図番の過去受注を確認できます。下部の「登録中データ」グリッドには、その日にまだ日次更新していない受注が一覧表示されます。


デザインビューで見る新規登録フォームの仕組み

画面上は1つのフォームに見えますが、デザインビューでは非連結コントロールと条件分岐が多数組まれています。

デザインビュー

コントロールが重なって配置されており、受注区分によって表示・非表示が切り替わる仕組みになっています。

F20受注新規 デザインビュー

デザインビューの概要

受注区分(オプショングループ)を軸に、取引先名・図番・手配番号・材料受注・シート受注の各コントロールが条件によって表示・非表示を切り替える構成です。コントロールの多くは非連結で、更新後処理やDLookupを通じて値が転写されます。


マクロで作る画面を開く仕組み

メインメニューの「受注マスタ」ボタンから開く際、権限チェック・発注者コードの自動セット・自動手配番号の日次クリーンアップの3つの処理が同時に走ります。

サブマクロ:受注マスタ

サブマクロのテキスト表示
サブマクロ:受注マスタ

If [権限]=2 Then
    フォームを開く(F20受注新規, フォーム ビュー, , , , 標準)
    ⚠ メッセージの設定(いいえ)
    クエリを開く(Q20受注新規自動手番削除, データシート, 編集)
    ⚠ 値の代入
        アイテム = [Forms]![F20受注新規]![発注者コード]
        式 = DLookup("従業員コード","T01従業員M","[従業員コード]=[Forms]![F00メインメニュー]![従業員コード]")
    マクロの中止
Else
    メッセージボックス(受注マスタを開く権限がありません, はい, 警告, 権限なし)
    マクロの中止
If 文の最後
マクロの中止
サブマクロの最後

マクロの概要

ステップ 処理 内容
1 If条件分岐 権限=2のユーザーのみ次の処理へ進む。それ以外は警告メッセージで中断
2 フォームを開く F20受注新規をフォームビューで開く
3 クエリを開く Q20受注新規自動手番削除を実行
4 値の代入 発注者コードにログイン中の従業員コードをDLookupで自動セット

マクロの設置場所

項目 内容
フォーム F00メインメニュー
コントロール 受注マスタボタン
イベント クリック時
呼び出し元 M20受注 > サブマクロ:受注マスタ
自動手配番号は「YYMMDD-連番」の形式で構成されているため、日付が変わらない限り重複しません。削除クエリの条件は「登録日が今日ではない(<>Date())」かつ「削除フラグ=True」の両方が揃った場合のみで、同日中に何度もフォームを開いても当日分は消えず、日付が変わった瞬間に前日以前の使用済み番号だけが一掃されます。受注入力を翌日に持ち越しても削除フラグが立っていないため重複の心配がありません。

マクロで作る「受注区分」による画面切り替え

受注区分は「マスタあり/マスタなし/材料受注/シート受注」の4択のオプショングループです。選択すると更新後処理でサブマクロ「受注区分」が動き、区分ごとに表示すべきコントロールの組み合わせを一括で切り替えます。

受注区分の各フォームビュー

マスタあり マスタなし 材料受注 シート受注

サブマクロ:受注区分

サブマクロのテキスト表示
サブマクロ:受注区分

If [受注区分]=1 Then
    値の代入([Forms]![F20受注新規]![図番].[Visible], True)
    値の代入([Forms]![F20受注新規]![製品マスタ].[Visible], True)
    値の代入([Forms]![F20受注新規]![材料受注a].[Visible], False)
    値の代入([Forms]![F20受注新規]![有償価格].[Visible], False)
    値の代入([Forms]![F20受注新規]![シート類選択].[Visible], False)
    値の代入([Forms]![F20受注新規]![手配番号], [Forms]![F20受注新規]![採番])
    値の代入([Forms]![F20受注新規]![単価], Null)
    コントロールの移動(取引先コード)
Else
    値の代入([材料受注a], Null)
If 文の最後

If [受注区分]=2 Then
    値の代入([Forms]![F20受注新規]![図番].[Visible], True)
    値の代入([Forms]![F20受注新規]![製品マスタ].[Visible], False)
    値の代入([Forms]![F20受注新規]![材料受注a].[Visible], False)
    値の代入([Forms]![F20受注新規]![有償価格].[Visible], False)
    値の代入([Forms]![F20受注新規]![シート類選択].[Visible], False)
    値の代入([図番], "T*")
    値の代入([Forms]![F20受注新規]![手配番号], [Forms]![F20受注新規]![採番])
    値の代入([Forms]![F20受注新規]![単価], Null)
    コントロールの移動(取引先コード)
Else
    値の代入([図番], Null)
If 文の最後

If [受注区分]=3 Then
    値の代入([Forms]![F20受注新規]![図番].[Visible], False)
    値の代入([Forms]![F20受注新規]![製品マスタ].[Visible], False)
    値の代入([Forms]![F20受注新規]![材料受注a].[Visible], True)
    値の代入([Forms]![F20受注新規]![有償価格].[Visible], True)
    値の代入([Forms]![F20受注新規]![シート類選択].[Visible], False)
    値の代入([Forms]![F20受注新規]![手配番号], [Forms]![F20受注新規]![採番])
    値の代入([取引先コード], Null)
    値の代入([Forms]![F20受注新規]![単価], Null)
    マクロの実行(M99共通.再クエリ, , )
    コントロールの移動(取引先コード)
Else
    値の代入([Forms]![F20受注新規]![有償価格].[Visible], False)
    マクロの実行(M99共通.再クエリ, , )
If 文の最後

If [受注区分]=4 Then
    値の代入([Forms]![F20受注新規]![図番].[Visible], True)
    値の代入([Forms]![F20受注新規]![製品マスタ].[Visible], True)
    値の代入([Forms]![F20受注新規]![材料受注a].[Visible], False)
    値の代入([Forms]![F20受注新規]![有償価格].[Visible], False)
    値の代入([Forms]![F20受注新規]![シート類選択].[Visible], True)
    値の代入([Forms]![F20受注新規]![単価], Null)
    コントロールの移動(取引先コード)
    再クエリ()
If 文の最後

マクロの中止
サブマクロの最後

マクロの概要

受注区分 表示されるコントロール 手配番号 備考
1:マスタあり 図番・製品マスタボタン 採番 or 手入力 通常の受注登録パターン
2:マスタなし 図番(手入力) 採番 or 手入力 図番の先頭に自動で「T」を付与
3:材料受注 材料受注・有償価格ボタン 採番のみ M99共通.再クエリを実行して画面を更新
4:シート受注 シート類選択ボタン 採番 or 手入力 製品マスタから独立したシート図番を選択

マクロの設置場所

項目 内容
フォーム F20受注新規
コントロール 受注区分(オプショングループ)
イベント 更新後処理
呼び出し元 M20受注 > サブマクロ:受注区分
受注区分が変わるたびに、表示するコントロール・絞り込みクエリの条件・単価の取得元まで総入れ替えされます。フォームを分けずに1つの画面で完結させているため、担当者は受注区分ボタンを押すだけで自然に必要な入力項目だけが出てくる形になります。

受注区分1:「マスタあり」の仕組みとマクロ設計

受注区分1(マスタあり)は、製品マスタにすでに登録済みの図番から選んで受注する、もっとも標準的なパターンです。取引先名を確定すると過去の受注履歴が表示され、そこから図番を選ぶと単価や担当課フラグなどが製品マスタから一括で転記されます。

取引先名コンボのフォーカス取得マクロ

取引先名の選択自体は受注区分を問わず共通の操作ですが、ここでは受注区分1の流れに沿って説明します。取引先名コンボにフォーカスが移ると、取引先検索ポップアップが自動的に開きます。

サブマクロ:取引先コード

サブマクロのテキスト表示
プロシージャの実行
プロシージャ名 [取引先コード].dropdown

マクロの中止

マクロの設置場所

項目 内容
フォーム F20受注新規
コントロール 取引先コード
イベント フォーカス取得時
呼び出し元 M20受注 > プロシージャ:[取引先コード].dropdown

受注履歴サブフォーム

取引先名が確定すると再クエリが走り、その会社の受注履歴(図番・単価・数量・納期・手配番号)がサブフォームに表示されます。行を選んで「適用」ボタンを押すと、その履歴の内容がそのまま新規受注フォームへ転記される仕組みです。

受注履歴サブフォーム フォームビュー

Q20受注新規サブ フィールド構成

フィールド テーブル 抽出条件
略称 T05取引先M
図番・納期・数量・単価・手配番号・備考・受注日・材料手配 T20受注M
発行 T20受注M False
ID T20受注M 降順

同じ会社で複数図番の注文がある場合でも、図番欄に手入力せず履歴から選んで転記できる補助機能です(使用は任意。図番コンボからの絞り込み選択でも同様に選べます)。

適用ボタンと「サブマクロ:受注履歴適用」

選択した履歴行の図番・単価・課フラグなどをフォームへ一括転記し、図番確定時と同じロット単価チェックが動きます。受注区分がシート受注(4)の場合のみ、手配番号に「SS」を付与する分岐が入っています。

サブマクロ:受注履歴適用

サブマクロのテキスト表示
サブマクロ:受注履歴適用

値の代入([Forms]![F20受注新規]![図番], [Forms]![F20受注新規]![F20受注新規受注履歴サブ]![図番])
値の代入([Forms]![F20受注新規]![材料受注a], [Forms]![F20受注新規]![F20受注新規受注履歴サブ]![図番])
値の代入([Forms]![F20受注新規]![単価], [Forms]![F20受注新規]![F20受注新規受注履歴サブ]![単価])
値の代入([Forms]![F20受注新規]![手配番号], [Forms]![F20受注新規]![採番])
値の代入([Forms]![F20受注新規]![備考], DLookUp("備考","T10製品M","[図番ID]=[Forms]![F20受注新規]![図番ID]"))
値の代入([Forms]![F20受注新規]![成形課], DLookUp("成形課","T10製品M","[図番ID]=[Forms]![F20受注新規]![図番ID]"))
値の代入([Forms]![F20受注新規]![加工課], DLookUp("加工課","T10製品M","[図番ID]=[Forms]![F20受注新規]![図番ID]"))
値の代入([Forms]![F20受注新規]![印刷課], DLookUp("印刷課","T10製品M","[図番ID]=[Forms]![F20受注新規]![図番ID]"))
値の代入([Forms]![F20受注新規]![成形フォーキャスト], DLookUp("成形フォーキャスト","T10製品M","[図番ID]=[Forms]![F20受注新規]![図番ID]"))
値の代入([Forms]![F20受注新規]![加工フォーキャスト], DLookUp("加工フォーキャスト","T10製品M","[図番ID]=[Forms]![F20受注新規]![図番ID]"))
値の代入([Forms]![F20受注新規]![現品票区分], DLookUp("現品票区分","T10製品M","[図番ID]=[Forms]![F20受注新規]![図番ID]"))
値の代入([Forms]![F20受注新規]![納期設定], DLookUp("納期設定","T10製品M","[図番ID]=[Forms]![F20受注新規]![図番ID]"))

If [受注区分]=4 Then
    値の代入([Forms]![F20受注新規]![手配番号], "SS" & [Forms]![F20受注新規]![採番])
If 文の最後
コントロールの移動(閉じる)
コントロールの移動(納期)

If DCount("*","Q20受注ロット単価参照")=0 Then
    コントロールの移動(納期)
    再クエリ()
    マクロの中止
Else
    フォームを開く(F20受注ロット単価参照, フォーム ビュー, , , , 標準)
    値の代入([Forms]![F20受注ロット単価参照]![図番], [Forms]![F20受注新規]![図番])
    マクロの中止
If 文の最後
コントロールの移動(閉じる)
コントロールの移動(納期)
再クエリ()
マクロの中止
サブマクロの最後

マクロの概要

ステップ 処理 内容
1〜3 値の代入 選択行の図番・単価をフォームへ転記(材料受注コンボにも同じ図番を代入)
4 値の代入 手配番号に採番コントロールの値を代入
5〜11 値の代入(複数) 備考・課フラグ・フォーキャストフラグ・現品票区分・納期設定をT10製品MからDLookupで再取得
12 If:受注区分=4 手配番号の先頭に「SS」を付与(シート受注として自動採番)
13 If:ロット単価が0件 納期にフォーカス移動して処理を中断
14 Else F20受注ロット単価参照フォームを開き、選択された図番を引き渡す

マクロの設置場所

項目 内容
フォーム F20受注新規
コントロール 適用ボタン(F20受注新規受注履歴サブ内)
イベント クリック時
呼び出し元 M20受注 > サブマクロ:受注履歴適用
履歴から転記した場合でも、図番コンボから選んだときと同じくT10製品Mから課フラグ・フォーキャストフラグを再取得し、ロット単価チェックまで通ります。近道で入力しても正規ルートと同じ精度が保たれる設計です。

図番コンボボックスの絞り込みとサブマクロ「図番」

受注区分が1(マスタあり)の場合、図番コンボは取引先マスタと連動したクエリで絞り込まれます。図番が確定すると、単価・担当課フラグ・フォーキャストフラグ・現品票区分などがT10製品Mから一括でDLookup転記されます。

サブマクロ:図番

サブマクロのテキスト表示
サブマクロ:図番

値の代入([Forms]![F20受注新規]![単価], DLookUp("単価","T10製品M","[図番ID]=[forms]![F20受注新規]![図番ID]"))
値の代入([Forms]![F20受注新規]![製品マスタ備考], DLookUp("備考","T10製品M","[図番ID]=[Forms]![F20受注新規]![図番ID]"))
値の代入([Forms]![F20受注新規]![成形課], DLookUp("成形課","T10製品M","[図番ID]=[Forms]![F20受注新規]![図番ID]"))
値の代入([Forms]![F20受注新規]![加工課], DLookUp("加工課","T10製品M","[図番ID]=[Forms]![F20受注新規]![図番ID]"))
値の代入([Forms]![F20受注新規]![印刷課], DLookUp("印刷課","T10製品M","[図番ID]=[Forms]![F20受注新規]![図番ID]"))
値の代入([Forms]![F20受注新規]![成形フォーキャスト], DLookUp("成形フォーキャスト","T10製品M","[図番ID]=[Forms]![F20受注新規]![図番ID]"))
値の代入([Forms]![F20受注新規]![加工フォーキャスト], DLookUp("加工フォーキャスト","T10製品M","[図番ID]=[Forms]![F20受注新規]![図番ID]"))
値の代入([Forms]![F20受注新規]![現品票区分], DLookUp("現品票区分","T10製品M","[図番ID]=[Forms]![F20受注新規]![図番ID]"))
値の代入([Forms]![F20受注新規]![納期設定], DLookUp("納期設定","T10製品M","[図番ID]=[Forms]![F20受注新規]![図番ID]"))

If IsNull([手配番号]) Then
    値の代入([手配番号], [採番])
If 文の最後
再クエリ
    コントロール名

If DCount("*","Q20受注ロット単価参照")=0 Then
    コントロールの移動(手配番号)
    再クエリ()
    マクロの中止
Else
    フォームを開く(F20受注ロット単価参照, フォーム ビュー, , , , 標準)
    値の代入([Forms]![F20受注ロット単価参照]![図番], [Forms]![F20受注新規]![図番])
    マクロの中止
If 文の最後
マクロの中止
サブマクロの最後

マクロの概要

ステップ 処理 内容
1 値の代入(複数) 単価・製品マスタ備考・成形課・加工課・印刷課・成形フォーキャスト・加工フォーキャスト・現品票区分・納期設定をT10製品MからDLookupで転記
2 If:手配番号がNull 採番コントロールの値を手配番号へ代入(自動採番の適用)
3 If:ロット単価が0件 手配番号にフォーカス移動して処理を中断
4 Else F20受注ロット単価参照フォームを開き、選択された図番を引き渡す

マクロの設置場所

項目 内容
フォーム F20受注新規
コントロール 図番
イベント 更新後処理
呼び出し元 M20受注 > サブマクロ:図番

図番コンボボックスの値集合ソース

直接クエリビルダーで選択クエリを設定しています

クエリビルダー

F20受注新規(クエリビルダー) フィールド構成

フィールド テーブル 抽出条件
図番・図番ID・単価 T10製品M
取引先コード T10製品M [Forms]![F20受注新規]![取引先コード]

ロット単価参照ポップアップと適用ボタンの仕組み

図番確定時にT10製品Mロット旧単価をDCountで確認し、該当図番にロット別単価が1件でも登録されていればF20受注ロット単価参照フォームが自動的に開きます。一覧から該当ロットを選んで適用ボタンを押すと、単価と備考が新規受注フォームへ転記されます。

ロット単価参照 ポップアップフォームビュー

Q20受注ロット単価参照 フィールド構成

フィールド テーブル 抽出条件
ID・図番ID・登録日・ロット・前〜・後〜・単価・備考・旧単価 T10製品Mロット旧単価
図番ID T10製品Mロット旧単価 [Forms]![F20受注新規]![図番ID]
ロット別 T10製品Mロット旧単価 True

サブマクロ:ロット適用

サブマクロのテキスト表示
サブマクロ:ロット適用

値の代入
    アイテム = [Forms]![F20受注新規]![単価]
    式 = [Forms]![F20受注ロット単価参照]![F20受注ロット単価参照サブ]![単価]

値の代入
    アイテム = [Forms]![F20受注新規]![備考]
    式 = [Forms]![F20受注新規]![備考] & "LOT." & [Forms]![F20受注ロット単価参照]![F20受注ロット単価参照サブ]![ロットから]

ウィンドウを閉じる(フォーム, F20受注ロット単価参照, 確認)
コントロールの移動(手配番号)
再クエリ()
マクロの中止
サブマクロの最後

マクロの概要

ステップ 処理 内容
1 値の代入 選択したロット単価参照サブの単価を、新規受注フォームの単価へ転記
2 値の代入 備考欄に既存の備考+「LOT.」+ロット開始値を追記(例:テストLOT.50〜)
3 ウィンドウを閉じる ロット単価参照フォームを閉じる
4 コントロールの移動・再クエリ 手配番号へフォーカスを戻し、フォームを再クエリ

マクロの設置場所

項目 内容
フォーム F20受注ロット単価参照
コントロール 適用ボタン(サブフォーム内)
イベント クリック時
呼び出し元 M20受注 > サブマクロ:ロット適用

備考欄への追記により、どのロット単価が適用されたかが受注データ側にもテキストとして残るため、後から見返してもどの単価帯で受注したのか一目で確認できます。

図番を選んだ瞬間にT10製品Mロット旧単価を確認し、該当図番に複数のロット単価が登録されていればポップアップで知らせてくれます。単価を打ち込んでから間違いに気づくのではなく、入力の途中で正しい単価かどうかその場で確認できる設計です。

登録中データサブフォームと訂正機能

登録済みだが日次更新前のデータは、受注新規登録フォーム内の「登録中データ」サブフォームに一覧表示されます。入力ミスに気づいた場合は、この一覧から訂正ボタンを押すだけで専用のポップアップフォームが開き、その場で修正や削除が行える仕組みです。

登録中データ一覧サブフォーム(訂正ボタン付き)

登録中データ一覧の構成

項目 内容
件数 登録中(日次更新前)のデータ件数を表示
製品M備考 選択行の製品マスタ側の備考を表示
訂正 ボタン。クリックで受注新規訂正フォームを開く
取引先名/図番/納期/数量/単価/金額/手配番号/メモ/受注日 T20受注Mから抽出した登録内容の各項目

一覧はあくまで日次更新前の一時データの確認用で、正式なデータはこの後の日次更新ボタン処理でT20受注Mへ反映されます

訂正ボタンから起動するマクロ「訂正を開く」

一覧の訂正ボタンを押すと、選択した行の手配番号をキーに、受注新規訂正フォームの各コントロールへT20受注Mの現在値をDLookupで一つずつ流し込みます。値の代入が項目数だけ並ぶ、地道ながら確実な作り方です。

サブマクロ:訂正開く

サブマクロのテキスト表示
サブマクロ:訂正開く

フォームを開く(F20受注新規訂正, フォーム ビュー, , , , 標準)

値の代入
  アイテム = [Forms]![F20受注新規訂正]![手配番号]
  式    = [Forms]![F20受注新規訂正]![F20受注新規サブ]![手配番号]

値の代入
  アイテム = [Forms]![F20受注新規訂正]![受注区分]
  式    = DLookUp("受注区分","T20受注M","手配番号=[Forms]![F20受注新規訂正]![手配番号]")

値の代入
  アイテム = [Forms]![F20受注新規訂正]![受注日]
  式    = DLookUp("受注日","T20受注M","手配番号=[Forms]![F20受注新規訂正]![手配番号]")

値の代入
  アイテム = [Forms]![F20受注新規訂正]![図番]
  式    = DLookUp("図番","T20受注M","手配番号=[Forms]![F20受注新規訂正]![手配番号]")

値の代入
  アイテム = [Forms]![F20受注新規訂正]![取引先コード]
  式    = DLookUp("取引先コード","T20受注M","手配番号=[Forms]![F20受注新規訂正]![手配番号]")

値の代入
  アイテム = [Forms]![F20受注新規訂正]![単価]
  式    = DLookUp("単価","T20受注M","手配番号=[Forms]![F20受注新規訂正]![手配番号]")

値の代入
  アイテム = [Forms]![F20受注新規訂正]![納期]
  式    = DLookUp("納期","T20受注M","手配番号=[Forms]![F20受注新規訂正]![手配番号]")

値の代入
  アイテム = [Forms]![F20受注新規訂正]![数量]
  式    = DLookUp("数量","T20受注M","手配番号=[Forms]![F20受注新規訂正]![手配番号]")

値の代入
  アイテム = [Forms]![F20受注新規訂正]![備考]
  式    = DLookUp("備考","T20受注M","手配番号=[Forms]![F20受注新規訂正]![手配番号]")

値の代入
  アイテム = [Forms]![F20受注新規訂正]![発注者]
  式    = DLookUp("従業員コード","T20受注M","手配番号=[Forms]![F20受注新規訂正]![手配番号]")

値の代入
  アイテム = [Forms]![F20受注新規訂正]![分納残数]
  式    = DLookUp("分納残数","T20受注M","手配番号=[Forms]![F20受注新規訂正]![手配番号]")

値の代入
  アイテム = [Forms]![F20受注新規訂正]![分納回数]
  式    = DLookUp("分納回数","T20受注M","手配番号=[Forms]![F20受注新規訂正]![手配番号]")

値の代入
  アイテム = [Forms]![F20受注新規訂正]![成形課]
  式    = DLookUp("成形課","T20受注M","手配番号=[Forms]![F20受注新規訂正]![手配番号]")

値の代入
  アイテム = [Forms]![F20受注新規訂正]![加工課]
  式    = DLookUp("加工課","T20受注M","手配番号=[Forms]![F20受注新規訂正]![手配番号]")

値の代入
  アイテム = [Forms]![F20受注新規訂正]![印刷課]
  式    = DLookUp("印刷課","T20受注M","手配番号=[Forms]![F20受注新規訂正]![手配番号]")

値の代入
  アイテム = [Forms]![F20受注新規訂正]![成形フォーキャスト]
  式    = DLookUp("成形フォーキャスト","T20受注M","手配番号=[Forms]![F20受注新規訂正]![手配番号]")

値の代入
  アイテム = [Forms]![F20受注新規訂正]![加工フォーキャスト]
  式    = DLookUp("加工フォーキャスト","T20受注M","手配番号=[Forms]![F20受注新規訂正]![手配番号]")

値の代入
  アイテム = [Forms]![F20受注新規訂正]![現品票区分]
  式    = DLookUp("現品票区分","T20受注M","手配番号=[Forms]![F20受注新規訂正]![手配番号]")

マクロの中止

サブマクロの最後

マクロの概要

項目 内容
目的 一覧で選んだ行の手配番号をもとに、訂正フォームへ現在の登録内容を復元表示する
実行タイミング 登録中データ一覧の「訂正」ボタンクリック時
処理内容 フォームを開く→手配番号を受け渡し→残り全項目をDLookupで個別に代入

マクロの設置場所

項目 内容
格納先 F20受注新規サブ(登録中データ一覧サブフォーム)の訂正ボタン
呼び出し元 受注新規登録フォーム内の登録中データ一覧

訂正ポップアップフォームの画面構成

訂正ボタンから開くのは、新規登録フォームとほぼ同じレイアウトのポップアップフォームです。すべて非連結コントロールで構成し、開いた瞬間に前述のマクロで値を流し込む方式のため、誤って別レコードを上書きする心配がありません。

受注新規訂正フォーム

フォームビュー デザインビュー

主なコントロール

コントロール 種別 備考
手配番号 非連結(ラベル表示) 訂正対象のキー。変更不可
受注区分 オプションボタン マスタあり/マスタなし/材料受注/F手配
取引先名 非連結コンボ =[取引先コード].Column
図番 非連結(グレー表示) 変更不可の参照項目
単価/納期/数量/備考 非連結テキスト 直接編集可能
発注者 非連結コンボ 従業員コードを選択
分納残数/分納回数 非連結テキスト 数量訂正と連動(下記参照)
成形課/加工課/印刷課/成形フォーキャスト/加工フォーキャスト チェックボックス 各課の対応状況
現品票区分 オプションボタン 成形課/加工課/印刷課のいずれか

数量を訂正すると分納残数も自動で揃う

数量コントロールの更新後処理には、分納残数を数量と同じ値に自動で書き換えるマクロが仕込まれています。訂正のたびに分納残数を手で直す必要がなく、入力漏れによる数量と残数のズレを防げます。

サブマクロ:訂正数量

サブマクロのテキスト表示
サブマクロ:訂正数量

値の代入
  アイテム = [分納残数]
  式    = [数量]

マクロの中止

サブマクロの最後

マクロの概要

項目 内容
目的 数量の訂正内容を分納残数へそのまま反映する
実行タイミング 数量コントロールの更新後処理
処理内容 分納残数に数量の値を代入するのみ

マクロの設置場所

項目 内容
格納先 F20受注新規訂正フォーム/数量コントロールの更新後処理
呼び出し元 ユーザーが数量欄を編集した時点で自動実行

更新更新ボタン・削除ボタンのマクロ設計

内容を直したあとは訂正更新ボタンでT20受注Mへ反映し、行そのものが不要なら削除ボタンで取り消します。どちらも警告音とMsgBoxによる確認を挟んでから実行する、うっかり操作を防ぐ作りです。

訂正更新ボタンのマクロ

サブマクロ:訂正更新

サブマクロのテキスト表示
サブマクロ:訂正更新

警告音

If MsgBox("訂正してよろしいですか?",4+32,"確認")=6 Then
  メッセージの設定(いいえ)
  クエリを開く(Q20受注新規訂正更新, データシート, 編集)
  メッセージボックス(訂正しました, はい, なし, 訂正済)
  ウィンドウを閉じる(フォーム, F20受注新規訂正, 確認)
  再クエリ()
  マクロの中止
Else
  メッセージボックス(処理を中止します, はい, なし, 中止)
  マクロの中止
If 文の最後
サブマクロの最後

マクロの概要

項目 内容
目的 訂正フォームの入力内容をT20受注Mへ更新反映する
実行タイミング 訂正更新ボタンクリック時(確認ダイアログでOK後)
処理内容 更新クエリの実行→完了メッセージ→フォームを閉じる→一覧を再クエリ

マクロの設置場所

項目 内容
格納先 F20受注新規訂正フォームの「訂正更新」ボタン
呼び出し元 訂正内容を確定させたいユーザー操作

訂正更新クエリ(Q20受注新規訂正更新)の構成

受注新規クエリ訂正更新クエリ デザインビュー(一部)

更新対象フィールド

フィールド レコードの更新 抽出条件
手配番号 (更新なし・キーとして使用) [Forms]![F20受注新規訂正]![手配番号]
受注区分 [Forms]![F20受注新規訂正]![受注区分]
受注日 [Forms]![F20受注新規訂正]![受注日]
取引先コード [Forms]![F20受注新規訂正]![取引先コード]
納期 [Forms]![F20受注新規訂正]![納期]
数量 [Forms]![F20受注新規訂正]![数量]
単価 [Forms]![F20受注新規訂正]![単価]
備考 [Forms]![F20受注新規訂正]![備考]
分納残数 [Forms]![F20受注新規訂正]![分納残数]
分納回数 [Forms]![F20受注新規訂正]![分納回数]
成形課/加工課/印刷課 [Forms]![F20受注新規訂正]![各コントロール]
従業員コード [Forms]![F20受注新規訂正]![発注者]
成形フォーキャスト/加工フォーキャスト [Forms]![F20受注新規訂正]![各コントロール]
現品票区分 [Forms]![F20受注新規訂正]![現品票区分]

手配番号だけは更新せず抽出条件として使い、対象レコードを一意に絞り込んだうえで残り全フィールドをフォームの値で上書きする構成です。

削除ボタンのマクロ

サブマクロ:訂正削除

サブマクロのテキスト表示
サブマクロ:訂正削除
警告音
If MsgBox("表示されたデータを削除します。よろしいですか?",4+32,"確認")=6 Then
  メッセージの設定(いいえ)
  クエリを開く(Q20受注新規訂正削除, データシート, 編集)
  ウィンドウを閉じる(, , 確認)
  コントロールの移動(閉じる)
  再クエリ()
  マクロの中止
Else
  メッセージボックス(処理を中止します, はい, なし, 中止)
  マクロの中止
If 文の最後
サブマクロの最後

マクロの概要

項目 内容
目的 表示中のデータをT20受注Mから完全に削除する
実行タイミング 削除ボタンクリック時(確認ダイアログでOK後)
処理内容 削除クエリの実行→フォームを閉じる→コントロールの移動→一覧を再クエリ

マクロの設置場所

項目 内容
格納先 F20受注新規訂正フォームの「削除」ボタン
呼び出し元 誤登録などでレコードごと取り消したいユーザー操作

削除クエリ(Q20受注新規訂正削除)の構成

訂正削除クエリ デザインビュー

クエリの内容

項目 内容
対象テーブル T20受注M
削除範囲(From) T20受注M.*(全フィールド)
抽出条件(Where) 手配番号 = [Forms]![F20受注新規訂正]![手配番号]

手配番号1件を条件に絞り込んでからレコードごと削除する、シンプルな削除クエリです。

手配番号の自動採番と全角変換のマクロ設計

手配番号(注文番号)は客先の注文番号をそのまま使うのが基本ですが、注文番号がない場合に備えて自動採番も選べます。また、入力者が全角で打ってしまっても自動で半角に統一されます。

自動採番の仕組み

自動採番は「連番」「採番」という2つの非連結コントロールの組み合わせで成立しています。どちらもテキストボックスのコントロールソースに直接計算式が入っており、マクロではなくフォーム自体が常に最新の値を表示する仕組みです。「連番」「採番」コントロールは 可視=いいえ でフォームには表示されていないテキストボックスになります。

非表示のため任意の位置に配置しています

連番コントロール

コントロールソース:=DCount("*","T20受注自動手番")+1

T20受注自動手番テーブルの現在のレコード件数を数え、それに1を足した値を常に表示します。つまり「今日これまでに何件自動採番されたか+1」=「次に採番すべき番号」がリアルタイムで表示され続けます。

採番コントロール

コントロールソース:=Format(Date(),"yymmdd") & "-" & Format([連番],"000")

今日の日付(yymmdd形式)と、連番コントロールの値を3桁ゼロ埋めした数字を「-」でつなぎ、「260723-013」のような手配番号の形式に組み立てます。

具体例で見る流れ

タイミング T20受注自動手番の件数 連番 採番
本日13件目の受注を登録しようとしている 12件 13 260723-013
上記を登録(Q20受注新規自動手番追加でレコード追加) 13件 14 260723-014
続けて次の受注を登録しようとする 13件 14 260723-014

登録が完了するたびにT20受注自動手番へ1件追加されるため、連番が自動的に繰り上がり、常に「次の空き番号」を指し続けます。

採番が手配番号へ反映されるタイミング

採番コントロール自体は常に裏で計算され続けていますが、実際に手配番号欄へ反映されるのは以下の場面のみです。

場面 呼び出し元
図番確定時、手配番号が未入力の場合 サブマクロ:図番
受注区分を切り替えた場合 サブマクロ:受注区分
受注履歴から適用した場合 サブマクロ:受注履歴適用

つまり「客先注文番号を手配番号欄に手入力していれば、その値がそのまま優先される」「何も入力していなければ、上記いずれかのタイミングで採番コントロールの値が自動的に転記される」という、あくまで手入力を邪魔しない補助的な位置づけになっています。

前段の日次クリーンアップとのつながり

この連番はT20受注自動手番の件数に依存しているため、以前解説した「画面を開く仕組み」の自動手番クリーンアップ(前日以前の使用済み番号の削除)と対になっています。日付が変わって前日分が削除されることで、DCountの母数が翌日は0件からリセットされ、連番も1から数え直されます。

手配番号の全角半角変換

入力者が全角で打っても、フォーカスが外れた瞬間に自動で半角へ変換されます。

サブマクロ:手配番号

サブマクロのテキスト表示
サブマクロ:手配番号

値の代入
    アイテム = [手配番号]
    式 = StrConv([手配番号],8)
マクロの中止
サブマクロの最後

マクロの概要

処理 内容
値の代入 StrConv([手配番号],8) により全角入力を半角へ強制変換

マクロの設置場所

項目 内容
フォーム F20受注新規
コントロール 手配番号
イベント フォーカス喪失時
呼び出し元 M20受注 > サブマクロ:手配番号

数値は集計・並び替えの精度を保つため、テキストは表示スペースをより多く確保するため、それぞれ半角へ統一しています。


受注区分2:「マスタなし」の仕組みとマクロ設計

受注区分2(マスタなし)は、製品マスタに登録する前の図番のまま受注するパターンです。試作品や単発の注文、金型代・治工具代・印刷版代など、正式な図番登録を伴わない案件で使用します。図番欄には自動的に「T*」がセットされ、製品マスタ未登録の受注であることが一目でわかるようになっています。

登録区分「マスタなし」 選択時の画面(薄い黄色の項目が入力対象)

受注区分2:「マスタなし」選択時の画面表示

区分2を選ぶと、図番欄が手入力可能な状態で表示され、製品マスタボタン・材料受注・シート類選択など他区分専用のコントロールはすべて非表示に切り替わります。

表示コントロール構成

コントロール 状態
図番 表示・入力可能(初期値「T*」)
製品マスタボタン 非表示
材料受注a 非表示
有償価格ボタン 非表示
シート類選択ボタン 非表示
手配番号 採番コントロールの値を自動セット(独自番号への手入力上書きも可能)
単価 非連結(手入力)
図番の先頭に「T」が付くことは、社内で「取引先には売上が立つが、製品マスタには存在しない図番」という意味として全員が理解しているルールです。データ上に別フラグを持たせるのではなく、図番の表記そのものに意味を持たせることで、一覧や帳票を見ただけで担当者全員が同じ基準で判断できます。社内の独自ルールになります。

受注区分マクロにおける区分2の処理

受注区分をマスタなしに切り替えると、対象コントロールの表示・非表示の切り替えに加えて、図番へ「T*」を自動セットする処理が実行されます。この処理は、受注区分1・3・4の切り替えと同じ「受注区分」サブマクロの中に、区分2用の分岐として組み込まれています。

サブマクロ:受注区分(区分2の分岐部分のみ)

サブマクロのテキスト表示
If [受注区分]=2 Then
 値の代入 ([Forms]![F20受注新規]![図番].[Visible], True)
 値の代入 ([Forms]![F20受注新規]![製品マスタ].[Visible], False)
 値の代入 ([Forms]![F20受注新規]![材料受注a].[Visible], False)
 値の代入 ([Forms]![F20受注新規]![有償価格].[Visible], False)
 値の代入 ([Forms]![F20受注新規]![シート類選択].[Visible], False)
 値の代入 ([図番], "T*")
 値の代入 ([Forms]![F20受注新規]![手配番号], [Forms]![F20受注新規]![採番])
 値の代入 ([Forms]![F20受注新規]![単価], Null)
 コントロールの移動 (取引先コード)
Else
 値の代入 ([図番], Null)
If 文の最後

マクロの概要

項目 内容
目的 区分2選択時に必要なコントロールだけを表示し、図番へ「T*」を初期セットする
実行タイミング 受注区分オプショングループの更新後処理(受注区分=2が選ばれた時)
処理内容 図番・手配番号を表示、製品マスタ関連ボタンを非表示→図番に「T*」を代入→手配番号に採番コントロールの値を代入→単価をクリア→取引先コードへフォーカス移動

マクロの設置場所

項目 内容
格納先 M20受注共通マクロ内「受注区分」サブマクロ(区分2の分岐)
呼び出し元 F20受注新規フォームの受注区分オプショングループ、更新後処理

図番欄のフォーカス取得マクロ「取引先図番」

区分2で図番欄にフォーカスが移ると、カーソル位置を「T*」の末尾へ自動的に移動させる処理が働きます。手入力の続きをそのまま打てるようにするための一手間です。

サブマクロ:取引先図番(フォーカス取得時)

サブマクロのテキスト表示
サブマクロ:取引先図番
プロシージャの実行
 プロシージャ名  [図番].Dropdown
If [受注区分]=2 Then
 値の代入
  アイテム = [図番].[SelStart]
  式    = Len([図番])
 マクロの中止
If 文の最後
サブマクロの最後

マクロの概要

項目 内容
目的 区分2の場合、図番欄のカーソル位置を文字列の末尾(「T*」の直後)にセットする
実行タイミング 図番コンボボックスのフォーカス取得時
処理内容 ドロップダウンを開くプロシージャ実行→区分2ならSelStartへLen([図番])を代入しカーソルを末尾に移動

マクロの設置場所

項目 内容
格納先 F20受注新規フォームの図番コンボボックス、フォーカス取得時
呼び出し元 ユーザーが図番欄にフォーカスした時点で自動実行
図番欄には「T*」があらかじめ入っていますが、フォーカスを移すたびにカーソルが自動で文字列の末尾に移動するため、ユーザーは「T*」を選択し直したり削除したりする手間なく、そのまま続きの文字を入力するだけで固有の図番が完成します。

登録ボタンにおける区分2の連続登録処理

区分2の受注は、金型代や治工具代のように1回の取引先で複数件続けて発生することが多いため、登録ボタンには「登録後も同じ取引先のまま次の入力を続けられる」専用の後処理が組み込まれています。

サブマクロ:受注登録(区分2の場合)

サブマクロのテキスト表示
警告音
If MsgBox("受注を登録してよろしいですか?",4+32,"確認")=6 Then
 メッセージの設定(いいえ)
 クエリを開く(Q20受注新規追加, データシート, 編集)
 クエリを開く(Q20受注新規自動手番追加, データシート, 編集)
 メッセージボックス(新規受注登録しました, はい, なし, 登録済)
 マクロの実行 (M20受注.キャンセル,,)
 マクロの実行 (M20受注.登録区分2,,)
 コントロールの移動(取引先コード)
 再クエリ ()
 マクロの中止
Else
 メッセージボックス(処理を中止します, はい, なし, 中止)
 マクロの中止
If 文の最後

マクロの概要

項目 内容
目的 登録完了後、通常のキャンセル処理に続けて区分2専用の後処理を実行し、続けて次の受注を入力できる状態に戻す
実行タイミング 登録ボタンクリック時、確認ダイアログでOK後
処理内容 追加クエリ2本を実行→完了メッセージ→通常のキャンセル処理(全項目クリア)→登録区分2マクロを実行→取引先コードへフォーカス移動→再クエリ

マクロの設置場所

項目 内容
格納先 F20受注新規フォームの「登録」ボタン
呼び出し元 ユーザーによる登録ボタンクリック

◆スクショ サブマクロ:登録区分2

サブマクロのテキスト表示
サブマクロ:登録区分2
If [受注区分]=2 Then
 値の代入 ([Forms]![F20受注新規]![図番].[Visible], True)
 値の代入 ([Forms]![F20受注新規]![製品マスタ].[Visible], False)
 値の代入 ([Forms]![F20受注新規]![材料受注a].[Visible], False)
 値の代入 ([Forms]![F20受注新規]![有償価格].[Visible], False)
 値の代入 ([Forms]![F20受注新規]![シート類選択].[Visible], False)
 値の代入 ([図番], "T*")
 値の代入 ([Forms]![F20受注新規]![手配番号], [Forms]![F20受注新規]![採番])
 値の代入 ([Forms]![F20受注新規]![単価], Null)
 コントロールの移動
  コントロール名  取引先コード
If 文の最後
サブマクロの最後

マクロの概要

項目 内容
目的 全項目クリア後の画面を、再び区分2の入力ができる状態(図番=T*、必要コントロールのみ表示)に戻す
実行タイミング 受注登録マクロから、区分2の登録完了直後に呼び出される
処理内容 区分2用のコントロール表示・非表示を再設定→図番に「T*」を再セット→手配番号に新しい採番値を代入→取引先コードへフォーカス移動

マクロの設置場所

項目 内容
格納先 M20受注共通マクロ内「登録区分2」サブマクロ
呼び出し元 受注登録マクロからのマクロの実行アクション
キャンセルマクロで一度すべての項目をクリアした直後に、登録区分2マクロが区分2用の状態を再構築します。全項目クリア→区分2の状態に戻す、という2段階を挟むことで、フォームを閉じ直すことなく同じ取引先へ次々と「T*」図番の受注を続けて登録できます。金型代や治工具代のように、1回の取引先とのやり取りで複数の請求項目が発生する業務にちょうど合った作りです。

受注区分3: 「材料受注」の仕組みとマクロ設計

材料受注(受注区分3)は、外製先へ材料を有償支給する際に発生する受注パターンです。外製先からの材料注文を、通常の製品受注とは別枠で登録します。

コンボボックスに直接入力するか値集合ソースから選択

材料受注コンボボックスに材料名を直接入力するか、リストから選択すると更新後処理で材料単価が転記されます。

サブマクロ:材料受注

サブマクロのテキスト表示
サブマクロ:材料受注

値の代入
    アイテム = [Forms]![F20受注新規]![単価]
    式 = DLookup("単価","T36仕入先有償価格","[ID]=[Forms]![F20受注新規]![ID] ")

値の代入
    アイテム = [図番]
    式 = [材料受注a]

マクロの中止
サブマクロの最後

マクロの概要

処理 内容
値の代入 T36仕入先有償価格からIDをキーに単価をDLookupで転記
値の代入 材料受注コンボの値を図番欄へ転記

マクロの設置場所

項目 内容
フォーム F20受注新規
コントロール 材料受注a
イベント 更新後処理
呼び出し元 M20受注 > サブマクロ:材料受注

材料選択ボタンで絞り込み検索から材料名を選択して適用ボタンで転記する

材料選択ボタンを押すとT36仕入先有償価格ポップアップフォームで材料一覧(品名・単価・旧単価・備考)が開き、適用ボタンで新規受注登録画面に転記されます。

T36仕入先有償価格 フォーム

フォームビュー デザインビュー

材料有償単価選択フォームを開く

サブマクロ:材料有償適用開く

サブマクロのテキスト表示
サブマクロ:材料有償適用開く
フォームを開く(F36仕入先有償価格, フォーム ビュー, , , , 標準)
値の代入
 アイテム = [Forms]![F36仕入先有償価格]![新規登録].[Visible]
 式    = False
値の代入
 アイテム = [Forms]![F36仕入先有償価格]![F36仕入先有償価格サブ]![適用].[Visible]
 式    = True
マクロの中止
サブマクロの最後

マクロの概要

項目 内容
目的 材料有償価格ポップアップを開き、受注新規登録から呼ばれたことを示すボタン表示に切り替える
実行タイミング 受注新規登録フォームの「材料選択」ボタンクリック時
処理内容 フォームを標準モードで開く→新規登録ボタンを非表示にする→適用ボタンを表示する

マクロの設置場所

項目 内容
格納先 F20受注新規フォームの「材料選択」ボタン
呼び出し元 ユーザーによるボタンクリック
このポップアップは材料有償価格の編集画面としても使われており、通常は品名を編集するための「編集」ボタンが表示されています。編集画面から開いた場合はこのボタンを裏に隠し、代わりに同じ位置へ「適用」ボタンを表示させることで、見た目上は1つのボタンが場面によって役割を変えているように見せています。ボタンを増やすのではなく、Visibleの切り替えだけで1つの画面を2つの用途に対応させる工夫です。

適用ボタン(F36仕入先有償価格)と「サブマクロ:材料有償適用」

一覧から品名を選んで適用ボタンを押すと、選択した品名が材料受注欄と図番欄の両方へ転記され、単価も一緒に転記されます。

サブマクロ:材料有償適用

サブマクロのテキスト表示
サブマクロ:材料有償適用

値の代入
    アイテム = [Forms]![F20受注新規]![材料受注a]
    式 = [Forms]![F36仕入先有償価格]![F36仕入先有償価格サブ]![品名]

値の代入
    アイテム = [Forms]![F20受注新規]![図番]
    式 = [Forms]![F36仕入先有償価格]![F36仕入先有償価格サブ]![品名]

値の代入
    アイテム = [Forms]![F20受注新規]![単価]
    式 = [Forms]![F36仕入先有償価格]![F36仕入先有償価格サブ]![単価]

ウィンドウを閉じる
    オブジェクトの種類 フォーム
    オブジェクト名 F36仕入先有償価格
    オブジェクトの保存 確認

コントロールの移動(納期)
マクロの中止
サブマクロの最後

マクロの概要

ステップ 処理 内容
1 値の代入 選択した品名を材料受注欄へ転記
2 値の代入 同じ品名を図番欄へも転記(材料受注は図番=品名として扱う設計)
3 値の代入 選択した品名の単価を単価欄へ転記
4 ウィンドウを閉じる F36仕入先有償価格フォームを閉じる
5 コントロールの移動 納期へフォーカスを移動

マクロの設置場所

項目 内容
フォーム F36仕入先有償価格
コントロール 適用ボタン(サブフォーム内)
イベント クリック時
呼び出し元 M20受注 > サブマクロ:材料有償適用

図番欄にも品名が転記されるのは、材料受注(受注区分3)では図番という概念自体を持たず、代わりに材料の品名を図番欄に格納して管理しているためです。


受注区分4:「シート受注」の仕組みとマクロ設計

シート受注(受注区分4)は、製品マスタとは独立したシート図番(規則的な命名:材質・色調・硬度・厚み・サイズの組み合わせ)から選択する受注パターンです。シート選択ボタンを押すとポップアップが開き、5項目の絞り込み検索からシート図番を選び、適用ボタンでフォームへ転記されます。

サブマクロ:シート類選択

サブマクロのテキスト表示
サブマクロ:シート類選択

フォームを開く(F20受注シート類選択, フォーム ビュー, , , , 標準)
値の代入
    アイテム = [Forms]![F20受注シート類選択]![F20受注シート類選択サブ]![選択]
    式 = 1
マクロの中止
サブマクロの最後

マクロの設置場所

項目 内容
フォーム F20受注新規
コントロール シート選択ボタン
イベント クリック時
呼び出し元 M20受注 > サブマクロ:シート類選択

シート図番検索 一覧画面

シート類選択ポップアップフォームの解説ページ

シート図番検索

シート受注の図番は、製品マスタで登録された規則性のある命名(材質・色調・硬度・厚み・サイズの組み合わせ)に沿っています。この規則性を活かし、5項目の絞り込み検索だけでお目当てのシート図番へ辿り着けるようにしたのが、シート類選択ポップアップで[…]


Q20受注新規クエリの構成

登録ボタンが押されると、フォーム上の値を書き込むための2本のクエリが動きます。

クエリデザインビュー

T20受注MとT20受注自動手番へ、それぞれ別のクエリで同時にレコードを追加します。

Q20受注新規追加 追加クエリ(一部)

クエリの概要

Q20受注新規追加でT20受注Mへ、Q20受注新規自動手番追加でT20受注自動手番へ、それぞれレコードの追加クエリとして書き込まれます。

Q20受注新規追加 フィールド構成

フィールド 内容
受注区分・受注日・取引先コード・手配番号・図番ID・図番・納期・数量・単価・備考 フォーム上の入力値をそのまま追加
分納残数 数量と同値で初期化
成形課・加工課・印刷課・成形フォーキャスト・加工フォーキャスト 図番確定時に転記された課フラグをそのまま追加
従業員コード 発注者コード
材料手配 受注区分3のときTrue(IIf式で判定)

Q20受注新規自動手番追加 フィールド構成

フィールド 内容
自動手配番号 [Forms]![F20受注新規]![手配番号]
登録日 Date()

受注管理新規登録フォームの各コントロール設定

登録・印刷・締め処理まで、画面下部に並ぶボタン群の役割を1つずつ確認します。

取引先検索ボタン

取引先名コンボのフォーカス取得時と同じ検索ポップアップを開くボタンです。

取引先検索の仕組み

取引先名コンボのフォーカス取得時に自動で開く検索ポップアップです。他の検索ポップアップと違い、あえて住所・電話番号・FAXまでリストに表示しています。これは、客先から届いた注文書に記載された住所や電話番号を見比べて、マスタ登録内容と相違がないか受注時点で最終確認できるようにするためです。

取引先あいまい検索 フォームビュー

サブマクロ:取引先検索

サブマクロのテキスト表示
サブマクロ:取引先検索

フォームを開く(F20受注新規取引先検索, フォーム ビュー, , , , 標準)
マクロの中止
サブマクロの最後

マクロの設置場所

項目 内容
フォーム F20受注新規
コントロール 取引先コード
イベント フォーカス取得時
呼び出し元 M20受注 > サブマクロ:取引先検索

Q20受注新規取引先検索 フィールド構成

フィールド テーブル 抽出条件
取引先コード・取引先名・略称・ID・取引区分・電話番号・FAX T05取引先M
住所 T05取引先M [都道府県]&[住所1]&[住所2]を結合表示
フリガナ T05取引先M Like “” & [Forms]![F20受注新規取引先検索]![検索] & “

フリガナ検索欄に入力すると、部分一致(あいまい検索)で候補を絞り込みます。都道府県・住所1・住所2の3フィールドを1列に結合して表示することで、注文書の住所欄と見比べやすいレイアウトにしています。

適用ボタンで新規登録フォームに取引先名が転記されます。

サブマクロ:取引先適用

サブマクロのテキスト表示
サブマクロ:取引先適用

値の代入
    アイテム = [Forms]![F20受注新規]![取引先コード]
    式 = [Forms]![F20受注新規取引先検索]![F20受注新規取引先検索サブ]![取引先コード]

ウィンドウを閉じる(フォーム, F20受注新規取引先検索, 確認)

If [Forms]![F20受注新規]![受注区分]=2 Then
    値の代入([Forms]![F20受注新規]![図番], "T*")
If 文の最後
コントロールの移動(取引先コード)
再クエリ()
マクロの中止
サブマクロの最後

マクロの概要

ステップ 処理 内容
1 値の代入 選択行の取引先コードを新規受注フォームへ転記
2 ウィンドウを閉じる 検索ポップアップを閉じる
3 If:受注区分=2 マスタなし受注の場合、図番欄に「T*」を自動入力
4 コントロールの移動・再クエリ 取引先コードへフォーカスを戻し、フォームを再クエリ

マクロの設置場所

項目 内容
フォーム F20受注新規取引先検索
コントロール 適用ボタン(サブフォーム内)
イベント クリック時
呼び出し元 M20受注 > サブマクロ:取引先適用
コード検索の役割だけなら取引先名と略称だけで十分ですが、あえて住所・電話番号・FAXまで表示することで、受注入力の最中に注文書との照合作業を兼ねられます。別画面で取引先マスタを開き直す手間を省き、受注登録の1ステップの中に確認作業を組み込んでいる設計です。

製品マスタボタン

受注入力中に、入力済みの図番の詳細情報(品名・単価・在庫数・各課タグなど)をすぐに確認できるショートカットボタンです。図番が未入力の場合はボタンを押してもエラーメッセージが出ます。

受注新規登録フォーム(ボタン押す前)/ 製品マスタリスト(呼出後)

製品マスタボタンを押す前 押したあとに表示される製品マスタリスト画面

サブマクロ:製品マスタ

サブマクロのテキスト表示
サブマクロ:製品マスタ

If IsNull([図番]) Then
    メッセージボックス(図番が選択されていません。図番を入力してからボタンを押してください, はい, 警告, 未登録)
    コントロールの移動(図番)
    マクロの中止
Else
    フォームを開く(F10製品リスト, フォーム ビュー, , , , 標準)
    値の代入
        アイテム = [Forms]![F10製品リスト]![図番検索]
        式 = [Forms]![F20受注新規]![図番]
    再クエリ
        コントロール名
    マクロの中止
If 文の最後
サブマクロの最後

マクロの概要

ステップ 処理 内容
1 If:図番がNull 「図番が選択されていません」で中断
2 Else:フォームを開く F10製品リストをフォームビューで開く
3 値の代入 製品リストの図番検索欄へ、受注新規フォームの図番を転記
4 再クエリ 転記された図番でリストを絞り込み表示

マクロの設置場所

項目 内容
フォーム F20受注新規
コントロール 製品マスタボタン
イベント クリック時
呼び出し元 M20受注 > サブマクロ:製品マスタ

絞り込まれた製品マスタリストから詳細ボタンを押すと、図番の詳細情報(品名・単価・在庫数・各課タグなど)が確認できます。

製品マスタ「詳細」の解説

関連記事

製品マスタの編集フォームは新規登録フォームと同じ非連結の設計思想で構成されています。製品マスタ基本情報フォームの編集ボタンから図番IDを引き継ぎ、DLookupで全フィールドを転記した上で編集・更新する仕組みです。テーブルに直結させない理由[…]

「製品マスタを開く→図番検索欄に入力する→再検索する」という3ステップの操作を、ボタン1つで自動的に済ませてしまう仕組みです。受注入力の手を止めずに製品情報を参照できるよう、転記と再クエリまでマクロ側で肩代わりしています。

納期コントロールとカレンダー

手入力による日付間違いを防ぐため、納期コントロールはカレンダーから選択する仕様です。フォーカス取得時にカレンダーが自動表示されます。日付の入力ミスが散見される中、納期の入力ミスが取り返しの付かないことにつながるためカレンダーから選択する方法でミスを軽減させるための手段にしています。

マクロビルダー:納期(フォーカス取得時)

サブマクロのテキスト表示
メニューコマンドの実行
コマンド 日付選択カレンダーの表示

マクロの設置場所

項目 内容
フォーム F20受注新規
コントロール 納期
イベント フォーカス取得時
呼び出し元 M20受注 > メニューコマンドの実行:日付選択カレンダーの表示

備考履歴ボタン

客先から「○○倉庫の第三棚行き」のような送り状記載用の指示を受けることがあり、同じ客先には毎回同じ、あるいは似た指示が来ることが多くあります。備考履歴ボタンは、同一取引先の過去の備考だけを一覧表示し、入力の手間を省くための機能です。

取引先コードをキーに、過去の備考データが1件でもあればポップアップフォームを開きます。

サブマクロ:備考履歴

サブマクロのテキスト表示
サブマクロ:備考履歴

If DCount("*","Q20受注備考履歴")=0 Then
    メッセージボックス(備考の登録履歴はありません, はい, なし, 履歴なし)
    マクロの中止
Else
    フォームを開く(F20受注備考履歴, フォーム ビュー, , , , 標準)
    マクロの中止
If 文の最後
サブマクロの最後

マクロの概要

ステップ 処理 内容
1 If:履歴が0件 「備考の登録履歴はありません」で終了
2 Else:フォームを開く F20受注備考履歴をフォームビューで開く

マクロの設置場所

項目 内容
フォーム F20受注新規
コントロール 備考履歴ボタン
イベント クリック時
呼び出し元 M20受注 > サブマクロ:備考履歴

備考登録履歴 ポップアップフォームビュー

Q20受注備考履歴 フィールド構成

フィールド テーブル 内容
備考 T20受注M グループ化、Is Not Null(重複除去・空欄除外)
取引先コード T20受注M グループ化、抽出条件:[Forms]![F20受注新規]![取引先コード]

同一取引先の過去の備考だけを、重複を除いてグループ化した状態で一覧表示します。

適用ボタンとサブマクロ「備考適用」

一覧から該当する備考を選んで適用ボタンを押すと、備考欄が空であればそのまま代入、すでに何か入力されていれば半角スペースを挟んで末尾に追記されます。

サブマクロ:備考適用

サブマクロのテキスト表示
サブマクロ:備考適用

If IsNull([Forms]![F20受注新規]![備考]) Then
    値の代入
        アイテム = [Forms]![F20受注新規]![備考]
        式 = [Forms]![F20受注備考履歴]![備考]
    ウィンドウを閉じる(フォーム, F20受注備考履歴, 確認)
    コントロールの移動(備考)
    マクロの中止
Else
    値の代入
        アイテム = [Forms]![F20受注新規]![備考]
        式 = [Forms]![F20受注新規]![備考] & " " & [Forms]![F20受注備考履歴]![備考]
    ウィンドウを閉じる(フォーム, F20受注備考履歴, 確認)
    コントロールの移動(備考)
    マクロの中止
If 文の最後
サブマクロの最後

マクロの概要

ステップ 処理 内容
1 If:備考欄がNull 選択した履歴の備考をそのまま代入
2 Else 既存の備考に半角スペース+選択した履歴を追記
3 ウィンドウを閉じる・コントロールの移動 備考履歴フォームを閉じ、備考欄へフォーカスを戻す

マクロの設置場所

項目 内容
フォーム F20受注備考履歴
コントロール 適用ボタン
イベント クリック時
呼び出し元 M20受注 > サブマクロ:備考適用
備考欄がすでに埋まっているかどうかで「そのまま入れる」「スペースを挟んで追記する」を自動的に切り替えているため、複数の指示を1つの備考欄に積み重ねていっても、既存の入力内容を消してしまう心配がありません。

登録ボタン

必須項目チェック・区分別の整合性チェック・手配番号の重複チェックを経て、確認メッセージ後にT20受注Mへ登録します。

サブマクロ:受注登録

サブマクロのテキスト表示
サブマクロ:受注登録

If IsNull([受注日]) Then
    メッセージボックス(受注日が登録されていません, はい, 警告, 未登録)
    コントロールの移動(受注日)
    マクロの中止
If 文の最後

If IsNull([発注者コード]) Then
    メッセージボックス(発注者が登録されていません, はい, 警告, 未登録)
    コントロールの移動(発注者コード)
    マクロの中止
If 文の最後

If IsNull([取引先コード]) Then
    メッセージボックス(取引先名が登録されていません, はい, 警告, 未登録)
    コントロールの移動(取引先コード)
    マクロの中止
If 文の最後

If [受注区分]=3 Then
    If IsNull([材料受注a]) Then
        メッセージボックス(材料受注が登録されていません, はい, 警告, 未登録)
        コントロールの移動(材料受注a)
        マクロの中止
    If 文の最後
If 文の最後

If IsNull([図番]) Then
    メッセージボックス(図番が登録されていません, はい, 警告, 未登録)
    コントロールの移動(図番)
    マクロの中止
If 文の最後

If [受注区分]=1 Then
    If DCount("[図番]","T10製品M","[図番] = [Forms]![F20受注新規]![図番] ")=0 Or IsNull(DCount("[図番]","T10製品M","[図番] = [Forms]![F20受注新規]![図番] ")) Then
        メッセージボックス(図番が製品マスタに存在しません, はい, 警告, エラー)
        コントロールの移動(図番)
        マクロの中止
    If 文の最後
If 文の最後

If IsNull([手配番号]) Then
    メッセージボックス(手配番号が登録されていません, はい, 警告, 未登録)
    コントロールの移動(手配番号)
    マクロの中止
If 文の最後

If IsNull([納期]) Then
    メッセージボックス(納期が登録されていません, はい, 警告, 未登録)
    コントロールの移動(納期)
    マクロの中止
If 文の最後

If IsNull([数量]) Then
    メッセージボックス(数量が登録されていません, はい, 警告, 未登録)
    コントロールの移動(数量)
    マクロの中止
If 文の最後

If IsNull([単価]) Then
    メッセージボックス(単価が登録されていません, はい, 警告, 未登録)
    コントロールの移動(納入先)
    マクロの中止
If 文の最後

If DCount("手配番号","T20受注M","[手配番号] = Forms![F20受注新規]![手配番号] ")<>0 And DCount("手配番号","T20受注M","[手配番号] = Forms![F20受注新規]![手配番号] ") Is Not Null Then
    メッセージボックス(登録しようとしたデータの手配番号は既に登録されています。手配番号を取り直してください。, はい, 警告, 重複)
    コントロールの移動(手配番号)
    マクロの中止
If 文の最後

If IsNull([備考]) Then
    値の代入([備考], " ")
If 文の最後

警告音
If MsgBox("受注を登録してよろしいですか?",4+32,"確認")=6 Then
    メッセージの設定(いいえ)
    クエリを開く(Q20受注新規追加, データシート, 編集)
    クエリを開く(Q20受注新規自動手番追加, データシート, 編集)
    メッセージボックス(新規受注登録しました, はい, なし, 登録済)
    マクロの実行(M20受注.キャンセル, , )
    コントロールの移動(取引先コード)
    再クエリ()
    マクロの中止
Else
    メッセージボックス(処理を中止します, はい, なし, 中止)
    マクロの中止
If 文の最後
サブマクロの最後

マクロの概要

ステップ チェック内容 未入力・不正時の動作
1〜3 受注日・発注者コード・取引先コードの必須チェック メッセージ表示→該当コントロールへ移動→中断
4 受注区分=3のとき材料受注aの必須チェック 同上
5 図番の必須チェック 同上
6 受注区分=1のとき図番が製品マスタに存在するかチェック 「図番が製品マスタに存在しません」→中断
7〜9 手配番号・納期・数量・単価の必須チェック 同上
10 手配番号の重複チェック(T20受注M内でDCount) 「手配番号は既に登録されています」→中断
11 備考がNullなら空文字を代入
12 確認メッセージ「受注を登録してよろしいですか?」 はいでQ20受注新規追加・Q20受注新規自動手番追加を実行し登録完了、いいえで中断

マクロの設置場所

項目 内容
フォーム F20受注新規
コントロール 登録ボタン
イベント クリック時
呼び出し元 M20受注 > サブマクロ:受注登録
必須項目→区分別の追加チェック→存在チェック→重複チェックという順序でバリデーションが組まれているため、入力者はエラーが出るたびに該当コントロールへ自動でカーソルが移動し、どこを直せばよいか迷いません。

複数登録ボタン

1枚の注文書に同一図番で納期や数量違いの注文が複数含まれる場合、専用フォームで最大10件を一気に登録できます。

複数登録フォームの仕組み

関連記事

複数登録は、1枚の注文書に同一図番で納期や数量が異なる注文が複数含まれる場合に、最大10件を1つのフォームでまとめて登録できる機能です。取引先・図番・単価などの共通項目は1回だけ入力し、行ごとに手配番号・納期・数量・メモだけを個別入力する構[…]

キャンセルボタン

入力中の内容をすべてクリアします。このサブマクロは登録後に入力したデータをクリアにすることにも使われます。

サブマクロ:キャンセル

サブマクロのテキスト表示
サブマクロ:キャンセル

値の代入([Forms]![F20受注新規]![取引先コード], Null)
値の代入([Forms]![F20受注新規]![図番], Null)
値の代入([Forms]![F20受注新規]![材料受注a], Null)
値の代入([Forms]![F20受注新規]![手配番号], Null)
値の代入([Forms]![F20受注新規]![納期], Null)
値の代入([Forms]![F20受注新規]![数量], Null)
値の代入([Forms]![F20受注新規]![単価], Null)
値の代入([Forms]![F20受注新規]![備考], Null)
値の代入([Forms]![F20受注新規]![製品マスタ備考], Null)
値の代入([Forms]![F20受注新規]![成形課], False)
値の代入([Forms]![F20受注新規]![加工課], False)
値の代入([Forms]![F20受注新規]![印刷課], False)
値の代入([Forms]![F20受注新規]![成形フォーキャスト], False)
値の代入([Forms]![F20受注新規]![加工フォーキャスト], False)
値の代入([Forms]![F20受注新規]![現品票区分], Null)
値の代入([Forms]![F20受注新規]![納期設定], 0)
値の代入([Forms]![F20受注新規]![有償価格].Visible, False)
再クエリ()
マクロの中止
サブマクロの最後

マクロの設置場所

項目 内容
フォーム F20受注新規
コントロール キャンセルボタン
イベント クリック時
呼び出し元 M20受注 > サブマクロ:キャンセル

材料手配書印刷ボタン

材料を有償支給している外製先向けの製造指示書を印刷します。

材料手配書レポート デザインビュー

サブマクロ:材料注文書印刷

サブマクロのテキスト表示
サブマクロ:材料注文書印刷

If DCount("*","Q20受注新規サブ")=0 Then
    メッセージボックス(印刷するデータがありません, はい, 警告, データなし)
    マクロの中止
If 文の最後

警告音
If MsgBox("注文書をプレビューで確認してから印刷してください。よろしいですか?",4+32,"確認")=6 Then
    レポートを開く(R20受注材料手配書印刷, 印刷プレビュー, , , 標準)
    If MsgBox("専用用紙をセットしてください。注文書を印刷します。よろしいですか?",4+32,"確認")=6 Then
        レポートを開く(R20受注材料手配書印刷, 印刷, , , 標準)
        メッセージボックス(注文書の印刷が完了しました。, はい, なし, 印刷完了)
        ウィンドウを閉じる(レポート, R20受注材料手配書印刷, 確認)
        マクロの中止
    Else
        メッセージボックス(印刷を中止しました, はい, なし, 中止)
        ウィンドウを閉じる(レポート, R20受注材料手配書印刷, 確認)
        マクロの中止
    If 文の最後
Else
    メッセージボックス(処理を中止しました, はい, なし, 中止)
    マクロの中止
If 文の最後
サブマクロの最後

マクロの概要

ステップ 処理 内容
1 If:印刷対象0件 「印刷するデータがありません」で中断
2 確認メッセージ プレビュー確認の可否を確認
3 レポートを開く(印刷プレビュー) R20受注材料手配書印刷を表示
4 確認メッセージ 専用用紙セットの確認後、印刷実行
5 レポートを開く(印刷) 完了メッセージ後、レポートを閉じる

マクロの設置場所

項目 内容
フォーム F20受注新規
コントロール 材料手配書印刷ボタン
イベント クリック時
呼び出し元 M20受注 > サブマクロ:材料注文書印刷

材料手配書印刷のコントロールソース Q20受注材料手配書印刷クエリ(一部)

Q20受注材料手配書印刷 フィールド構成

フィールド テーブル 抽出条件
手配番号 T20受注M Not Like “F*” And Not Like “SS*”
発行 T20受注M False
材料手配 T20受注M True
受注日・取引先コード・取引先名・図番・納期・数量・単価・備考・品名 T20受注M/T05取引先M/T10製品M

製造依頼書印刷ボタン

主担当部署向けの製造指示書(兼納品書控・現品票・受領書)を印刷します。

製造依頼書レポート デザインビュー

サブマクロ:製造依頼書印刷

サブマクロのテキスト表示
サブマクロ:製造依頼書印刷

If DCount("*","Q20受注新規サブ")=0 Then
    メッセージボックス(印刷するデータがありません, はい, 警告, データなし)
    マクロの中止
If 文の最後

警告音
If MsgBox("製造依頼書をプレビューで確認してから印刷してください。よろしいですか?",4+32,"確認")=6 Then
    レポートを開く(R20受注製造依頼書印刷, 印刷プレビュー, , , 標準)
    If MsgBox("専用用紙をセットしてください。製造依頼書を印刷します。よろしいですか?",4+32,"確認")=6 Then
        レポートを開く(R20受注製造依頼書印刷, 印刷, , , 標準)
        メッセージボックス(製造依頼書の印刷が完了しました。, はい, なし, 印刷完了)
        ウィンドウを閉じる(レポート, R20受注製造依頼書印刷, 確認)
        マクロの中止
    Else
        メッセージボックス(印刷を中止しました, はい, なし, 中止)
        ウィンドウを閉じる(レポート, R20受注製造依頼書印刷, 確認)
        マクロの中止
    If 文の最後
Else
    メッセージボックス(処理を中止しました, はい, なし, 中止)
    マクロの中止
If 文の最後
サブマクロの最後

マクロの概要

材料手配書印刷と同じ「印刷対象確認→プレビュー確認→専用用紙確認→印刷→完了」の3段階確認フローです。

マクロの設置場所

項目 内容
フォーム F20受注新規
コントロール 製造依頼書印刷ボタン
イベント クリック時
呼び出し元 M20受注 > サブマクロ:製造依頼書印刷

製造依頼書のコントロールソース Q20受注製造依頼書印刷クエリ(一部)

Q20受注製造依頼書印刷 フィールド構成

フィールド テーブル 抽出条件
手配番号 T20受注M Not Like “F*” And Not Like “SS*”
発行 T20受注M False
材料手配 T20受注M False
受注日・取引先コード・取引先名・図番・納期・数量・単価・備考・品名・従業員コード・都道府県・住所1・住所2・電話番号・FAX・郵便番号・重要事項・図番ID T20受注M/T05取引先M/T10製品M/T01従業員M

受注日報印刷ボタン

その日処理した受注の一覧を保管用に印刷します。生産管理課が在庫数や担当課・フォーキャスト状況を一覧で把握するための帳票でもあります。

受注日報レポート デザインビュー

サブマクロ:受注日報印刷

サブマクロのテキスト表示
サブマクロ:受注日報印刷

If DCount("*","Q20受注新規サブ")=0 Then
    メッセージボックス(印刷するデータがありません, はい, 警告, データなし)
    マクロの中止
If 文の最後

警告音
If MsgBox("受注日報をプレビューで確認してから印刷してください。よろしいですか?",4+32,"確認")=6 Then
    レポートを開く(R20受注受注日報印刷, 印刷プレビュー, , , 標準)
    If MsgBox("受注日報を印刷します。よろしいですか?",4+32,"確認")=6 Then
        レポートを開く(R20受注受注日報印刷, 印刷, , , 標準)
        メッセージボックス(受注日報の印刷が完了しました。, はい, なし, 印刷完了)
        ウィンドウを閉じる(レポート, R20受注受注日報印刷, 確認)
        マクロの中止
    Else
        メッセージボックス(印刷を中止しました, はい, なし, 中止)
        ウィンドウを閉じる(レポート, R20受注受注日報印刷, 確認)
        マクロの中止
    If 文の最後
Else
    メッセージボックス(処理を中止しました, はい, なし, 中止)
    マクロの中止
If 文の最後
サブマクロの最後

マクロの概要

材料手配書印刷・製造依頼書印刷と同じ3段階確認フローです。

マクロの設置場所

項目 内容
フォーム F20受注新規
コントロール 受注日報印刷ボタン
イベント クリック時
呼び出し元 M20受注 > サブマクロ:受注日報印刷

受注日報のコントロールソース Q20受注受注日報印刷クエリ(一部)

Q20受注受注日報印刷 フィールド構成

フィールド テーブル 抽出条件
手配番号 T20受注M Not Like “F*” And Not Like “SS*” And Not Like “SY*”
発行 T20受注M False
受注日・取引先コード・取引先名・図番・納期・数量・単価・従業員コード・略称・在庫数・成形課・加工課・印刷課・成形フォーキャスト・加工フォーキャスト T20受注M/T05取引先M/T10製品M/T01従業員M
社内ルールとして、フォーキャスト発注には「F」、社内シート発注には「SS」、注文以外(作り直し等)には「SY」を手配番号の頭に付けることになっています。これらは売上が立たない受注のため、3つの印刷クエリすべてで該当プレフィックスの手配番号を自動的に除外し、正規の受注のみが帳票に印刷される仕組みになっています。

ABC商事データ取込ボタン

CSVデータで発注してくるお客様の注文データを自動で取り込む機能です。

◆リンクカード:ABC商事データ取込の仕組み(URL未定)

日次更新ボタン

その日登録した受注データを締め、各部署への仕入先発注データを自動生成する処理です。事前に「製造依頼書」と「受注日報」を発行しておくことが前提となります。

サブマクロ:日次更新

サブマクロのテキスト表示
サブマクロ:日次更新

警告音
If MsgBox("受注の日次更新を行います。「製造依頼書」と「受注日報」を発行してから作業してください。",4+32,"確認")=6 Then
    メッセージの設定(いいえ)
    クエリを開く(Q20受注日次出荷状況更新, データシート, 編集)
    クエリを開く(Q20受注日次成形課仕入先発注M追加, データシート, 編集)
    クエリを開く(Q20受注日次加工課仕入先発注M追加, データシート, 編集)
    クエリを開く(Q20受注日次印刷課仕入先発注M追加, データシート, 編集)
    クエリを開く(Q20受注日次仕入先発注M追加後更新, データシート, 編集)
    クエリを開く(Q20受注日次仕入先発注M手配成形更新, データシート, 編集)
    クエリを開く(Q20受注日次仕入先発注M手配加工更新, データシート, 編集)
    クエリを開く(Q20受注日次日報発行後更新, データシート, 編集)
    メッセージボックス(受注の日次更新は完了しました。, はい, なし, 完了)
    再クエリ()
    マクロの中止
Else
    メッセージボックス(処理を中止します, はい, なし, 中止)
    マクロの中止
If 文の最後
マクロの中止
サブマクロの最後

マクロの概要

ステップ クエリ 内容
1 Q20受注日次出荷状況更新 T13製品品証の出荷情報をT20受注Mへ転記(発行=False対象)
2〜4 Q20受注日次成形課/加工課/印刷課仕入先発注M追加 該当課の受注をT31仕入先発注Mへ追加。手配番号は元の番号+「-S/-K/-P」+仕入先コードで枝番生成
5 Q20受注日次仕入先発注M追加後更新 T20受注M側のエクスポートフラグをTrueに更新
6〜7 Q20受注日次仕入先発注M手配成形/加工更新 T31仕入先発注M側の手配・在庫出荷・課フラグ・発行・フォーキャストを初期化
8 Q20受注日次日報発行後更新 T20受注M.発行=True/T20受注自動手番.削除フラグ=Trueに更新

マクロの設置場所

項目 内容
フォーム F20受注新規
コントロール 日次更新ボタン
イベント クリック時
呼び出し元 M20受注 > サブマクロ:日次更新

サブマクロ内で実行されるクエリ

Q20受注日次出荷状況更新クエリ

Q20受注日次出荷状況更新 フィールド構成

フィールド テーブル 内容
出荷情報 T20受注M レコードの更新:[T13製品品証].[出荷情報]
発行 T20受注M 抽出条件:False

Q20受注日次成形課仕入先発注M追加クエリ(一部)

Q20受注日次成形課仕入先発注M追加 フィールド構成

フィールド テーブル 内容
受注日・図番・図番ID T20受注M レコードの追加:発注日・図番・図番ID
仕入先コード T30仕入先製品M レコードの追加:仕入先コード
手配番号 演算 [T20受注M]![手配番号] & "-S" & [T30仕入先製品M]![仕入先コード]
成形課 T10製品M 抽出条件:True
現品票区分 T30仕入先製品M 抽出条件:”1″
有効 T30仕入先製品M 抽出条件:True
エクスポート T20受注M 抽出条件:False
手配 T30仕入先製品M 抽出条件:True
発行 T20受注M 抽出条件:False
数量・分納残数・分納回数 T20受注M レコードの追加:数量・分納残数・分納回数
仕入先単価 T30仕入先製品M レコードの追加:仕入先単価
備考・加工課・印刷課 T20受注M レコードの追加:備考・加工課・印刷課
取引先コード T30仕入先製品M レコードの追加:取引先コード
従業員コード T20受注M レコードの追加:発注者コード
単位 T30仕入先製品M レコードの追加:単位
成形フォーキャスト T20受注M レコードの追加:成形フォーキャスト
手配番号(元) T20受注M レコードの追加:手配番号元
受注区分・納期設定 T20受注M レコードの追加:受注区分・設定数量・納期設定

Q20受注日次加工課仕入先発注M追加クエリ(一部)

Q20受注日次加工課仕入先発注M追加 フィールド構成

成形課と同じ構成で、以下の3点のみ差し替わります。

項目 成形課用 加工課用
手配番号の枝番 “-S” “-K”
課フラグ 成形課=True 加工課=True
現品票区分 “1” “2”

Q20受注日次印刷課仕入先発注M追加クエリ(一部)

Q20受注日次印刷課仕入先発注M追加 フィールド構成

成形課・加工課と同じ構成で、手配番号の枝番が「-P」、課フラグが印刷課=Trueに差し替わります。

Q20受注日次仕入先発注M追加後更新クエリ

Q20受注日次仕入先発注M追加後更新 フィールド構成

フィールド テーブル 内容
エクスポート T20受注M レコードの更新:True
手配番号 T20受注M 抽出条件:Not Like “F*” And Not Like “SS*”

Q20受注日次仕入先発注M手配成形更新クエリ

Q20受注日次仕入先発注M手配成形更新 フィールド構成

フィールド テーブル 内容
手配 T31仕入先発注M レコードの更新:False
在庫出荷 T31仕入先発注M レコードの更新:True
成形課 T31仕入先発注M レコードの更新:True
成形発行 T31仕入先発注M レコードの更新:False
成形フォーキャスト T31仕入先発注M レコードの更新:True
手配番号 T31仕入先発注M 抽出条件:Not Like “F*” And Not Like “SS*”

Q20受注日次仕入先発注M手配加工更新クエリ

Q20受注日次仕入先発注M手配加工更新 フィールド構成

成形課用と同じ構成で、フィールド名が成形課→加工課、成形発行→加工発行、成形フォーキャスト→加工フォーキャストに差し替わります。

Q20受注日次日報発行後更新クエリ

Q20受注日次日報発行後更新 フィールド構成

フィールド テーブル 内容
発行 T20受注M レコードの更新:True/抽出条件:False
削除フラグ T20受注自動手番 レコードの更新:True/抽出条件:False
同じ受注が複数課にまたがる場合でも、成形課=S、加工課=K、印刷課=Pという枝番を手配番号の末尾に付けて仕入先発注データを生成します。製造依頼書に印字された手配番号を見るだけで、システムを照会しなくてもどの部署が主幹となっているかが一目で判別できます。

閉じるボタン

フォームを閉じる標準的な処理で、他マスタの閉じるボタンと共通のマクロを流用しています。

閉じるボタンの解説

関連記事

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

マクロの設置場所

項目 内容
フォーム F20受注新規
コントロール 閉じるボタン
イベント クリック時
呼び出し元 M99共通 > サブマクロ:閉じる

まとめ

受注新規登録ページは、1つのフォームで4つの受注パターンを切り替える設計が核になっています。受注区分によるコントロールの総入れ替え、取引先・図番連動によるDLookup転記、自動採番と日付境界によるクリーンアップ、そして日次更新による仕入先発注データの自動生成まで、受注管理の入口から製造指示への橋渡しまでを1ページで担っています。

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

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