Accessで製品情報を他のテーブルに追加する方法

このQ&Aのポイント
  • 在庫表作成時に製品マスタと資材マスタを使用する方法について教えてください。
  • 受注マスタに受注情報を入力し、必要資材数を算出し在庫明細マスタに追加する方法を教えてください。
  • 質問内容に情報が足りない場合はお知らせください。
回答を見る
  • ベストアンサー

Access 製品情報を他のテーブルに追加する方法

教えてください。Accessにて在庫表を作っています。製品マスタには、その製品を構成する資材が9種類あり、それぞれ資材1~9とフィールドを設けています。 資材は資材マスタを作成し、資材名、単位、分類、初期在庫にフィールドを設置しました。 資材は製品1つに対して1つとは限りませんので、単位を設けました。 (ケースの資材であれば40入になりますので、製品40個で1ケースになります。単位を40と入力) 受注マスタを作成し、受注日、製品名、数量、納期のフィールドを設置。 在庫明細マスタを作成してるので、受注時に受注マスタに、フォームから受注日、製品名、数量を入力すると、サブフォームに製品マスタをレコードソースにした資材と、受注数に対して算出された必要資材数が表示され、これを在庫明細マスタに追加したいのですが、この方法が上手くできません。 1、サブフォームに資材を表示させる方法を教えて頂けますか。 2、受注数に対し算出するのは、フォーム上で計算できると思いますが、在庫明細マスタに追加する  方法を教えて頂けますか。 質問内容に情報が足りないか時はご指摘ください。

質問者が選んだベストアンサー

  • ベストアンサー
noname#192382
noname#192382
回答No.15

新しい年があなた様によい年でありますよう祈念しています。続きの最後の部分を書きましたのでお送りします。 6.在庫量の書き換え 出荷により在庫が減りますので、在庫量の書き換えをする作業です。この作業は「在庫計算クエリーV2」と「在庫更新クエリー1」で行います。  この作業は改良の余地がありますが、一応現在のものをお示しします。 (1)「在庫計算クエリーV2」の作成 1).クェリー新規作成 2).「デザインビュー 」 「OK」 3).「テーブルの表示」のウインドウのなかで「テーブル」の見出しの中にある「受注マスタテーブル1」 をクリックして「追加」ボタンを押す 4)同様に「製品マスタテーブル1」をクリックして「追加」ボタンを押す 5)以下同様に「本体マスタテーブル1」、「本体マスタテーブル1」、「Aポンプマスタテーブル1」、「Bポンプマスタテーブル1」、「パッキンマスタテーブル1」、「Aケースマスタテーブル1」、「Bケースマスタテーブル1」、「キャップマスタテーブル1」、「内袋マスタテーブル1」、「ラベルマスタテーブル1」のすべてのテーブルを追加する。 6).「テーブルの表示」のウインドウのなかで「閉じる」を押す 7.).クエリーのグリッドのフィールドの欄に「受注マスタテーブル1」の「受注ID」をドラッグ貼り付けする。 8)..クエリーのグリッドのフィールドの次の欄に 「製品マスタテーブル1」の「製品名」をドラッグ貼り付けする。 9).次の欄に「受注マスタテーブル1」の「受注数量」をドラッグ貼り付けする。 10)次のふたつの欄に、「本体マスタテーブル1」の「本体名」と「在庫量 」をドラッグ貼り付けする。 11)次の欄では計算式をいれます。そのやり方はセルの中を右クリックするとすだれが出ますのでそのなかの「ビルド」を左クリックします。「式ビルダ」が現れます。「式ビルダ」は4つの枠と計算式に使う演算子と作業命令のたくさんのボタンがあります。上にひとつと下に三つ並んでいます。下の左の枠の中のテーブルを左クリックします。もしかしたらダブルクリックかもしれません。クリックします。 12)テーブルの中身が展開されて、すべてのテーブルの名が現れますから、「本体マスタテーブル1」を選びます。 13)下の中の枠に本体マスタテーブルの中身が示されます。「在庫量」を選び貼り付けのボタンをクリックします。これで上の枠の中に [本体マスタテーブル1]![在庫量] が出てきます。 14)次に演算子のマイナスをクリックします。これで上の枠の中の式にマイナスが書き込まれます。 15)下の左の枠の中の「受注マスタテーブル1」を選び、下の中の枠の中の「受注数量」を選び、貼り付けボタンを押します。「OK」ボタンを押す。これでクエリーのグリッドのセルの中に計算式が入ります。 16)次のふたつの欄に」、「Aポンプマスタテーブル1」の「Aポンプ名」と「在庫量 」をドラッグ貼り付けする。 17)次の欄では計算式をいれます。そのやり方はセルの中を右クリックするとすだれが出ますのでそのなかの「ビルド」を左クリックします。「式ビルダ」が現れます。「式ビルダ」は4つの枠と計算式に使う演算子と作業命令のたくさんのボタンがあります。上にひとつと下に三つ並んでいます。下の左の枠の中のテーブルを左クリックします。もしかしたらダブルクリックかもしれません。クリックします。 18)テーブルの中身が展開されて、すべてのテーブルの名が現れますから、」、「Aポンプマスタテーブル1」を選びます。 19)下の中の枠に、「Aポンプマスタテーブル1」の中身が示されます。「在庫量」を選び貼り付けのボタンをクリックします。これで上の枠の中に 、」、[Aポンプマスタテーブル1]![在庫量] が出てきます。 20)次に演算子のマイナスをクリックします。これで上の枠の中の式にマイナスが書き込まれます。 21)下の左の枠の中の「受注マスタテーブル1」を選び、下の中の枠の中の「受注数量」を選び、貼り付けボタンを押します。「OK」ボタンを押す。これでクエリーのグリッドのセルの中に計算式が入ります。 22)以下同様な作業を「ラベルマスタテーブル1」まで続けます。 23終わりましたら)「在庫計算クエリーV2」の名前で保存します。 (2)「在庫更新クエリー1」の作成 1).クェリー新規作成 2).「デザインビュー 」 「OK」 3).「テーブルの表示」のウインドウのなかでクエリーのタブを選び「クエリー」の中にある)「在庫計算クエリーV2」をクリックして「追加」ボタンを押す。ウインドウに)「在庫計算クエリーV2」の全フィールド名が示される。 4).「テーブルの表示」のウインドウのなかで「閉じる」を押す 5)ツールバーの「クエリー」をクリックして、プルダウンメニューの中の「更新」を選択する。クエリーのデザインビューのグリッドに「レコードの更新」という欄が新たに加わる。 6)クエリーのグリッドのフィールドの一番目に   本体マスタテーブル1.在庫量  をドラッグ貼り付けする。 7)次のセルに  Aポンプマスタテーブル1.在庫量  をドラッグ貼り付けする 8)以下同様に  ラベルマスタテーブル1.在庫量  までをドラッグ貼り付けする 9)次に「レコードの更新」の欄に移る。「本体マスタテーブル1.在庫量」 の下には 「式9 」をドラッグ貼り付けする。 10)「Aポンプマスタテーブル1.在庫量 」 の下には「 式8 」をドラッグ貼り付けする 11)以下同様に「ラベルマスタテーブル1在庫量」野下に 「式1」 をドラッグ貼り付けするまで続ける。 12))「在庫更新クエリー1」という名称で保存する。 使い方 1)「在庫計算クエリーV2」クエリーをデザイン形式で立ち上げ、受注の件名を「受注ID」の抽出条件のところにたとえば「 41021」と書き込み、、ツールバーのボタンにより実行させ上書き保存する。 2)))「在庫更新クエリー1」をデザイン形式で立ち上げ、ツールバーの実行ボタンを押す。 3)データが書き換えされることについて確認のメッセージが現れるが、承認する。 4)これにより指定した受注案件の注文どおりに出荷したものとして関係のある各部品の在庫量が計算しなおされる。 作業前の本体マスタテーブル1 本体ID 本体名 単位 在庫量 100 200ccボトル本体 1 1000 101 500ccボトル本体 1 1500 103 100ccボトル本体 1 3000 受注ID 12021について作業後の「在庫計算クエリーV2」の計算結果 受注ID 製品名 受注数量 本体名 本体マスタテーブル1.在庫量 式9 Aポンプ名 Aポンプマスタテーブル1.在庫量 式8 Bポンプ名 Bポンプマスタテーブル1.在庫量 式7 パッキン名 パッキンマスタテーブル1.在庫量 式6 Aケース名 Aケースマスタテーブル1.在庫量 式5 Bケース名 Bケースマスタテーブル1.在庫量 式4 キャップ名 キャップマスタテーブル1.在庫量 式3 内袋名 内袋マスタテーブル1.在庫量 式2 ラベル名 ラベルマスタテーブル1.在庫量 式1 41021 ボディソープ 360 500ccボトル本体 1500 1140 なし 0 -360 なし 0 -360 なし 0 -360 小箱A 80 -280 大箱A 30 -330 穴中栓CAP付 4000 3640 内袋A 15000 14640 ボディラベル 48 -312 作業後の本体マスタテーブル1 本体ID 本体名 単位 在庫量 100 200ccボトル本体 1 1000 101 500ccボトル本体 1 1140 103 100ccボトル本体 1 3000

t-seisan1
質問者

お礼

補足にて記載してしまいました。 本当に長い間お付き合いいただきありがとうございました。 何とか、形になりました。 質問内容だけでなく、設計の仕方、クエリ作成方法、写真など、本当に丁寧且つ、親切に対応して頂いた事を感謝しております。 ありがとうございました。

t-seisan1
質問者

補足

optimumsoup 様。 本当に長い間お付き合いいただきありがとうございました。 何とか、形になりました。 質問内容だけでなく、設計の仕方、クエリ作成方法、写真など、本当に丁寧且つ、親切に対応して頂いた事を感謝しております。 ありがとうございました。

その他の回答 (14)

noname#192382
noname#192382
回答No.14

すみません。大きな声ではいえませんがまたミスをしました。 5.出荷履歴記録 出荷の詳細を部品別に記録する。もっとシンプルな手続きがあると思われるが、ここでは「受注明細クエリー1」で示される注文通りに出荷するとしてその結果を逐次記録するようになっている。具体的にいえば、「受注明細クエリー1」で注文を確認の後、これから作成する「出荷追加クエリー21」で追加するデータを作成しその結果を「更新在庫テーブル1」に書き込んでいきます。 「出荷追加クエリー21」をクエリーで作る 1).クェリー新規作成 2).「デザインビュー 」 「OK」 3).「テーブルの表示」のウインドウのなかでクエリーのタブを選び「クエリー」の中にある「受注明細クエリー1」をクリックして「追加」ボタンを押す 4).「テーブルの表示」のウインドウのなかで「閉じる」を押す 5)ツールバーの「クエリー」をクリックして、プルダウンメニューの中の「追加」を選択する 6) 追加のウインドウのテーブル名のところにある「更新在庫テーブル1」を選ぶ 7) カレントデータベースを選んで「OK」を押す。 8).クエリーのグリッドのフィールドの欄に「受注明細クエリー1」の「受注ID」をドラッグ貼り付けする。 9)..クエリーのグリッドのフィールドの次の欄に「受注明細クエリー1」の「製品名」をドラッグ貼り付けする。 10).次のふたつの欄に「受注明細クエリー1」の「本体名」と「受注数量」をドラッグ貼り付けする。 11)次のふたつの欄に「受注明細クエリー1」の「Aポンプ名」と「受注数量」をドラッグ貼り付けする。 12)以下「Bポンプ」「パッキン」「Aケース」「Bケース」「キャップ」「内袋」「ラベル」についても名称と「受注数量」をドラッグ貼り付けする。 13クエリーのグリッドの「レコードの追加」の欄に出荷履歴のデータを記入するテーブルのフィールドを指定します。一番左は受注IDです。このセルの中の右端を左クリックするとランにプルダウンのマークが出ますから、そのマークを左クリックします。すると「更新在庫テーブル1」が現れその下にこのテーブルにある全フィールドが羅列されたすだれが出てきます。このなかから「受注ID」を選びます。 14)次のセルに行き、このセルの中の右端を左クリックするとランにプルダウンのマークが出ますから、そのマークを左クリックします。すると「更新在庫テーブル1」が現れその下にこのテーブルにある全フィールドが羅列されたすだれが出てきます。このなかから「製品名」を選びます。 15)以下同様にして、「本体名」、「本体在庫」、「Aポンプ名」、「Aポンプ在庫」と入れていきます。最後は「ラベル在庫」となります。 16)..このクエリーを「出荷追加クエリー21」という名前で保存する。 17)..「閉じる」をクリック このクエリーの使い方 1)あらかじめ「受注明細クエリー1」を立ち上げて上書きで保存しておく。 2)「出荷追加クエリー21」を立ち上げてデザインビューにしておいて、ツールバーの実行ボタンを押して実行する。 このクエリーの実行により、「受注明細クエリー1」で指定した受注IDの注文について、出荷した部品の出荷量が「更新在庫テーブル1」に書き込まれます。 画像は「出荷追加クエリー21」のデザインビューの一部 「出荷追加クエリー21」 受注ID 製品名 本体名 Expr1003 Aポンプ名 Expr1005 Bポンプ名 Expr1007 パッキン名 Expr1009 Aケース名 Expr1011 Bケース名 Expr1013 キャップ名 Expr1015 内袋名 Expr1017 ラベル名 受注数量 41021 ボディソープ 500ccボトル本体 360 なし 360 なし 360 なし 360 小箱A 360 大箱A 360 穴中栓CAP付 360 内袋A 360 ボディラベル 360 「更新在庫テーブル1」 ID 受注ID 製品名 本体名 本体在庫 Aポンプ名 Aポンプ在庫 Bポンプ名 Bポンプ在庫 パッキン名 パッキン在庫 Aケース名 Aケース在庫 Bケース名 Bケース在庫 キャップ名 キャップ在庫 内袋名 内袋在庫 ラベル名 ラベル在庫 9 41021 ボディソープ 500ccボトル本体 360 なし 360 なし 360 なし 360 小箱A 360 大箱A 360 穴中栓CAP付 360 内袋A 360 ボディラベル 360

noname#192382
noname#192382
回答No.13

NO12の回答は肝心なミスがありました。回答しなおします。 5.出荷履歴記録 出荷の詳細を部品別に記録する。もっとシンプルな手続きがあると思われるが、ここでは「受注明細クエリー1」で示される注文通りに出荷するとしてその結果を逐次記録するようになっている。具体的にいえば、「受注明細クエリー1」で注文を確認の後、これから作成する「出荷追加クエリー21」で追加するデータを作成しその結果を「更新在庫テーブル1」に書き込んでいきます。 「出荷追加クエリー21」をクエリーで作る 1).クェリー新規作成 2).「デザインビュー 」 「OK」 3).「テーブルの表示」のウインドウのなかでクエリーのタブを選び「クエリー」の中にある「受注明細クエリー1」をクリックして「追加」ボタンを押す 4).「テーブルの表示」のウインドウのなかで「閉じる」を押す 5)ツールバーの「クエリー」をクリックして、プルダウンメニューの中の「追加」を選択する 6) 追加のウインドウのテーブル名のところにある「更新在庫テーブル1」を選ぶ 7) カレントデータベースを選んで「OK」を押す。 8).クエリーのグリッドのフィールドの欄に「受注明細クエリー1」の「受注ID」をドラッグ貼り付けする。 9)..クエリーのグリッドのフィールドの次の欄に「受注明細クエリー1」の「製品名」をドラッグ貼り付けする。 10).次のふたつの欄に「受注明細クエリー1」の「本体名」と「受注数量」をドラッグ貼り付けする。 11)次のふたつの欄に「受注明細クエリー1」の「Aポンプ名」と「受注数量」をドラッグ貼り付けする。 12)以下「Bポンプ」「パッキン」「Aケース」「Bケース」「キャップ」「内袋」「ラベル」についても名称と「受注数量」をドラッグ貼り付けする。 13)..このクエリーを「出荷追加クエリー21」という名前で保存する。 14)..「閉じる」をクリック このクエリーの使い方 1)あらかじめ「受注明細クエリー1」を立ち上げて上書きで保存しておく。 2)「出荷追加クエリー21」を立ち上げてデザインビューにしておいて、ツールバーの実行ボタンを押して実行する。 このクエリーの実行により、「受注明細クエリー1」で指定した受注IDの注文について、出荷した部品の出荷量が「更新在庫テーブル1」に書き込まれます。 画像は「出荷追加クエリー21」のデザインビューの一部 「出荷追加クエリー21」 受注ID 製品名 本体名 Expr1003 Aポンプ名 Expr1005 Bポンプ名 Expr1007 パッキン名 Expr1009 Aケース名 Expr1011 Bケース名 Expr1013 キャップ名 Expr1015 内袋名 Expr1017 ラベル名 受注数量 41021 ボディソープ 500ccボトル本体 360 なし 360 なし 360 なし 360 小箱A 360 大箱A 360 穴中栓CAP付 360 内袋A 360 ボディラベル 360 「更新在庫テーブル1」 ID 受注ID 製品名 本体名 本体在庫 Aポンプ名 Aポンプ在庫 Bポンプ名 Bポンプ在庫 パッキン名 パッキン在庫 Aケース名 Aケース在庫 Bケース名 Bケース在庫 キャップ名 キャップ在庫 内袋名 内袋在庫 ラベル名 ラベル在庫 9 41021 ボディソープ 500ccボトル本体 360 なし 360 なし 360 なし 360 小箱A 360 大箱A 360 穴中栓CAP付 360 内袋A 360 ボディラベル 360 画像は省略します。

noname#192382
noname#192382
回答No.12

5.出荷履歴記録 出荷の詳細を部品別に記録する。もっとシンプルな手続きがあると思われるが、ここでは「受注明細クエリー1」で示される注文通りに出荷するとしてその結果を逐次記録するようになっている。具体的にいえば、「受注明細クエリー1」で注文を確認の後、これから作成する「出荷追加クエリー21」で追加するデータを作成しその結果を「更新在庫テーブル1」に書き込んでいきます。 「出荷追加クエリー21」をクエリーで作る 1).クェリー新規作成 2).「デザインビュー 」 「OK」 3).「テーブルの表示」のウインドウのなかでクエリーのタブを選び「クエリー」の中にある「受注明細クエリー1」をクリックして「追加」ボタンを押す 4).「テーブルの表示」のウインドウのなかで「閉じる」を押す 5).クエリーのグリッドのフィールドの欄に「受注明細クエリー1」の「受注ID」をドラッグ貼り付けする。 6)..クエリーのグリッドのフィールドの次の欄に「受注明細クエリー1」の「製品名」をドラッグ貼り付けする。 7).次のふたつの欄に「受注明細クエリー1」の「本体名」と「受注数量」をドラッグ貼り付けする。 8)次のふたつの欄に「受注明細クエリー1」の「Aポンプ名」と「受注数量」をドラッグ貼り付けする。 9)以下「Bポンプ」「パッキン」「Aケース」「Bケース」「キャップ」「内袋」「ラベル」についても名称と「受注数量」をドラッグ貼り付けする。 10)..このクエリーを「出荷追加クエリー21」という名前で保存する。 11)..「閉じる」をクリック このクエリーの使い方 1)あらかじめ「受注明細クエリー1」を立ち上げて上書きで保存しておく。 2)「出荷追加クエリー21」を立ち上げてデザインビューにしておいて、ツールバーの実行ボタンを押して実行する。 このクエリーの実行により、「受注明細クエリー1」で指定した受注IDの注文について、出荷した部品の出荷量が「更新在庫テーブル1」に書き込まれます。 画像は「出荷追加クエリー21」のデザインビューの一部 「出荷追加クエリー21」 受注ID 製品名 本体名 Expr1003 Aポンプ名 Expr1005 Bポンプ名 Expr1007 パッキン名 Expr1009 Aケース名 Expr1011 Bケース名 Expr1013 キャップ名 Expr1015 内袋名 Expr1017 ラベル名 受注数量 41021 ボディソープ 500ccボトル本体 360 なし 360 なし 360 なし 360 小箱A 360 大箱A 360 穴中栓CAP付 360 内袋A 360 ボディラベル 360 「更新在庫テーブル1」 ID 受注ID 製品名 本体名 本体在庫 Aポンプ名 Aポンプ在庫 Bポンプ名 Bポンプ在庫 パッキン名 パッキン在庫 Aケース名 Aケース在庫 Bケース名 Bケース在庫 キャップ名 キャップ在庫 内袋名 内袋在庫 ラベル名 ラベル在庫 9 41021 ボディソープ 500ccボトル本体 360 なし 360 なし 360 なし 360 小箱A 360 大箱A 360 穴中栓CAP付 360 内袋A 360 ボディラベル 360

noname#192382
noname#192382
回答No.11

4.「受注明細クエリー1」 受注の内容を部品ごとに特定し、各部品の在庫量が示される。この作業は「受注明細クエリー1」で行います。受注マスタテーブルの受注IDを入力するだけで、後は組み立てに必要な部品名と部品ごとに在庫がいくつあるかが示されます。 「受注明細クエリー1」をクエリーで作る 1).クェリー新規作成 2).「デザインビュー 」 「OK」 3).「テーブルの表示」のウインドウのなかで「テーブル」の見出しの中にある「受注マスタテーブル1」 をクリックして「追加」ボタンを押す 4)同様に「製品マスタテーブル1」をクリックして「追加」ボタンを押す 5)以下同様に「本体マスタテーブル1」、「本体マスタテーブル1」、「Aポンプマスタテーブル1」、「Bポンプマスタテーブル1」、「パッキンマスタテーブル1」、「Aケースマスタテーブル1」、「Bケースマスタテーブル1」、「キャップマスタテーブル1」、「内袋マスタテーブル1」、「ラベルマスタテーブル1」のすべてのテーブルを追加する。 6).「テーブルの表示」のウインドウのなかで「閉じる」を押す 7.).クエリーのグリッドのフィールドの欄に「受注マスタテーブル1」の「受注ID」をドラッグ貼り付けする。 8)..クエリーのグリッドのフィールドの次の欄に 「製品マスタテーブル1」の「製品名」をドラッグ貼り付けする。 9).次の欄に「受注マスタテーブル1」の「受注数量」をドラッグ貼り付けする。 10)次のふたつの欄に、「本体マスタテーブル1」の「本体名」と「在庫量 」をドラッグ貼り付けする。 11)次のふたつの欄に、」、「Aポンプマスタテーブル1」の「Aポンプ名」と「在庫量 」をドラッグ貼り付けする。 12)以下「Bポンプマスタテーブル1」から「ラベルマスタテーブル1」までのすべてのテーブルから名称と在庫量をドラッグ貼り付けする。 13)..このクエリーを「受注明細クエリー1」という名前で保存する。 14)..「閉じる」をクリック このクエリーの使い方 1)「受注明細クエリー1」を立ち上げる 2)受注ID41021の注文の明細を見るときは、受注IDの抽出条件の欄に「41021」と入力して、ツールバーの実行ボタン( !)を押す。 これで受注の製品名、受注量、と各部品の部品名と在庫量が示される。 なお、あちこちにID番号で999がありますが、プログラム作成、検討中に仮に入れたものであって、本体の作業に悪影響はありませんので気にしないでください。 デザインビューは今回は大きすぎて画像では送ることができません。検討してみます。 結果にしたのようになります。 受注ID 製品名 受注数量 本体名 本体マスタテーブル1.在庫量 Aポンプ名 Aポンプマスタテーブル1.在庫量 Bポンプ名 Bポンプマスタテーブル1.在庫量 パッキン名 パッキンマスタテーブル1.在庫量 Aケース名 Aケースマスタテーブル1.在庫量 Bケース名 Bケースマスタテーブル1.在庫量 キャップ名 キャップマスタテーブル1.在庫量 内袋名 内袋マスタテーブル1.在庫量 ラベル名 ラベルマスタテーブル1.在庫量 41021 ボディソープ 360 500ccボトル本体 1500 なし 0 なし 0 なし 0 小箱A 80 大箱A 30 穴中栓CAP付 4000 内袋A 15000 ボディラベル 48

noname#192382
noname#192382
回答No.10

3.リレーション 11のテーブルの間にリレーションを組みます。 ツールバーのリレーションをクリックして、リレーションのウインドーに11個のテーブルを乗せた後、受注マスタテーブル1の製品IDと製品マスタテーブル1の製品IDを結合します。次に製品マスタテーブル1の本体IDと本体マスタテーブル1の本体IDを結合します。次に製品マスタテーブル1のAポンプIDとAポンプマスタテーブル1のAポンプIDを結合します。以下同様に製品マスタテーブル1のBポンプID、パッキンID、AケースID、BケースID、キャップID、内袋ID、ラベルIDと対応するフィールド名の間をつないでください。結合の仕方をAポンプID、BポンプID、パッキンID、キャップIDに限り、製品マスタテーブル1のすべてと各部品マスタの結合としてください。 リレーションの様子を画像で示します。

t-seisan1
質問者

補足

質問しておきながら、全く手つかずの期間が長くなってしまい、申し訳ございませんでした。 新年あけましておめでとうございます。 この様な場所で、年越ししてまで質問に回答して頂けて、本当に感謝しております。 optimumsoup様にとって、良い年でありますよう、心よりお祈り申し上げます。 ようやく再開できる体制に戻ったので、ご連絡させて頂きます。 宜しくお願いします。

noname#192382
noname#192382
回答No.9

NO8の補足を拝読しました。 今まで書いたものをお送りします。 在庫管理ドキュメント1.rtf 1. このプログラムのやる仕事 三つの作業ができます。ひとつは受注で受け取った製品IDに基づき、必要な部品名と部品ごとに在庫がいくつあるか、を示す作業があります。この作業は「受注明細クエリー1」で行います。二つ目の作業は出荷の履歴を記録する作業です。この作業は「出荷追加クエリー21」で行い、結果は「更新在庫テーブル1」に書き込んでいきます。三つ目は出荷により在庫が減りますので、在庫量の書き換えをする作業です。この作業は「在庫更新クエリー」が行います。  なお受注は受注テーブルの中の受注IDを示すことにより作業が始まります。 2.テーブル テーブルは次の11個を作る。ここで製品マスタテーブルのなかの携帯用除菌剤のラベルIDは703となっていましたが702ではないですか。このほかに出荷履歴の記録のために「更新在庫テーブル1」を作ります。 1) 受注マスタテーブル1 受注ID 製品ID 受注数量 希望納期 決定納期 受注日 41000 10010 600 2013/12/25 2013/12/25 2013/12/16 41021 10020 360 2013/12/25 2013/12/25 2013/12/16 41024 10030 100 2014/01/13 2014/01/13 2013/12/19 2)製品マスタテーブル1 製品ID 製品名 本体ID AポンプID BポンプID パッキンID AケースID BケースID キャップID 内袋ID ラベルID 10010 ハンドソープ 100 200 202 999 401 403 999 600 700 10020 ボディソープ 101 999 999 999 401 403 500 600 701 10030 携帯用除菌剤 103 201 203 301 402 404 999 602 702 3)本体マスタテーブル1 本体ID 本体名 単位 在庫量 100 200ccボトル本体 1 1000 101 500ccボトル本体 1 1500 103 100ccボトル本体 1 3000 4)Aポンプマスタテーブル1 AポンプID Aポンプ名 単位 在庫量 200 泡ポンプ 1 5000 201 スプレーA 1 5500 999 なし 0 0 -1080 5)Bポンプマスタテーブル1 BポンプID Bポンプ名 単位 在庫量 202 オーバーCAP 1 5000 203 オーバーCAPB 1 5500 999 なし 0 0 6)パッキンマスタテーブル1 パッキンID パッキン名 単位 在庫量 301 20paiパッキン 1 10200 999 なし 0 0 7)Aケースマスタテーブル1 AケースID Aケース名 単位 在庫量 401 小箱A 6 80 402 小箱B 10 100 8)Bケースマスタテーブル1 BケースID Bケース名 単位 在庫量 403 大箱A 10 30 404 大箱B 4 40 9)キャップマスタテーブル1 キャップID キャップ名 単位 在庫量 500 穴中栓CAP付 1 4000 999 なし 0 0 10)内袋マスタテーブル1 内袋ID 内袋名 単位 在庫量 600 内袋A 10 15000 602 内袋B 40 14000 11)ラベルマスタテーブル1 ラベルID ラベル名 単位 在庫量 700 泡ラベル 1 32 701 ボディラベル 1 48 702 除菌ラベル 1 48 12)更新在庫テーブル1 出荷履歴を記録するためのテーブルを作ります。名称がよくありませんが、行きがかり上、更新在庫テーブル1という名前にさせてください。フィールドとしてはサンプルのようにします。 更新在庫テーブル1 ID 受注ID 製品名 本体名 本体在庫 Aポンプ名 Aポンプ在庫 Bポンプ名 Bポンプ在庫 パッキン名 パッキン在庫 Aケース名 Aケース在庫 Bケース名 Bケース在庫 キャップ名 キャップ在庫 内袋名 内袋在庫 ラベル名 ラベル在庫 6 41024 携帯用除菌剤 100ccボトル本体 100 スプレーA 100 オーバーCAPB 100 20paiパッキン 100 小箱B 100 大箱B 100 100 内袋B 100 除菌ラベル 100 7 41000 ハンドソープ 200ccボトル本体 600 泡ポンプ 600 オーバーCAP 600 600 小箱A 600 大箱A 600 600 内袋A 600 泡ラベル 600 8 41021 ボディソープ 500ccボトル本体 360 360 360 360 小箱A 360 大箱A 360 穴中栓CAP付 360 内袋A 360 ボディラベル 360

t-seisan1
質問者

補足

年の瀬にここ迄して頂き感謝致します。 誠に勝手ながら、AccsessライセンスのはいったPCが自宅にあり、現在帰省のため確認が出来ません。 自宅に戻り次第トライしたいと思ってます。 また、ご連絡させて頂きます。

noname#192382
noname#192382
回答No.8

やっと完成しました。アクセスの勉強の機会を作っていただいたことにお礼を申し上げます。時間が経過しましたので、解決済みでもう回答の必要はないと思いますが、いかがでしょうか。

t-seisan1
質問者

補足

とんでもございません。 ぜひご教授をお願いします。

noname#192382
noname#192382
回答No.7

途中経過を報告します。 テーブルは、ポンプとケースはそれぞれA,Bのふたつに分けるのがよいようです。したがってテーブルは、受注、製品、本体、Aポンプ、Bポンプ、パッキン、Aケース、Bケース、キャップ、内袋、ラベルの11のマスタテーブル、のほかに出荷台帳、クエリは受注明細をみせるクエリー、出荷記録を台帳に書き込む追加クエリー、在庫量を書き替える更新クエリーの3つのクエリーを作ればよいと思います。最後の更新クエリーを作っているところです。近々宿題のお答えができると思います。 前回画像が小さいままで失礼しました。どうしたら大きくできるのかわからないのです。すみません。

t-seisan1
質問者

補足

お世話になります。 お手間を取らせ申し訳ございません。 自分なりにアドバイスを元に考えていますが、やはり基本がなってないせいか、先に記載した設計の問題から見直す必要があった事に、情けなく思ってしまいます。 ご指導して頂いた分は終わり、色々と考え直し挑戦中です。 引き続き、ご指導の程をお願い致します。

noname#192382
noname#192382
回答No.6

画像を少し拡大してお送りします

noname#192382
noname#192382
回答No.5

出荷履歴を記録するテーブルを「出荷マスタテーブル」と呼ぶこととし、NO3の回答の一番下のクエリーを「受注明細クエリー」と呼ぶことにします。 出荷マスタテーブルの構成は、仮に受注ID、商品ID、個数ID、本体ID、ポンプID、パッキンID、ケースID、キャップID、内袋ID、ラベルIDとします。 そこで受注明細クエリーの中の受注ID、商品ID、個数ID、本体ID、ポンプID、パッキンID、ケースID、キャップID、内袋ID、ラベルIDを出荷マスタテーブルの各フィールドに書きこんでいくことにします。 そのやり方は、アクセス97の場合ですが、 追加クエリーを使ってテーブルから他のテーブルにレコードを追加する 1 (省略) 2 クエリーのデザイン ビューで、ツールバーの (クエリーの種類)(「!」のボタンの左となりのボタンです--回答者注) の右端の下向き矢印をクリックし、[追加] をクリックします。[追加] ダイアログ ボックスが表示されます。 3 [テーブル名] ボックスに、レコードの追加先のテーブル名「出荷マスタテーブル」を入力します。 4 (省略) 。 5 [OK] をクリックします。 6 (省略) 。 7 両方のテーブルから同じフィールド名を選択した場合、一致しているフィールド名が [レコードの追加] セルに自動的に書き込まれます。(省略) 8 デザイン グリッドにドラッグしたフィールドの [抽出条件] セルに、追加に関する抽出条件を入力します。 9 (省略) 。 10 ツールバーの (実行) をクリックしてレコードを追加します。 メモ クエリーの実行を中止するには、Ctrl キーを押しながら Break キーを押します。

関連するQ&A

  • ACCESS テーブルの結合

    お世話になります。 テーブルA(約20万レコード)、B(6レコード)があり、共通しているフィールドは以下の通りです。  ・受注日  ・製品コード  ・数量 AとBのテーブルの共通しているフィールドを条件無しで1つのテーブルとして見立てたいと思っておりますがうまくいきません。 SELECT A.製品コード, A.数量, A.受注日 FROM A UNION SELECT B.製品コード, B.数量, B.受注日 FROM B; 上記SQLでエラーにはならないのですが、レコード数が本来約20万レコードあるはずが、7万レコードしか抽出されません。 SELECT A.製品コード, A.数量, A.受注日 FROM A; と SELECT B.製品コード, B.数量, B.受注日 FROM B; をそれぞれ分けてやると、レコード数に問題ありません。。 どのようにすれば2つのテーブルを1つに結合できるのでしょうか。 ご教授の程、宜しくお願い致します。

  • ACCESSのメインフォームとサブフォームについて

    ACCESSで、受注伝票のようなものを作成したいと思っています。受注伝票フォームに受注明細のサブフォームを埋め込んだようなフォームを作ろうとしています。その際、受注伝票と明細に受注コードのフィールドを設け関連づけたいのですが、メインフォームに受注コードを入力したらサブにも同じコードが自動的に振られるようなことはできるのでしょうか。 出来ないのであれば、どのように作ればよいのでしょうか。

  • ★Access★2つのサブフォームの計算

    受注管理として、注文書の作成入力をしています。 『メインフォーム』で、顧客先などを入力し、『サブフォームA』で受注明細を入力しています。そして受注種類が2つあるので、フィールドの違う受注明細の『サブフォームB』もあるんです。各サブフォームには数量・単価・金額が入っています。 『サブフォームA』『サブフォームB』の両方に注文がある場合は、各サブフォームの合計(=[Form]!サブフォームA!金額合計)を出し、その合計同士を足して総合計金額(A+B)が『メインフォーム』にちゃんと表示されます。しかし、『サブフォームA』にだけ注文がある場合、『A』合計は表示されますが、『B』合計が空欄になってしまって、A+Bの合計が計算されないのです。さらにレポート印刷もできないのです。 どうすればいいのでしょうか?合計プロパティの既定値を0にしてもだめなんです。誰か教えて下さい。

  • ACCESS2000 フォームとテーブル

    カテゴリを間違っていたので再度ご質問致します。 ACCESSのフォームなんですけど、 フォームとサブフォームがあり、サブフォームの数量の合計をフォームの合計に表示するように出来たのですが、 表示ではなく、テーブルに保存される形にしたいのですが・・。 テーブル T_(1) (1)No. (2)企業名 (3)合計 フォームのレコードソースは、T_(1)です。 今のやり方では、フォームで見ると表示されてますが、 テーブルの合計には保存されてません。 どうすればよいでしょうか? 今は、コントロールソースに、=[サブフォーム名].![テキスト名] にしています。

  • テーブル内のレコードを別のテーブルに移す良い方法を教えてください

    SQLサーバー7.0(ADO)とAccess97のVBAでアプリケーションの開発を行っております。SQLサーバー7.0(サーバー側)にあるテーブルの中身(レコード全件)をAccess97(ローカル)にあるテーブル(テーブル名とその中のフィールド名は全く同じだが中身はからっぽ)にまとめて移しかえる良い方法があれば教えてください。いま私はフォームオープンイベントでフィールドとレコードをループでまわして移しかえているのですが、テーブル数も多いため記述も長くなりますし、何よりもパフォーマンスが良くありません。テーブル単位で中身を別のテーブルに移す方法などがあれば是非教えてください。 (例) SQLサーバー(ホスト側)---テーブル名「T_社員マスター」フィールド数100項目、レコード数500件 ↓ ↓ フォームオープン時にそのまま移しかえたい ↓ ↓ Access97(端末側)-------テーブル名「T_社員マスター」フィールド数100項目、レコード数0件 よろしくお願いします。

  • アクセス★非課税、課税の合計金額計算の仕方

    見積書の入力をしています。 メインフォームとサブフォームがあり、サブフォームでは受注明細を入力できるようになっています。 サブフォームの合計金額計算で、単純に【小計】【消費税】【総計】は計算できるのですが、非課税の受注が混ざっている場合、うまくいきません。 非課税項目にチェックを入れて区別などをし、そのチェックが入っていないものだけの消費税を計算できるようにしたいのですが、具体的にどのようにしたら良いのでしょうか? サブフォームのフィールドは、品名・数量・単価・金額です。 過去の質問は探しましたが見つけられませんでした。 過去にあったら申し訳ないのですが、どうか宜しくお願いします。

  • 帳票形式フォームで1対多の一覧を作成する方法

    環境:XP&ACCESS2003 帳票形式のフォームを作成しています。 受注レコード1に対して受注明細レコード多です。 例えば、レポートの様に「並べ替え/グループ化」で 受注NOをグループ化し、受注NOの下に同じ受注NOを持つ受注明細を表示させ、これを、受注NO毎に繰り返すフォームを作成しようとしています。 フォーム/サブフォーム形式で行おうとすると、フォーム/サブフォーム形式は単票フォームでしか適用できない旨、ACCESSからメッセージが出て作成できません。 どの様に作成すればいいか、教えていただけると幸いです。

  • フィールドの集計値を日々日誌に残したい

    Access2002で施設入所の相談記録日誌を管理したいと思っています。 メインフォームのフィールド名:(T日誌1テーブルからフォーム作成)[日付][男性入所者数][女性入所者数][個室利用数][今後の予定入所者]。サブフォームのフィールド名: (相談記録テーブルから作成)[日付][時間][氏名][相談内容][記入者] メインとサブフォームの[日付]は、リンクしています。 このメインサブフォームのコントロールソースにないフィールドの計算(Dsumで入所者数を計算)をメインフォームにテキストボックスを作成し算出しましたが、前日の値も変化してしまいます。その日の算出した値が他の日に影響しない方法を教えてください。

  • ACCESS 追加クエリでレコード数の指定したい

    Win XP Access2003 見積伝票を作成しております。サブフォーム(帳票フォーム)の登録方法でご教授お願い致します。 "伝票明細テーブルW"(伝票番号,行番号,内容、数量、単価、・・・)を基にした "伝票明細クエリW"を作成し、入力しやすいようにフォームを開いた時に行番号(連番)を振り、30行表示するようになっています。 入力確認後に登録ボタンをクリックして追加クエリを開き"伝票明細テーブルW"から"伝票明細テーブル"に30件レコード保存するようになっているのですが、 場合によって内容が2~3行で終わる時があります。 このような時に無駄に30行のレコードを保存せず"内容"(フィールド)が入力されているの最終レコードまでで伝票明細テーブルに追加したいのですが、よい方法がありましたら宜しくお願い致します。 "内容"(フィールド)は途中に空白の時があります。 行番号    内容        数量  1     オイル交換      3.0  2  3     タイヤ交換       4.0

  • アクセスのフォームのフィード名の追加。。。

    いつもありがとうございます。 アクセス初心者なのですが、今フォームをウィザードを使って作成しました。 後になって気づいたのですが、フィールド名が1つ足りなかったのです。。。 フォームの作成の元にしたクエリに原因がありまして、クエリーのフィールドにその1つが入っていなかった様です;; フォームのフィールドの追加もわからないので、クエリからおかしくなっていて 先に進めず困ってしまいました:: ホントいつも初歩ですいません。。。。。 みなさんはアクセスどのくらいでマスターされましたか? 独学でいろいろやるのは、ムズカシイですね。。。。

専門家に質問してみよう