自社工場で確定した製造データに対し、金型へ投入する材料量を歩留まりを見込んで自動計算し、オペレーターの裁量で確定させるためのフォームです。確定ボタン・数量変ポップアップ・在庫引当ポップアップという3通りの確定方法を用意し、材料手配後は4種の帳票発行、そして日次更新でロール作業用のT70ロール自動テーブルへとデータを引き継ぎます。
- 1 デザインビューで見る自動発注数量調整の構成
- 2 数量 確定ボタンで転記される仕組み
- 3 デザインビューで見る数量変ポップアップの仕組み
- 4 在引当ポップアップで在庫を消し込みながら生産数を確定する仕組み
- 5 4種の帳票印刷の構成
- 5.1 現品票印刷のレコードソースクエリ(Q70ロール数量現品票印刷)
- 5.2 現品票印刷レポートの構成
- 5.3 現品票印刷ボタンのマクロ
- 5.4 材料裁断カード印刷のレコードソースクエリ(Q70ロール数量材料裁断カード印刷)
- 5.5 材料裁断カード印刷レポートの構成
- 5.6 材料裁断カード印刷ボタンのマクロ
- 5.7 内職管理カード印刷のレコードソースクエリ(Q70ロール数量内職管理カード印刷)
- 5.8 内職管理カード印刷レポートの構成
- 5.9 内職管理カード印刷ボタンのマクロ
- 5.10 2次加硫依頼書印刷のレコードソースクエリ(Q70ロール数量2次加硫依頼書印刷)
- 5.11 2次加硫依頼書印刷レポートの構成
- 5.12 2次加硫依頼書印刷ボタンのマクロ
- 6 日次更新ボタンで材料手配データをT70ロール自動へ移行する仕組み
デザインビューで見る自動発注数量調整の構成
「群馬工場自動発注 成形数量調整」という一覧画面で、成形課で確定した内製データを1行1件として表示します。歩留まり95%(仮)で自動計算された数量と、確定・数量変・在引当の3つのボタンが各行に並び、確定済みかどうか・手配待ちかどうかが行色でひと目で分かる構成になっています。
群馬工場自動発注 成形数量調整 フォームビュー
F70ロール数量調整 デザインビュー
一覧に表示される列の構成
数量変・在引当・確定の3操作ボタンを左端に置き、右へ向かって発注情報→歩留まり計算→在庫情報の順に並んでいます。
一覧の列構成
| 列名 | 内容 |
|---|---|
| (操作列) | 数量変ボタン・在引当ボタン・確定ボタン |
| 手配番号 | 発注時に採番された手配番号 |
| 図番 W | 製品図番 ダブルクリックで製品マスタが開く |
| 納期 | 発注データの納期 |
| 注文数量 | 発注時の数量(元の注文数) |
| 歩留まり95%(仮) | 歩留まり95%で自動計算された仮の設定数量 |
| 確定数量 | 確定ボタン・数量変・在引当いずれかで確定した数量 |
| 不良率5%以上 | 将来機能(現在未活用)の詳細ボタン列 |
| 在庫数 | 対象図番の現在在庫数 |
| 在庫更新日 | 在庫数が最後に更新された日付 |
| 手配番号元 | 元となった仕入先発注側の手配番号 |
| 1S使用量 | 1ショットあたりの材料使用重量 |
| 取数 | 1金型あたりの取り数 |
フォームフッターの件数表示
| フィールド | 内容 |
|---|---|
| 件数 | =DCount(“*”,”Q70ロール数量調整サブ”) |
| 確定件数 | =Sum(IIf([確定]=True,1,0)) |
| 手配否件数 | =Sum(IIf([手配]=False,1,0)) |
| 現品票印刷件数 | =DCount(“*”,”Q70ロール数量現品票印刷”) |
| 材料裁断カード印刷件数 | =DCount(“*”,”Q70ロール数量材料裁断カード印刷”) |
| 2次加硫依頼書印刷件数 | =DCount(“*”,”Q70ロール数量2次加硫依頼書印刷”) |
| 内職管理カード印刷件数 | =DCount(“*”,”Q70ロール数量内職管理カード印刷”) |
「図番 W」ダブルクリックで製品マスタをショートカット表示する仕組み
一覧の図番ラベルには「W」という印が添えられており、これは図番をダブルクリックすると該当製品の製品マスタへショートカットできることを示すサインです。ダブルクリックイベント自体は図番コントロールに設置されています。図番だけを見てもその製品を作るための詳細情報(材料構成・工程情報など)まで覚えているとは限らないため、製造に必要な情報をすぐ参照できるようにする仕組みです。
実際の動きは、製品マスタリストを開いて図番検索欄に対象図番を転記し、検索済みの状態で表示する2段階の処理になっています。開いた直後に該当製品が絞り込み済みで表示され、そこから詳細ボタンで製品マスタの編集画面までもう1段階進む流れです。
サブマクロ:製品マスタ開く
- サブマクロのテキスト表示
-
サブマクロ:製品マスタ開く フォームを開く(F10製品リスト, フォーム ビュー, , , , 標準) 値の代入 アイテム=[Forms]![F10製品リスト]![図番検索] 式=[Forms]![F70ロール数量調整]![F70ロール数量調整サブ]![図番] 再クエリ コントロールの移動 マクロの中止 サブマクロの最後
マクロの概要
| 項目 | 内容 |
|---|---|
| 処理内容 | F10製品リストをフォームビューで開き、対象図番を図番検索欄へ転記して再クエリ |
| 役割 | サブフォームの図番をダブルクリックすると、該当製品のみに絞り込まれた製品マスタリストへショートカットする |
| 呼び出し元 | F70ロール数量調整サブ(図番コントロール・ダブルクリック時) |
マクロの設置場所
| 設置マクロ | サブマクロ名 |
|---|---|
| F70ロール数量調整サブ(図番コントロール・ダブルクリック時) | 製品マスタ開く |
非連結・隠しコントロールの構成
行の色分けや確定・手配の状態管理は、画面上には見えない5つのコントロールが裏で支えています。
非連結・隠しコントロールの構成
| # | 名前 | 種類 | 可視 | 役割 |
|---|---|---|---|---|
| ① | 行色 | 非連結 | いいえ | ③のIDと連動し、条件付き書式で行の色分けに使用 |
| ② | 確定 | チェックボックス(表示用とは別の隠しコントロール) | いいえ | 確定状態を保持 |
| ③ | ID | 連結 | いいえ | 行を識別するための隠しフィールド(①の行色連動に使用) |
| ④ | 手配 | チェックボックス(表示用とは別の隠しコントロール) | いいえ | 手配否の状態を保持 |
| ⑤ | (ラベルなし・不良率5%以上欄と連動) | 非連結 | いいえ | 拡張用(将来の不良率蓄積データ表示、詳細ボタンと連動予定) |
数量 確定ボタンで転記される仕組み
確定ボタンは、歩留まり95%で自動計算された設定数量を確定数量欄へワンクリックで転記するボタンです。裏側では確定・手配という2つの隠しチェックボックスの状態をIfで判定し、2本の更新クエリを使い分けることでON/OFFの往復を実現しています。手配が済んでいないデータは確定できない仕組みも組み込まれています。
転記を実行する2本の更新クエリ
確定数量欄への転記とクリアは、それぞれ専用の更新クエリが担当します。抽出条件はどちらもサブフォームのIDで対象行を1件に絞り込みます。
Q70ロール数量確定更新・確定否更新の構成
| フィールド | Q70ロール数量確定更新 | Q70ロール数量確定否更新 |
|---|---|---|
| 確定 | True | False |
| 確定数量 | [Forms]![F70ロール数量調整]![F70ロール数量調整サブ]![設定数量] | Null |
| ID(抽出条件) | [Forms]![F70ロール数量調整]![F70ロール数量調整サブ]![ID] | [Forms]![F70ロール数量調整]![F70ロール数量調整サブ]![ID] |
確定ボタンのマクロ(数量確定更新)
確定ボタンをクリックすると実行されるサブマクロです。確定の現在値をIfで判定し、転記・取消のどちらか一方の更新クエリだけを実行します。
サブマクロ:数量確定更新
- サブマクロのテキスト表示
-
サブマクロ:数量確定更新 If [Forms]![F70ロール数量調整]![F70ロール数量調整サブ]![確定]=True Then メッセージの設定(いいえ) クエリを開く(Q70ロール数量確定否更新, データシート, 編集) コントロールの移動 再クエリ マクロの中止 If 文の最後 If [Forms]![F70ロール数量調整]![F70ロール数量調整サブ]![確定]=False Then If [Forms]![F70ロール数量調整]![F70ロール数量調整サブ]![手配]=False Then メッセージボックス(手配否のデータは確定できません, はい, 警告, 確定不可) マクロの中止 If 文の最後 メッセージの設定(いいえ) クエリを開く(Q70ロール数量確定更新, データシート, 編集) コントロールの移動 再クエリ マクロの中止 If 文の最後 サブマクロの最後
マクロの概要
| 条件 | 処理内容 |
|---|---|
| 確定=True の場合 | Q70ロール数量確定否更新を実行し、確定数量をNullに戻す(取消) |
| 確定=False かつ 手配=False の場合 | メッセージボックスで確定不可を警告し、処理を中止 |
| 確定=False かつ 手配=True の場合 | Q70ロール数量確定更新を実行し、設定数量を確定数量に転記 |
| 共通処理 | クエリ実行後にコントロールの移動・再クエリ・マクロの中止を実行 |
マクロの設置場所
| 設置マクロ | サブマクロ名 |
|---|---|
| F70ロール数量調整サブ(確定ボタン) | 数量確定更新 |
デザインビューで見る数量変ポップアップの仕組み
数量変ボタンは、歩留まり95%の自動計算値をそのまま使わず、任意の数量で確定したい場合に使うポップアップです。サブフォームの元データをDLookupでポップアップ側の非連結コントロールへ転記し、設定不良率か直接入力のどちらかで確定数量を決めてから、確定ボタンでサブフォームへ書き戻します。
数量調整・確定 ポップアップフォームビュー
F70ロール数量確定ポップ デザインビュー
数量調整・確定ポップアップの非連結コントロール構成
| 名前 | 種類 | 可視 | 役割 |
|---|---|---|---|
| ID | 非連結 | いいえ | サブフォーム側のIDを保持し、確定時の更新クエリの抽出条件に使用 |
| 数量 | 非連結(ロック) | はい | 元データの数量を表示のみ |
| 設定数量 | 非連結(ロック) | はい | 歩留まり95%の自動計算値を表示のみ |
| 設定不良率(コントロール名:不良率) | 非連結コンボボックス | はい | 任意の不良率を選択すると更新後処理で確定数量を自動計算 |
| 確定数量 | 非連結 | はい | 設定不良率経由の自動計算、または直接入力のどちらでも確定可能 |
| 確定 | 非連結チェックボックス(表示用とは別) | いいえ | 確定処理の完了フラグを保持し、確定ボタンのマクロでTrueをセット |
数量変ボタンでポップアップを開き元データを転記するマクロ
サブフォームの手配状態を先にチェックし、手配否のデータはポップアップを開かせずにブロックする仕組みです。開いた後は4項目をDLookupで転記します。
サブマクロ:数量確定ポップ
- サブマクロのテキスト表示
-
サブマクロ:数量確定ポップ If [Forms]![F70ロール数量調整]![F70ロール数量調整サブ]![手配]=False Then メッセージボックス(手配否のデータは訂正できません。手配否を解除してから訂正してください。, はい, 警告, 訂正不可) マクロの中止 If 文の最後 フォームを開く(F70ロール数量確定ポップ, フォーム ビュー, , , , 標準) 値の代入 アイテム=[Forms]![F70ロール数量確定ポップ]![ID] 式=[Forms]![F70ロール数量調整]![F70ロール数量調整サブ]![ID] 値の代入 アイテム=[Forms]![F70ロール数量確定ポップ]![数量] 式=DLookUp("数量","T70ロール数量調整","[ID]=[Forms]![F70ロール数量確定ポップ]![ID]") 値の代入 アイテム=[Forms]![F70ロール数量確定ポップ]![設定数量] 式=DLookUp("設定数量","T70ロール数量調整","[ID]=[Forms]![F70ロール数量確定ポップ]![ID]") 値の代入 アイテム=[Forms]![F70ロール数量確定ポップ]![確定数量] 式=DLookUp("確定数量","T70ロール数量調整","[ID]=[Forms]![F70ロール数量確定ポップ]![ID]") マクロの中止 サブマクロの最後
マクロの概要
| 条件・処理 | 内容 |
|---|---|
| 手配=False の場合 | メッセージボックスで訂正不可を警告し、ポップアップを開かず処理を中止 |
| 手配=True の場合 | F70ロール数量確定ポップをフォームビューで開く |
| 転記処理 | ID・数量・設定数量・確定数量の4項目をDLookupでサブフォームの元データから転記 |
マクロの設置場所
| 設置マクロ | サブマクロ名 |
|---|---|
| F70ロール数量調整サブ(数量変ボタン) | 数量確定ポップ |
ポップアップ内の確定ボタンでサブフォームへ書き戻すマクロ
確定数量が未入力のまま確定させないチェックを挟み、入力済みなら確定フラグをTrueにしてから専用の更新クエリでサブフォーム側へ書き戻します。
◆スクショ サブマクロ:数量確定
- サブマクロのテキスト表示
-
サブマクロ:数量確定 If IsNull([確定数量]) Then メッセージボックス(確定数量が空欄です, はい, 警告, 未入力) コントロールの移動(確定数量) マクロの中止 Else 値の代入 アイテム=[Forms]![F70ロール数量確定ポップ]![確定] 式=True メッセージの設定(いいえ) クエリを開く(Q70ロール数量確定ポップ更新, データシート, 編集) ウィンドウを閉じる(フォーム, F70ロール数量確定ポップ, 確認) コントロールの移動(閉じる) 再クエリ マクロの中止 If 文の最後 サブマクロの最後
マクロの概要
| 条件・処理 | 内容 |
|---|---|
| 確定数量が空欄の場合 | メッセージボックスで未入力を警告し、確定数量欄へカーソル移動して中止 |
| 確定数量が入力済みの場合 | 確定フラグをTrueにセットし、Q70ロール数量確定ポップ更新を実行してサブフォームへ書き戻し |
| 共通処理 | ポップアップを閉じ、親フォームを再クエリして表示を更新 |
マクロの設置場所
| 設置マクロ | サブマクロ名 |
|---|---|
| F70ロール数量確定ポップ(確定ボタン) | 数量確定 |
Q70ロール数量確定ポップ更新の構成
| フィールド | 内容 |
|---|---|
| 確定数量 | [Forms]![F70ロール数量確定ポップ]![確定数量] |
| 確定 | [Forms]![F70ロール数量確定ポップ]![確定] |
| ID(抽出条件) | [Forms]![F70ロール数量確定ポップ]![ID] |
設定不良率コンボの更新後処理で確定数量を自動計算する仕組み
設定不良率を選択すると、更新後処理で確定数量が自動計算されます。歩留まりロスを見込んで、数量に不良率分を上乗せした数字が確定数量欄にセットされる仕組みです。
サブマクロ:数量調整
- サブマクロのテキスト表示
-
サブマクロ:数量調整 値の代入 アイテム=[確定数量] 式=[数量]*(1+[不良率]/100) マクロの中止 サブマクロの最後
マクロの概要
| 項目 | 内容 |
|---|---|
| 処理内容 | 確定数量に「数量×(1+不良率÷100)」を計算して代入 |
| 役割 | 選択した不良率分だけ数量を割り増しし、歩留まりロスを見込んだ確定数量を自動算出する |
マクロの設置場所
| 設置マクロ | サブマクロ名 |
|---|---|
| F70ロール数量確定ポップ(設定不良率コンボ・更新後処理) | 数量調整 |
在引当ポップアップで在庫を消し込みながら生産数を確定する仕組み
在引当ボタン(在庫引当)は、確定前に在庫を参照しながら生産数量を調整するためのポップアップです。全て引当・一部引当のどちらを選んでも「引当後生産数」「引当後在庫数」が自動計算され、確定>ボタンで生産数量へ渡した後、在庫引当確定ボタンを押すと在庫テーブルの更新・追加・備考書き込みまでまとめて実行されます。
在庫引当調整 フォームビュー
F70ロール数量調整在庫引当ポップ デザインビュー
F70ロール数量調整在庫引当ポップの非連結コントロール構成
| 名前 | 種類 | 可視 | 役割 |
|---|---|---|---|
| ID | 非連結 | いいえ | サブフォーム側のIDを保持し、各更新クエリの抽出条件に使用 |
| 図番ID | 非連結 | いいえ | 在庫テーブル参照・Q70在庫追加への転記に使用 |
| 登録者コード | 非連結 | いいえ | メインメニューの従業員コードから転記され、在庫追加時の登録者情報に使用 |
| 保管場所コード | 非連結 | いいえ | Q70在庫履歴からDLookupで転記され、在庫追加時に引き継ぐ |
| 検査員コード | 非連結 | いいえ | Q70在庫履歴からDLookupで転記され、在庫追加時に引き継ぐ |
| 手配番号 | 非連結 | いいえ | 備考更新(Q70在庫引当備考更新)の抽出条件に使用 |
| 引当数量 | 非連結 | はい | 更新後処理で引当後生産数・引当後在庫数を自動計算 |
| 引当後生産数 | 非連結 | はい | 確定>ボタンで生産数量欄へ渡す値 |
| 引当後在庫数 | 非連結 | はい | Q70在庫追加の在庫数として登録される値 |
| 設定数量 | 非連結 | はい | 確定>ボタン押下時に引当後生産数から転記され、在庫引当確定時に確定数量として書き戻される |
ポップアップを開き元データ・在庫情報を転記するマクロ
在庫数が0の場合はポップアップを開かせずにブロックします。開いた後は、サブフォーム側の項目に加え、在庫テーブル(T45在庫)から保管場所コード・検査員コードをDLookupで取得します。
サブマクロ:在庫引当
- サブマクロのテキスト表示
-
サブマクロ:在庫引当 If [在庫数]<=0 Then メッセージボックス(在庫数が0です。引当できません, はい, 警告, 在庫ゼロ) マクロの中止 If 文の最後 フォームを開く(F70ロール数量調整在庫引当ポップ, フォーム ビュー, , , , 標準) 値の代入 アイテム=[Forms]![F70ロール数量調整在庫引当ポップ]![ID] 式=[Forms]![F70ロール数量調整]![F70ロール数量調整サブ]![ID] 値の代入 アイテム=[Forms]![F70ロール数量調整在庫引当ポップ]![図番ID] 式=[Forms]![F70ロール数量調整]![F70ロール数量調整サブ]![図番ID] 値の代入 アイテム=[Forms]![F70ロール数量調整在庫引当ポップ]![図番] 式=[Forms]![F70ロール数量調整]![F70ロール数量調整サブ]![図番] 値の代入 アイテム=[Forms]![F70ロール数量調整在庫引当ポップ]![数量] 式=[Forms]![F70ロール数量調整]![F70ロール数量調整サブ]![数量] 値の代入 アイテム=[Forms]![F70ロール数量調整在庫引当ポップ]![在庫数] 式=[Forms]![F70ロール数量調整]![F70ロール数量調整サブ]![在庫数] 値の代入 アイテム=[Forms]![F70ロール数量調整在庫引当ポップ]![在庫更新日] 式=[Forms]![F70ロール数量調整]![F70ロール数量調整サブ]![在庫更新日] 値の代入 アイテム=[Forms]![F70ロール数量調整在庫引当ポップ]![手配番号] 式=[Forms]![F70ロール数量調整]![F70ロール数量調整サブ]![手配番号] 値の代入 アイテム=[Forms]![F70ロール数量調整在庫引当ポップ]![保管場所コード] 式=DLookUp("保管場所コード","Q70在庫履歴","[図番ID]=[Forms]![F70ロール数量調整在庫引当ポップ]![図番ID]") 値の代入 アイテム=[Forms]![F70ロール数量調整在庫引当ポップ]![検査員コード] 式=DLookUp("検査員コード","Q70在庫履歴","[図番ID]=[Forms]![F70ロール数量調整在庫引当ポップ]![図番ID]") 値の代入 アイテム=[Forms]![F70ロール数量調整在庫引当ポップ]![登録者コード] 式=[Forms]![F00メインメニュー]![従業員コード]*1 マクロの中止 サブマクロの最後
マクロの概要
| 条件・処理 | 内容 |
|---|---|
| 在庫数≦0 の場合 | メッセージボックスで在庫ゼロを警告し、ポップアップを開かず処理を中止 |
| 在庫数>0 の場合 | F70ロール数量調整在庫引当ポップをフォームビューで開く |
| 転記処理 | ID・図番ID・図番・数量・在庫数・在庫更新日・手配番号をサブフォームから転記 |
| DLookup処理 | 保管場所コード・検査員コードをQ70在庫履歴から図番IDで取得 |
| 登録者コード | メインメニューの従業員コードを*1で数値変換して転記 |
マクロの設置場所
| 設置マクロ | サブマクロ名 |
|---|---|
| F70ロール数量調整サブ(在引当ボタン) | 在庫引当 |
引当数量の更新後処理で在庫と生産数を自動計算するマクロ
「引当数量」コントロールボックスを入力するたびに実行される更新後処理マクロです。マイナス入力・在庫超過をそれぞれブロックし、正常範囲内であれば引当後生産数・引当後在庫数を差分計算します。
サブマクロ:在庫引当数量更新
- サブマクロのテキスト表示
-
サブマクロ:在庫引当数量更新 If [引当数量]<0 Then メッセージボックス(引当数量は0以上しか登録できません, はい, 警告, マイナス不可) 値の代入 アイテム=[引当後生産数] 式=Null 値の代入 アイテム=[引当後在庫数] 式=Null 値の代入 アイテム=[設定数量] 式=Null コントロールの移動(閉じる) コントロールの移動(引当数量) マクロの中止 If 文の最後 If [在庫数]<[引当数量] Then メッセージボックス(引当数量が在庫数を超えています。引当数量を見直してください, はい, 警告, 数量オーバー) 値の代入 アイテム=[引当後生産数] 式=Null 値の代入 アイテム=[引当後在庫数] 式=Null 値の代入 アイテム=[設定数量] 式=Null コントロールの移動(閉じる) コントロールの移動(引当数量) マクロの中止 If 文の最後 値の代入 アイテム=[引当後生産数] 式=[数量]-[引当数量] 値の代入 アイテム=[引当後在庫数] 式=[在庫数]-[引当数量] メッセージボックス(引当後生産数は単純計算ですので実際の生産数を検討して上書きしてください, はい, 注意?, 生産数確認) マクロの中止 サブマクロの最後
マクロの概要
| 条件・処理 | 内容 |
|---|---|
| 引当数量<0 の場合 | マイナス不可を警告し、計算結果欄をNullに戻して引当数量欄へカーソル移動 |
| 在庫数<引当数量 の場合 | 数量オーバーを警告し、同様に計算結果欄をNullに戻して引当数量欄へカーソル移動 |
| 上記以外の場合 | 引当後生産数=数量-引当数量、引当後在庫数=在庫数-引当数量を計算し、実生産数の要確認を促すメッセージを表示 |
マクロの設置場所
| 設置マクロ | サブマクロ名 |
|---|---|
| F70ロール数量調整在庫引当ポップ(引当数量・更新後処理) | 在庫引当数量更新 |
全て引当ボタン・一部引当ボタンのマクロ
全て引当は在庫数をそのまま引当数量に採用するショートカットで、一部引当は引当数量欄へ直接カーソルを移すだけの単純な誘導マクロです。全て引当側は数量と在庫数の大小関係によって処理を分けています。
サブマクロ:在庫全部引当
- サブマクロのテキスト表示
-
サブマクロ:在庫全部引当 If [数量]>[在庫数] Then 値の代入 アイテム=[引当数量] 式=[在庫数] 値の代入 アイテム=[引当後生産数] 式=[数量]-[引当数量] 値の代入 アイテム=[引当後在庫数] 式=[引当数量]-[在庫数] 値の代入 アイテム=[設定数量] 式=Null メッセージボックス(引当後生産数は単純計算ですので実際の生産数を検討して上書きしてください, はい, 注意?, 生産数確認) コントロールの移動(引当後生産数) マクロの中止 Else 値の代入 アイテム=[引当数量] 式=[在庫数] 値の代入 アイテム=[引当後生産数] 式=0 値の代入 アイテム=[引当後在庫数] 式=[在庫数]-[数量] 値の代入 アイテム=[設定数量] 式=Null メッセージボックス(引当後生産数は単純計算ですので実際の生産数を検討して上書きしてください, はい, 注意?, 生産数確認) コントロールの移動(数量確定) マクロの中止 If 文の最後 サブマクロの最後
マクロの概要
| 条件・処理 | 内容 |
|---|---|
| 数量>在庫数 の場合 | 引当数量=在庫数、引当後生産数=数量-引当数量、引当後在庫数はマイナス値(不足分)として計算し、生産数確認メッセージ後に引当後生産数欄へ移動 |
| 数量≦在庫数 の場合 | 引当数量=在庫数、引当後生産数=0、引当後在庫数=在庫数-数量として計算し、生産数確認メッセージ後に在庫引当確定ボタン(控え名:数量確定)へフォーカス移動 |
マクロの設置場所
| 設置マクロ | サブマクロ名 |
|---|---|
| F70ロール数量調整在庫引当ポップ(全て引当ボタン) | 在庫全部引当 |
サブマクロ:在庫一部引当
- サブマクロのテキスト表示
-
サブマクロ:在庫一部引当 値の代入 アイテム=[引当数量] 式=Null 値の代入 アイテム=[引当後生産数] 式=Null 値の代入 アイテム=[引当後在庫数] 式=Null 値の代入 アイテム=[設定数量] 式=Null コントロールの移動(引当数量) マクロの中止 サブマクロの最後
マクロの概要
| 項目 | 内容 |
|---|---|
| 処理内容 | 引当数量・引当後生産数・引当後在庫数・設定数量をすべてNullにリセットし、引当数量欄へカーソルを移動 |
| 役割 | オペレーターに引当数量の直接入力を促す誘導処理 |
マクロの設置場所
| 設置マクロ | サブマクロ名 |
|---|---|
| F70ロール数量調整在庫引当ポップ(一部引当ボタン) | 在庫一部引当 |
確定>ボタンで生産数量へ値を渡すマクロ
引当後生産数を設定数量へそのままコピーするだけの、1行だけの橋渡しマクロです。
サブマクロ:在庫設定数量確定
- サブマクロのテキスト表示
-
サブマクロ:在庫設定数量確定 値の代入 アイテム=[設定数量] 式=[引当後生産数] マクロの中止 サブマクロの最後
マクロの概要
| 項目 | 内容 |
|---|---|
| 処理内容 | 設定数量に引当後生産数の値をそのまま代入 |
| 役割 | 在庫引当確定マクロが参照する設定数量欄を、確定前に手動確認込みで固定する |
マクロの設置場所
| 設置マクロ | サブマクロ名 |
|---|---|
| F70ロール数量調整在庫引当ポップ(確定>ボタン) | 在庫設定数量確定 |
在庫引当確定ボタンで在庫・生産数量をまとめて確定するマクロ
設定数量が未入力なら確定させず、警告音付きの最終確認メッセージを経てから4本の更新・追加クエリを実行します。設定数量が0の場合のみ、手配否フラグを立てる追加クエリが実行される分岐が組まれています。
サブマクロ:在庫引当確定
- サブマクロのテキスト表示
-
サブマクロ:在庫引当確定 If IsNull([設定数量]) Then メッセージボックス(生産数量を確定していません。「確定」ボタンで生産数量を確定してください, はい, 警告, 未確定) マクロの中止 Else 警告音 If MsgBox("確定すると在庫登録の更新も自動的に行われます。元に戻せませんのがよろしいですか?",4+32)=6 Then メッセージの設定(いいえ) クエリを開く(Q70ロール数量調整在庫引当ポップ更新, データシート, 編集) クエリを開く(Q70在庫追加, データシート, 編集) クエリを開く(Q70在庫引当備考更新, データシート, 編集) クエリを開く(Q70在庫引当製品マスタ更新, データシート, 編集) If [設定数量]=0 Then クエリを開く(Q70在庫0手配否更新, データシート, 編集) If 文の最後 メッセージボックス(在庫引当しました, はい, なし, 完了) ウィンドウを閉じる(, , 確認) 再クエリ() マクロの中止 Else メッセージボックス(処理を中止します, はい, なし, 中止) マクロの中止 If 文の最後 If 文の最後 サブマクロの最後
マクロの概要
| 条件・処理 | 内容 |
|---|---|
| 設定数量が空欄の場合 | 未確定を警告し、処理を中止 |
| 設定数量が入力済みの場合 | 警告音とMsgBoxで最終確認(はい/いいえ)を提示 |
| 確認ではいを選択 | Q70ロール数量調整在庫引当ポップ更新・Q70在庫追加・Q70在庫引当備考更新・Q70在庫引当製品マスタ更新を実行 |
| 設定数量=0 の場合(上記に加えて) | Q70在庫0手配否更新も実行し、手配フラグをFalseに戻す |
| 確認でいいえを選択 | 処理を中止し、何も更新しない |
| 完了処理 | 完了メッセージ後、ポップアップを閉じて親フォームを再クエリ |
マクロの設置場所
| 設置マクロ | サブマクロ名 |
|---|---|
| F70ロール数量調整在庫引当ポップ(在庫引当確定ボタン) | 在庫引当確定 |
在庫引当確定で実行される5本のクエリ構成
在庫引当確定ボタンでは、確定数量の書き戻し・在庫データの新規追加・仕入先発注側の備考更新・手配フラグのリセットという4つの処理を、それぞれ専用のクエリに分けて順に実行しています。
①設定数量(生産数)を確定してT70ロール数量調整テーブルを更新するクエリ
Q70ロール数量調整在庫引当ポップ更新 クエリデザインビュー
Q70ロール数量調整在庫引当ポップ更新の構成
| フィールド | 内容 |
|---|---|
| 確定数量 | [Forms]![F70ロール数量調整在庫引当ポップ]![設定数量] |
| 確定 | True |
| ID(抽出条件) | [Forms]![F70ロール数量調整在庫引当ポップ]![ID] |
②在庫履歴をT45在庫履歴テーブルに追加するクエリ
Q70在庫追加 追加クエリデザインビュー
Q70在庫追加の構成
| 追加先フィールド | 式 |
|---|---|
| 図番 | [Forms]![F70ロール数量調整在庫引当ポップ]![図番] |
| 図番ID | [Forms]![F70ロール数量調整在庫引当ポップ]![図番ID] |
| 在庫数 | [Forms]![F70ロール数量調整在庫引当ポップ]![引当後在庫数] |
| 在庫更新日 | Date() |
| 在庫メモ | “自動在庫引当から登録 ” & [Forms]![F70ロール数量調整在庫引当ポップ]![手配番号] |
| 保管場所コード | [Forms]![F70ロール数量調整在庫引当ポップ]![保管場所コード] |
| 登録者コード | [Forms]![F70ロール数量調整在庫引当ポップ]![登録者コード] |
| 検査員コード | [Forms]![F70ロール数量調整在庫引当ポップ]![検査員コード] |
※追加先対象テーブル:T45在庫履歴
③在庫引当が行われたことを仕入先発注マスタの備考欄に情報を転記するクエリ
Q70在庫引当備考更新 クエリデザインビュー
Q70在庫引当備考更新の構成
| フィールド | 内容 |
|---|---|
| 備考 | [備考] & ” 自動在庫引当 ” & [Forms]![F70ロール数量調整在庫引当ポップ]![引当数量] |
| 手配番号(抽出条件) | [Forms]![F70ロール数量調整在庫引当ポップ]![手配番号] |
| 対象テーブル | T31仕入先発注M |
④最新の在庫履歴をT10製品Mの在庫関連フィールドに更新するクエリ
Q70在庫引当製品マスタ更新 クエリデザインビュー
Q70在庫引当製品マスタ更新の構成
| フィールド | 内容 |
|---|---|
| 在庫数 | [Forms]![F70ロール数量調整在庫引当ポップ]![引当後在庫数] |
| 在庫更新日 | Date() |
| 在庫メモ | “自動在庫引当から登録 ” & [Forms]![F70ロール数量調整在庫引当ポップ]![手配番号] |
| 図番ID(抽出条件) | [Forms]![F70ロール数量調整在庫引当ポップ]![図番ID] |
| 対象テーブル | T10製品M |
⑤在庫引当で設定数量(生産数)がゼロになった場合は手配否にする更新クエリ
Q70在庫0手配否更新の構成
| フィールド | 内容 |
|---|---|
| 手配 | False |
| ID(抽出条件) | [Forms]![F70ロール数量調整在庫引当ポップ]![ID] |
地味に便利:設定数量=0だけを手配否に自動で戻す分岐
在庫引当確定は基本的に「確定して終わり」ですが、設定数量が0(=在庫を全部引き当てて生産不要になったケース)だけ、わざわざ手配フラグをFalseに戻すクエリをもう1本追加で走らせています。これにより、生産の必要がなくなったデータが確定ボタン・数量変ポップの側で「手配否のデータは確定できません」という前段のガードに引っかかり、誤って再確定されるのを防ぐ形になっています。3つのボタンで張ったガードが、この1行できれいに閉じている構成です。
4種の帳票印刷の構成
自動発注数量調整ページで確定した内製データは、用途に応じて4種の帳票に出力されます。いずれも「プレビュー確認→印刷実行」の2段階確認をMsgBoxで挟む共通構成を取っており、うっかり印刷してしまう事故を防いでいます。
4種の帳票の対象・役割
| 帳票 | 対象 | 役割 |
|---|---|---|
| 現品票印刷 | 全工程 | 仕入先発注成形課の外製用現品票と様式は同じ(レポート名は別)。製造箇所に常に付随する記録用紙 |
| 材料裁断カード印刷 | ロール材料部署 | 材料を所定寸法にカットする裁断担当部署への指示書 |
| 内職管理カード印刷 | 内職(業務) | 外部内職さんへの作業依頼書兼納品書(給金計算の根拠にもなる) |
| 2次加硫依頼書印刷 | 2次加硫条件がある製品 | 内製の2次加硫工程部署への注文書兼記録用紙 |
現品票印刷のレコードソースクエリ(Q70ロール数量現品票印刷)
現品票に必要な製造情報・材料情報・工程情報・検査項目を1本のクエリに集約しています。T70ロール数量調整を起点に、T10製品M→T11製品成形→T13製品品証、およびT10製品M→T05取引先M と結合し、対象は仕入先コード=2(自社工場)かつ手配・確定がTrueのデータのみに絞り込まれます。
Q70ロール数量現品票印刷 クエリデザインビュー
つづき
つづき
つづき
つづき
Q70ロール数量現品票印刷の使用テーブルと結合関係
| テーブル | 結合キー |
|---|---|
| T70ロール数量調整(起点) | 図番ID → T10製品M |
| T10製品M | 図番ID → T11製品成形、取引先コード → T05取引先M |
| T11製品成形 | 図番ID → T13製品品証 |
| T05取引先M | 取引先コードで結合(取引先名・略称等の参照用) |
| T13製品品証 | 検査項目1〜6・外観検査水準・寸法検査水準の参照用 |
Q70ロール数量現品票印刷の主な抽出条件・並べ替え
| フィールド | テーブル | 内容 |
|---|---|---|
| 手配番号 | T70ロール数量調整 | 抽出条件:Not Like “SS*” |
| 発注日 | T70ロール数量調整 | 並べ替え:昇順 |
| 図番 | T10製品M | 並べ替え:昇順 |
| 仕入先コード | T70ロール数量調整 | 抽出条件:2(自社工場=内製データのみ) |
| 手配 | T70ロール数量調整 | 抽出条件:True |
| 確定 | T70ロール数量調整 | 抽出条件:True |
Q70ロール数量現品票印刷の主な取得フィールド(グループ別)
| グループ | フィールド |
|---|---|
| 製造情報 | 取引先コード・略称・納期・確定数量・備考・数量・品名・取数・金型保管・重要事項 |
| 金型・図面情報 | 金型管理図番・金型刻印・金型メーカー・仕様書作成日 |
| 材料情報 | 配合番号1〜4・材料1〜4・色調1〜4・材料備考1〜4 |
| 工程管理情報 | 工程1〜16・工程作業者1〜16 |
| 加硫・検査情報 | 2次加硫条件・検査項目1〜6・外観検査水準・寸法検査水準 |
現品票印刷レポートの構成
現品票(成形課)は、製造情報・材料情報・成形記録・寸法測定記録・工程管理記録・内職記録の6ブロックで構成された、製造箇所に常に付随する記録用紙です。仕入先発注成形課の外製用現品票と様式は同じですが、レポート名は別に管理されています。
R70ロール数量現品票印刷 レポートデザインビュー
現品票(成形課)のブロック構成
| ブロック | 主な項目 |
|---|---|
| 製造情報 | 図番・生産数量・確定数量・手配番号・納期・取ケ数・取数・注文数量・数量・指定ショット数・品名・2次加硫条件・金型保管・備考(T10製品M)・受注メモ(T70ロール数量調整) |
| 材料情報 | 材料1〜4それぞれの配合番号・原材料・色調・材料LOT.NO.・備考 |
| 成形記録 | 機械NO・号機・生産数・成形圧力・金型表面温度・加硫時間・不良数・真空有無・ショット数・納入数・敷き込みゴム有無・2次加硫条件・金型洗浄有無 |
| 寸法測定記録 | 検査項目1〜6(CAV非連結欄含む)・測定機・合否・測定印・承認印 |
| 工程管理記録 | 工程1〜16の工程担当・作業日・作業時間・良品数・不良数・合否・メモ・印(バーコード付き) |
| 内職記録 | 日付・工程名・良品数・不良数・不良内容・氏名(2件分) |
現品票印刷ボタンのマクロ
印刷プレビューでの確認と、印刷実行前の最終確認、合計2段階のMsgBoxで確認を取ってから印刷する構成です。
サブマクロ:現品票印刷
- サブマクロのテキスト表示
-
サブマクロ:現品票印刷 警告音 If MsgBox("現品票をプレビューで確認してから印刷してください。よろしいですか?",4+32)=6 Then レポートを開く(R70ロール数量現品票印刷, 印刷プレビュー, , , 標準) If MsgBox("現品票を印刷します。よろしいですか?",4+32)=6 Then レポートを開く(R70ロール数量現品票印刷, 印刷, , , 標準) メッセージボックス(現品票の印刷が完了しました。, はい, なし, 印刷完了) ウィンドウを閉じる(レポート, R70ロール数量現品票印刷, 確認) マクロの中止 Else メッセージボックス(印刷を中止しました, はい, なし, 中止) ウィンドウを閉じる(レポート, R70ロール数量現品票印刷, 確認) マクロの中止 If 文の最後 Else メッセージボックス(処理を中止しました, はい, なし, 中止) マクロの中止 If 文の最後 サブマクロの最後
マクロの概要
| 条件・処理 | 内容 |
|---|---|
| 1段階目:プレビュー確認ではい | R70ロール数量現品票印刷を印刷プレビューで開く |
| 2段階目:印刷実行確認ではい | 同レポートを印刷実行し、完了メッセージ後にレポートを閉じる |
| 2段階目:印刷実行確認でいいえ | 印刷を中止し、レポートを閉じる |
| 1段階目:プレビュー確認でいいえ | 処理を中止し、レポートを開かない |
マクロの設置場所
| 設置マクロ | サブマクロ名 |
|---|---|
| F70ロール数量調整サブ(現品票印刷ボタン) | 現品票印刷 |
材料裁断カード印刷のレコードソースクエリ(Q70ロール数量材料裁断カード印刷)
材料裁断カードに必要な材料情報を1本のクエリに集約しています。結合構成は現品票印刷と同じくT70ロール数量調整→T10製品M→T11製品成形ですが、対象を金型保管”GG-*”(群馬工場)に絞り込む点が異なります。
Q70ロール数量材料裁断カード印刷 クエリデザインビュー
つづき
つづき
つづき
Q70ロール数量材料裁断カード印刷の使用テーブルと結合関係
| テーブル | 結合キー |
|---|---|
| T70ロール数量調整(起点) | 図番ID → T10製品M |
| T10製品M | 図番ID → T11製品成形 |
| T11製品成形 | 厚み・カット寸法・1本重量など材料寸法情報の参照用 |
Q70ロール数量材料裁断カード印刷の主な抽出条件・並べ替え
| フィールド | テーブル | 内容 |
|---|---|---|
| 図番 | T70ロール数量調整 | 並べ替え:昇順 |
| 納期 | T70ロール数量調整 | 並べ替え:昇順 |
| 手配 | T70ロール数量調整 | 抽出条件:True |
| 確定 | T70ロール数量調整 | 抽出条件:True |
| 金型保管 | T11製品成形 | 抽出条件:Like “GG-*”(群馬工場のみ) |
Q70ロール数量材料裁断カード印刷の主な取得フィールド(グループ別)
| グループ | フィールド |
|---|---|
| 製造情報 | 手配番号・取引先コード・確定数量・取数・品名・備考(T10製品M) |
| 材料構成情報 | 配合番号1〜4・材料1〜4・色調1〜4 |
| 材料寸法情報 | 厚み1〜4・カット寸法1〜4・1本重量1〜4・公差1〜4・使用本数1〜4・材料備考1〜4 |
材料裁断カード印刷レポートの構成
材料裁断カードは、材料1〜4それぞれの配合番号・材料名・色調・厚み(分出し)・カット寸法・1本重量・重量公差・使用本数・備考を横並びで比較できる構成です。カット日・裁断者の記入欄と、日付・ショット数・残数・ロットNo.を記録する右側の実績記入欄を備え、QRコードも配置されています。
生産数量を取数で割り、端数を切り上げて必要ショット数を算出する計算式が組まれています。
単純ショット数:=Int([確定数量]/[取数]+0.99)
R70ロール数量材料裁断カード印刷 レポートデザインビュー
材料裁断カードのブロック構成
| ブロック | 主な項目 |
|---|---|
| ヘッダー情報 | 金型保管・カット日(年月日)・裁断者・図番・手配番号・品名・納期・生産数量(確定数量)・取数・単純ショット数・備考 |
| 材料明細 | 配合番号・材料名・色調・分出し(厚み)・カット寸法・1本当重量・重量公差・使用本数・備考(材料1〜4を横並び) |
| フッター情報 | 材料LOT.NO.記入欄・QRコード |
| 実績記入欄(右側) | 日付・ショット数・残数・ロットNo.(複数行の記録欄) |
材料裁断カード印刷ボタンのマクロ
現品票印刷と同じ2段階確認構成です。
サブマクロ:材料裁断カード印刷
- サブマクロのテキスト表示
-
サブマクロ:材料裁断カード印刷 警告音 If MsgBox("材料裁断カードをプレビューで確認してから印刷してください。よろしいですか?",4+32)=6 Then レポートを開く(R70ロール数量材料裁断カード印刷, 印刷プレビュー, , , 標準) If MsgBox("材料裁断カードを印刷します。よろしいですか?",4+32)=6 Then レポートを開く(R70ロール数量材料裁断カード印刷, 印刷, , , 標準) メッセージボックス(材料裁断カードの印刷が完了しました。, はい, なし, 印刷完了) ウィンドウを閉じる(レポート, R70ロール数量材料裁断カード印刷, 確認) マクロの中止 Else メッセージボックス(印刷を中止しました, はい, なし, 中止) ウィンドウを閉じる(レポート, R70ロール数量材料裁断カード印刷, 確認) マクロの中止 If 文の最後 Else メッセージボックス(処理を中止しました, はい, なし, 中止) マクロの中止 If 文の最後 サブマクロの最後
マクロの概要
| 条件・処理 | 内容 |
|---|---|
| 1段階目:プレビュー確認ではい | R70ロール数量材料裁断カード印刷を印刷プレビューで開く |
| 2段階目:印刷実行確認ではい | 同レポートを印刷実行し、完了メッセージ後にレポートを閉じる |
| 2段階目:印刷実行確認でいいえ | 印刷を中止し、レポートを閉じる |
| 1段階目:プレビュー確認でいいえ | 処理を中止し、レポートを開かない |
マクロの設置場所
| 設置マクロ | サブマクロ名 |
|---|---|
| F70ロール数量調整サブ(材料裁断カード印刷ボタン) | 材料裁断カード印刷 |
Int(値+0.99) という古典的な書き方で切り上げを実現しています。例えば確定数量200・取数45なら200/45=4.44…に0.99を足して5.43…、Intで整数部のみ取り出して5ショットと算出されます。歩留まり計算でも直接的な式を好む書き方が一貫しており、Access独特の関数に頼らずシンプルな四則演算で組み立てるスタイルがここにも表れています。内職管理カード印刷のレコードソースクエリ(Q70ロール数量内職管理カード印刷)
現品票・材料裁断カードよりも結合テーブルが1つ増え、T70ロール数量調整→T05取引先M→T10製品M→T11製品成形という結合順になっています。宛先情報(取引先名・略称)を持つ点が他の2帳票との違いです。
Q70ロール数量内職管理カード印刷 クエリデザインビュー
Q70ロール数量内職管理カード印刷の使用テーブルと結合関係
| テーブル | 結合キー |
|---|---|
| T70ロール数量調整(起点) | 取引先コード → T05取引先M |
| T05取引先M | 図番ID → T10製品M |
| T10製品M | 図番ID → T11製品成形 |
| T11製品成形 | 金型保管フィールドの参照用 |
Q70ロール数量内職管理カード印刷の主な抽出条件
| フィールド | テーブル | 内容 |
|---|---|---|
| 金型保管 | T11製品成形 | 抽出条件:Like “GG-*”(群馬工場のみ) |
| 手配 | T70ロール数量調整 | 抽出条件:True |
| 確定 | T70ロール数量調整 | 抽出条件:True |
| 業務課 | T10製品M | 抽出条件:True(内職対象データのみ) |
Q70ロール数量内職管理カード印刷の主な取得フィールド
| フィールド | 内容 |
|---|---|
| 手配番号・取引先コード・略称・図番 | 宛先・識別情報 |
| 納期・確定数量・数量 | 生産情報 |
| 金型保管 | 抽出条件用フィールド(GG-*) |
| 業務課 | 内職対象データのみを抽出する条件フィールド(=True) |
内職管理カード印刷レポートの構成
左側が管理カード、右側が納品書兼請求書という1枚2面構成が特徴です。管理カード側は良品数・不良数・不良内容(異物混入・ショート/エアー・汚れ/テカリ・混色・キレ/キズ/イグレ・その他)を記録し、納品書側はバリ取り・検査・梱包・テープ貼り・印刷検査・その他の作業区分と数量・単価・金額・合計金額を記載する、給金計算の根拠にもなる帳票です。
R70ロール数量内職管理カード印刷 レポートデザインビュー
内職管理カードのブロック構成
| ブロック | 主な項目 |
|---|---|
| 管理カード(左側) | 図番・手配番号・納期・生産数量(確定数量)・入り数(完・分・回目)・LOT.NO.・良品数・不良数・不良内容(6項目+その他)・工程区分・備考・略称・金型保管・注文数量・数量 |
| 納品書兼請求書(右側) | 宛先(共和工業株式会社)・納品日・納品者印・コード・図番・作業区分(バリ取り・検査・梱包・テープ貼り・印刷検査・その他)・数量・単価・金額・合計金額・バーコード |
内職管理カード印刷ボタンのマクロ
これまでの2本と同じ2段階確認構成です。
サブマクロ:内職管理カード印刷
- サブマクロのテキスト表示
-
サブマクロ:内職管理カード印刷 警告音 If MsgBox("内職管理カードをプレビューで確認してから印刷してください。よろしいですか?",4+32)=6 Then レポートを開く(R70ロール数量内職管理カード印刷, 印刷プレビュー, , , 標準) If MsgBox("内職管理カードを印刷します。よろしいですか?",4+32)=6 Then レポートを開く(R70ロール数量内職管理カード印刷, 印刷, , , 標準) メッセージボックス(内職管理カードの印刷が完了しました。, はい, なし, 印刷完了) ウィンドウを閉じる(レポート, R70ロール数量内職管理カード印刷, 確認) マクロの中止 Else メッセージボックス(印刷を中止しました, はい, なし, 中止) ウィンドウを閉じる(レポート, R70ロール数量内職管理カード印刷, 確認) マクロの中止 If 文の最後 Else メッセージボックス(処理を中止しました, はい, なし, 中止) マクロの中止 If 文の最後 サブマクロの最後
マクロの概要
| 条件・処理 | 内容 |
|---|---|
| 1段階目:プレビュー確認ではい | R70ロール数量内職管理カード印刷を印刷プレビューで開く |
| 2段階目:印刷実行確認ではい | 同レポートを印刷実行し、完了メッセージ後にレポートを閉じる |
| 2段階目:印刷実行確認でいいえ | 印刷を中止し、レポートを閉じる |
| 1段階目:プレビュー確認でいいえ | 処理を中止し、レポートを開かない |
マクロの設置場所
| 設置マクロ | サブマクロ名 |
|---|---|
| F70ロール数量調整サブ(内職管理カード印刷ボタン) | 内職管理カード印刷 |
2次加硫依頼書印刷のレコードソースクエリ(Q70ロール数量2次加硫依頼書印刷)
結合構成は現品票印刷・材料裁断カード印刷と同じくT70ロール数量調整→T10製品M→T11製品成形です。対象は自社工場(仕入先コード=2)かつ2次加硫条件が空欄・”なし”以外のデータに絞り込まれます。
Q70ロール数量2次加硫依頼書印刷 クエリデザインビュー
Q70ロール数量2次加硫依頼書印刷の使用テーブルと結合関係
| テーブル | 結合キー |
|---|---|
| T70ロール数量調整(起点) | 図番ID → T10製品M |
| T10製品M | 図番ID → T11製品成形 |
| T11製品成形 | 金型保管・2次加硫条件の参照用 |
Q70ロール数量2次加硫依頼書印刷の主な抽出条件・並べ替え
| フィールド | テーブル | 内容 |
|---|---|---|
| 発注日 | T70ロール数量調整 | 並べ替え:昇順 |
| 仕入先コード | T70ロール数量調整 | 抽出条件:2(自社工場のみ) |
| 金型保管 | T11製品成形 | 抽出条件:Like “GG-*”(群馬工場のみ) |
| 2次加硫条件 | T11製品成形 | 抽出条件:Is Not Null And <>”なし”(条件ありのデータのみ) |
| 手配 | T70ロール数量調整 | 抽出条件:True |
| 確定 | T70ロール数量調整 | 抽出条件:True |
Q70ロール数量2次加硫依頼書印刷の主な取得フィールド
| フィールド | 内容 |
|---|---|
| 取引先コード・手配番号・図番 | 識別情報 |
| 確定数量・数量・納期 | 生産情報 |
| 品名 | T10製品Mより取得 |
| 2次加硫条件・金型保管 | T11製品成形より取得(抽出条件用兼表示用) |
| 備考 | T70ロール数量調整より取得 |
2次加硫依頼書印刷レポートの構成
他の3帳票よりシンプルな1ブロック構成です。2次加硫条件を目立つ位置に大きく表示し、供給予定時間(AM/PM)・出荷予定日の記入欄を右側にまとめています。
R70ロール数量2次加硫依頼書印刷 レポートデザインビュー
2次加硫依頼書のブロック構成
| ブロック | 主な項目 |
|---|---|
| 左側 | 2次加硫条件・図番・品名・手配番号・生産数量(確定数量)・注文数量(数量)・納期・備考 |
| 右側 | バーコード・供給予定時間(AM・PM/時刻)・出荷予定日(非連結・手書き記入欄) |
2次加硫依頼書印刷ボタンのマクロ
他の3本と同じ2段階確認構成です。
サブマクロ:2次加硫依頼書印刷
- サブマクロのテキスト表示
-
サブマクロ:2次加硫依頼書印刷 警告音 If MsgBox("2次加硫依頼書をプレビューで確認してから印刷してください。よろしいですか?",4+32)=6 Then レポートを開く(R70ロール数量2次加硫依頼書印刷, 印刷プレビュー, , , 標準) If MsgBox("2次加硫依頼書を印刷します。よろしいですか?",4+32)=6 Then レポートを開く(R70ロール数量2次加硫依頼書印刷, 印刷, , , 標準) メッセージボックス(2次加硫依頼書の印刷が完了しました。, はい, なし, 印刷完了) ウィンドウを閉じる(レポート, R70ロール数量2次加硫依頼書印刷, 確認) マクロの中止 Else メッセージボックス(印刷を中止しました, はい, なし, 中止) ウィンドウを閉じる(レポート, R70ロール数量2次加硫依頼書印刷, 確認) マクロの中止 If 文の最後 Else メッセージボックス(処理を中止しました, はい, なし, 中止) マクロの中止 If 文の最後 サブマクロの最後
マクロの概要
| 条件・処理 | 内容 |
|---|---|
| 1段階目:プレビュー確認ではい | R70ロール数量2次加硫依頼書印刷を印刷プレビューで開く |
| 2段階目:印刷実行確認ではい | 同レポートを印刷実行し、完了メッセージ後にレポートを閉じる |
| 2段階目:印刷実行確認でいいえ | 印刷を中止し、レポートを閉じる |
| 1段階目:プレビュー確認でいいえ | 処理を中止し、レポートを開かない |
マクロの設置場所
| 設置マクロ | サブマクロ名 |
|---|---|
| F70ロール数量調整サブ(2次加硫依頼書印刷ボタン) | 2次加硫依頼書印刷 |
日次更新ボタンで材料手配データをT70ロール自動へ移行する仕組み
4種の帳票印刷がすべて完了した後、日次更新ボタンで確定済みデータをT70ロール自動(ロール作業の生産・製造管理テーブル)へ移行します。製品マスタの材料1〜4のうち実際に登録されている材料だけを個別に追加し、最後にT70ロール数量調整テーブルを空にして翌日以降のデータ投入に備えます。
更新前に必要データの有無をチェックする2本の判定クエリ
計算に必要な「1ショット総重量」「取数」が製品マスタ側に未登録だと日次更新が正しく計算できないため、実行前にDCountで該当データの有無を確認します。
Q70ロール数量調整Null1ショット重量判定・Null取数判定の構成
| クエリ名 | 対象 | 抽出条件 |
|---|---|---|
| Q70ロール数量調整Null1ショット重量判定 | Q70ロール数量調整サブ.1ショット総重量 | Is Null |
| Q70ロール数量調整Null取数判定 | Q70ロール数量調整サブ.取数 | Is Null |
日次更新ボタンのマクロ
事前チェック2本+更新対象データの有無チェックを行った後、警告メッセージを経て8本のクエリを順に実行します。
サブマクロ:日次更新
- サブマクロのテキスト表示
-
サブマクロ:日次更新 If DCount("*","Q70ロール数量調整Null1ショット重量判定")>0 Then メッセージボックス(1ショット使用量が製品マスタに登録されていません。製品マスタの成形課に登録されているデータを確認して登録してください, はい, 警告, データなし) マクロの中止 If 文の最後 If DCount("*","Q70ロール数量調整Null取数判定")>0 Then メッセージボックス(取数が製品マスタに登録されていません。製品マスタの成形課に登録されているデータを確認して登録してください, はい, 警告, データなし) マクロの中止 If 文の最後 If DCount("*","T70ロール数量調整")=0 Or Null Then メッセージボックス(更新データがありません, はい, 警告, データなし) マクロの中止 If 文の最後 警告音 If MsgBox("各種印刷は済んでいますか?確定したデータのみ更新します。よろしいですか?",4+32,"確認")=6 Then メッセージの設定(いいえ) クエリを開く(Q70ロール数量確定数量更新, データシート, 編集) クエリを開く(Q31仕入先発注成形課設定数量更新, データシート, 編集) クエリを開く(Q70ロール数量自動1追加, データシート, 編集) クエリを開く(Q70ロール数量自動2追加, データシート, 編集) クエリを開く(Q70ロール数量自動3追加, データシート, 編集) クエリを開く(Q70ロール数量自動4追加, データシート, 編集) クエリを開く(Q70ロール数量調整削除, データシート, 編集) クエリを開く(Q70ロール数量調整手配否削除, データシート, 編集) メッセージボックス(日次更新が完了しました。, はい, なし, 完了) 再クエリ() マクロの中止 Else メッセージボックス(処理を中止します, はい, なし, 中止) マクロの中止 If 文の最後 サブマクロの最後
マクロの概要
| 段階 | 処理内容 |
|---|---|
| 事前チェック① | 1ショット総重量が未登録のデータがあれば警告して中止 |
| 事前チェック② | 取数が未登録のデータがあれば警告して中止 |
| 事前チェック③ | T70ロール数量調整に更新対象データが1件もなければ警告して中止 |
| 確認 | 印刷済みかどうかの最終確認メッセージ(はい/いいえ) |
| 実行① | Q70ロール数量確定数量更新・Q31仕入先発注成形課設定数量更新で確定数量を各テーブルの設定数量へ反映 |
| 実行② | Q70ロール数量自動1〜4追加で、材料1〜4のうち存在するものだけをT70ロール自動へ個別追加 |
| 実行③ | Q70ロール数量調整削除・Q70ロール数量調整手配否削除でT70ロール数量調整の該当データを削除 |
| 完了 | 完了メッセージ後、フォームを再クエリして表示を更新 |
マクロの設置場所
| 設置マクロ | サブマクロ名 |
|---|---|
| F70ロール数量調整サブ(日次更新ボタン) | 日次更新 |
確定数量を発注データへ書き戻す2本の更新クエリ
このフォームで確定した数量は、T70ロール数量調整側だけでなく、元の仕入先発注データ(T31仕入先発注M)側にも書き戻されます。発注時点の数量は仮の数量のため、確定した設定数量で上書きする形です。
Q70ロール数量確定数量更新 クエリデザインビュー
Q70ロール数量確定数量更新の構成
| フィールド | テーブル | 内容 |
|---|---|---|
| 設定数量 | T70ロール数量調整 | レコードの更新:[確定数量] |
| 確定数量(抽出条件) | T70ロール数量調整 | Is Not Null And <>0 |
| 確定 | T70ロール数量調整 | レコードの更新:True |
Q31仕入先発注成形課設定数量更新 クエリデザインビュー
Q31仕入先発注成形課設定数量更新の構成
| フィールド | テーブル | 内容 |
|---|---|---|
| 設定数量 | T31仕入先発注M | レコードの更新:[確定数量] |
| 分納残数 | T31仕入先発注M | レコードの更新:[確定数量] |
| 確定数量(抽出条件) | T70ロール数量調整 | Is Not Null And <>0 |
| 確定 | T70ロール数量調整 | レコードの更新:True |
材料1〜4を個別にT70ロール自動へ追加するクエリ(Q70ロール数量自動1〜4追加)
4本とも構造は同一で、材料番号(1〜4)だけが異なります。各材料の1本重量が0でない(=その材料が実際に登録されている)データのみを抽出条件とすることで、使っていない材料スロットを追加しない仕組みになっています。
Q70ロール数量自動1〜4追加 クエリデザインビュー(代表で1のみ)
つづき
つづき
Q70ロール数量自動1追加の構成(材料2〜4は添字を読み替え)
| 追加先フィールド(T70ロール自動) | 式・参照元 |
|---|---|
| 発注日 | Date() |
| 手配番号 | [手配番号] & “R1″(材料2は”R2″、材料3は”R3″、材料4は”R4″) |
| 図番・図番ID | T70ロール数量調整より |
| 配合番号 | 配合番号1(T11製品成形) |
| 材料名 | 材料1(T11製品成形) |
| 色調 | 色調1(T11製品成形) |
| 厚み | 厚み1(T11製品成形) |
| 巾 | ロール巾1(T11製品成形) |
| 納期 | T70ロール数量調整より |
| 仕入先コード(抽出条件) | T70ロール数量調整.仕入先コード=2(自社工場のみ) |
| 手配重量 | Int(Int([1本重量1]*[使用本数1]+0.99)*Int([確定数量]/[取数]+0.99)) |
| 分納残 | 手配重量と同一の式(初期値として同値をセット) |
| 1ショット使用量 | Int([1本重量1]*[使用本数1]+0.99) |
| ショット数 | Int([確定数量]/[取数]+0.99) |
| 取数・取引先コード・備考 | T70ロール数量調整より |
| 従業員コード | [Forms]![F00メインメニュー]![従業員コード] |
| 手配番号元 | T70ロール数量調整.手配番号元 |
| 仕入先発注手配番号 | T70ロール数量調整.手配番号 |
| 手配(抽出条件) | True |
| 確定(抽出条件) | True |
| 1本重量1(抽出条件) | <>0(材料1が存在するデータのみ抽出。材料2〜4はそれぞれ1本重量2〜4で判定) |
| 確定数量(抽出条件) | Is Not Null |
T70ロール数量調整をクリアする2本の削除クエリ
材料手配データがT70ロール自動へ確定・保管された後、元のT70ロール数量調整テーブルは削除して空にします。確定データと手配否データ、それぞれ別クエリで削除する2段構成です。
Q70ロール数量調整削除 クエリデザインビュー
Q70ロール数量調整手配否削除 クエリデザインビュー
Q70ロール数量調整削除・手配否削除の構成
| クエリ名 | 削除対象 | 抽出条件 |
|---|---|---|
| Q70ロール数量調整削除 | T70ロール数量調整.* | 確定=True |
| Q70ロール数量調整手配否削除 | T70ロール数量調整.* | 手配=False |
まとめ
自動発注数量調整ページは、確定ボタン・数量変ポップアップ・在庫引当ポップアップという3つの異なる確定手段を用意し、歩留まりや在庫状況に応じてオペレーターが柔軟に材料手配数量を決められる設計になっています。確定後は4種の帳票へ用途別に分岐して印刷し、日次更新で製品マスタの材料構成に応じてT70ロール自動テーブルへとデータを移行します。歩留まり計算・切り上げ処理・二重の確定フラグなど、随所で「自動計算にオペレーターの裁量の余地を残す」という一貫した設計思想が見られるページです。
本サイトではマクロを用いた構築手順を中心に紹介していますが、決してマクロを唯一の正解として推奨しているわけではありません。VBAが扱える環境であれば、より多彩で柔軟なプログラムが組めるVBAでの構築をむしろ推奨したいと考えています。
ここでマクロという選択肢を提示しているのは、VBAにハードルを感じている方への「もう一つの入り口」として、また将来的な後継者への引き継ぎ負荷を抑えるという実務上のメリットを考慮してのことです。設計の考え方の一つとして、状況に合わせて活用してください。