受注明細テーブルの作成方法について

このQ&Aのポイント
  • 受注明細テーブルの作成方法に悩んでいます。受注情報管理、部材注文明細、仮発注明細から受注明細を作成する方法を考えていますが、非同期処理のために変更が反映されない可能性があります。どのようにすれば良いか助言をお願いします。
  • Access2013 vbaのシステムで受注明細テーブルを作成する方法について悩んでいます。受注情報管理、部材注文明細、仮発注明細のデータを使用して受注明細を作成する予定ですが、非同期処理により変更が反映されない可能性があります。どのようにすれば最適な方法を見つけられるでしょうか。
  • 工事関係のシステムにおいて、受注明細テーブルの作成方法について悩んでいます。受注情報管理、部材注文明細、仮発注明細から受注明細を作成することを考えていますが、非同期処理のために変更が反映されない可能性があります。解決策を教えてください。
回答を見る
  • ベストアンサー

受注明細テーブルについて

Access2013 vba 今工事関係のシステムを作っています。 ・工事受注の情報を入力する画面A ・工事部材の注文明細を入力する画面B(帳票・サブフォーム) ・工事の管理情報を入力する画面C(単票・メインフォーム) ・工事の発注明細を入力する画面C2(帳票・サブフォーム) ・受注明細画面D(帳票フォーム) とあるとして 【A】受注情報管理 ・受注ID(main key) ・受注日 ・依頼内容 ・部材注文合計金額 ・発注合計金額 【B】部材注文明細 ・部材明細ID2 (main key) ・受注ID(foreign key) ・品番 ・商品名 ・単価 ・数 ・摘要 【C】工事管理情報→依頼先会社毎に、受注IDに紐づく ・工事管理ID (main key) ・受注ID (foreign key) ・依頼先会社ID(foreign key) ・工事開始日 ・工事終了日 【C2】工事管理─仮発注明細 ・明細ID4(main) ・工事管理ID ・項目名 ・単価 ・数量 ・摘要 受注明細を、部材注文明細と仮発注明細から作成するやり方を考えました。 BとC2のレコードから、受注IDをキーにして、全てのレコードを以下のDの受注明細テーブルに格納する・・・。この時、B, C2と、Dは非同期→すると、もし、部材明細や仮発注明細が変更されると、Dが連動してその変更内容が反映出来ません。このやり方が良いのかとうか、いまいちわかりません。ご助言をお願いします・・・。 【D】受注明細 ・受注明細ID5(main) ・受注ID ・項目名 ・単価 ・数量 ・摘要 ・請求ID

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

  • ベストアンサー
回答No.5

【アドバイス】質問のテーマに関して再考を! 今回のテーマは、 ・受注情報管理とは異なる工事発注伝票の仕様に関わる質疑応答。 さて、[工事発注伝票]は、これまでの受注情報管理の考えだけでは不十分です。 1、発生主義で情報を管理しなければならない。 2.月単位での締切処理に対応しなければならない。 さて、そうなると[工事依頼伝票]と[工事依頼明細]の設計がこれまでと多少違ってきます。それは、[工事依頼明細].[行区分]の登場です。 [行区分]=0: 通常行 [行区分]=1: キャンセル行 [行区分]=9: 調節行 もう一つは、[工事依頼明細].[見積金額]。これは、伝票発行時点での[工事台帳明細].[単価]×[数量]のコピー。ここは、決して、リンクさせてはいけません。あくまでも、発生主義の原則を貫きます。 【工事依頼伝票】 ID 日時 依頼先_ID 摘要 【工事依頼明細】 ID 工事依頼伝票_ID 行番号 行区分 受注台帳_ID 工事台帳_ID 受注案件名 工事名 発注金額 見積金額 摘要 さて、こういう風に質問のテーマに関して考察していけば、[工事依頼明細].[受注台帳_ID]はコンボボックスで選択もありという状況が見えてくるかと思います。また、テーブル[受注台帳]に[工事依頼完了](Yes/No)列があったら・・・。ということも。 と、

superwonderful
質問者

お礼

お忙しい中、ご回答していただきありがとうございます。 ご説明していただいた中で、良くわからない言葉があるために、混乱してしまいます。 ですので確認させて欲しいのですが、 *1)工事依頼明細とは、私が質問のなかで書いた工事発注明細のことを指していますか? *2)行区分の調節行とは、金額の調整、値引きとかそういうことに使うということでしょうか? *3)見積金額が、単価×数量のコピーとはその計算結果の値自体をセットすることでしょうか? *4)工事依頼明細の工事台帳IDが、何のことかわからないです。 色々、おききしてしまいすみませんが、宜しくお願いします。

その他の回答 (8)

回答No.9

Q、工事依頼元へ出す見積もり書作成の場合、既に入力している部材注文一覧と仮工事発注一覧のレコードの項目名、単価、数量を受注IDで紐付けたもの全部使用したいのです。その場合、クエリーでそうなるようなものを作成し、それをコンボボックスなどで選択するのも一つの手でしょうか・・・ A、No!  私の作法では、まず、Accessのクエリーなるものは一切利用しません。 PS、まず、入力フォーム、検索フォームのデッサンを!  一体、ユーザーが直感的に手早く作業するには?ということを念頭に。その実現方法は、後から考えたらいいです。

superwonderful
質問者

お礼

参考になる情報を教えて頂いてありがとうございました。 もう少し画面の構成を考えてみます。

回答No.8

× 明細行に諸情報を転機して検索フォームを開く。 〇 明細行に諸情報を転機して検索フォームを閉じる。

superwonderful
質問者

お礼

ご回答ありがとうございます。 気づいたことがありましたので・・・ >受注情報管理----商品マスター管理に相当 >見積り-----------見積書に相当 >工事依頼---------売上伝票に相当(※) ※ 工事依頼は、原価になります。  売上伝票というからには、原価ではなく、売値と言う意味ですよね? 売上は、見積書に書いた金額の合計です。見積は、依頼元に出す見積です。これが売上です。 疑問が解決出来ないです。

回答No.7

【補足】受注、見積り、工事依頼の関係はシンプルに。 受注情報管理----商品マスター管理に相当 見積り-----------見積書に相当 工事依頼---------売上伝票に相当 ですから、見積書の[見積書][見積明細]というメインとサブフォームを持つフォームで入力し、対応したテーブルに発生時点で登録するだけだと思いますよ。現に、会社には見積書綴りが発生順に閉じてありませんか?そして、この場合も、(1)相手がある、(2)月報がある。などで、[見積明細]には区分が発生します。 http://www.officezero.info/zeroce/help/20093720180970.htm  ↑ [行番号][区分][コード]・・・・ の並びが、いわゆる伝票明細の基本です。 なお、商品コードを空値にしたら⇒商品検索フォームが開く⇒商品を選択する⇒明細行に諸情報を転機して検索フォームを開く。この商品検索フォームでは、「何らかの検索用情報の入力」⇒「該当する商品」、「該当する商品枝番」の一覧表示。かつ、それぞれの枝番の在庫状況(見積状況)も表示することになります。 こういう風にシンプルに考えたがよいかも知れません。

superwonderful
質問者

お礼

ご回答ありがとうございます。 工事依頼元へ出す見積もり書作成の場合、既に入力している部材注文一覧と仮工事発注一覧のレコードの項目名、単価、数量を受注IDで紐付けたもの全部使用したいのです。 その場合、クエリーでそうなるようなものを作成し、それをコンボボックスなどで選択するのも一つの手でしょうか・・・ そのレコードに、見積もり単価を入力すれば販売価格が決まると言う流れで・・・それを見積もりの親テーブルと明細テーブルに保存するという流れですね・・・に

回答No.6

全体のテーブル構造を私の粗末な頭が理解できるように若干修正しています。

回答No.4

>多分無理でしょうか? プログラム処理におよそ無理ってことはありません。 >ある受注番号に対する部材の注文明細、 >施工の発注明細の全レコードを一つの明細テーブルで管理したい。 これは、希望としては〇。だが、具体案としては×。理由は、添付図のような受注伝票入力フォームを超えることは不能だからです。例えば、添付図では[工事台帳].[行番号](工事No.)=2を選択に対応した[工事台帳明細]を表示しています。こういう芸当は、メイン-サブの機能があって実現されます。また、そういう工事関係のデータとは無関係に[部材注文控]も受注に対応して管理可能。こういう仕組みは、リレーショナルデータベースならでは。それを崩すアイデアは×です。 >そこから、複数の見積もりに分けたいのです。 それはそれ、これはこれです。

superwonderful
質問者

お礼

Fa007さん 回答していただきありがとうございます。 データーベースの構造を無視したやり方はしてはいけないと言うことならば、受注のおや画面に二つのサブフォームを作り、それにそれぞれ、部材の注文明細、工事管理親フォーム、工事の発注明細のフォームを表示するやり方しかないと言うことと理解しました。 その場合、複数の請求先が発生する場合を考えて、各サブフォーム側の明細に請求先コードをセット出来るようにします。あと、見積もり単価もこのサブフォーム側に持たせないといけないでしょうね。 すると、請求先コードでフィルターかけて、見積もり作成をすれば、うまく行くとおもいますが、普通、このやり方でも問題ないのでしょうか? うまくいきますでしょうか?

回答No.3

【補足】もしかして・・・。 受注案件一つに対し複数の工事が発生し、そして、そのそれぞれに内訳工事があるのでは?まあ、その場合でも、添付図のように【D】は無用です。

superwonderful
質問者

補足

fa007さん、 ご回答ありがとうございます。 一つの受注に対して複数の工事があり得ます。そして、そのそれぞれの工事に対して明細がつきます。 しかし、各項目を列方向に出したくありません。 部材の注文明細と、工事の発注明細のすべてのレコードを、一つの一覧にマージしたいのです。列めいは、見積もりようの列名にします。これを、マージ前の2つの明細テーブルに同期させられれば一番良いのですが、やり方がわかりません。多分無理でしょうか ある受注番号に対する部材の注文明細、施工の発注明細の全レコードを一つの明細テーブルで管理して、そこから、複数の見積もりに分けたいのです。→精算処理→請求処理と、複数の請求先に対して出します。 一つの工事と請求先が対応してるとも限らないので、このようなやり方を考えました。 だから、selectは、使っても無理じゃないかと考えています。

回答No.2

<回答2/2> 不必要な理由は、それはクエリで簡単に作成できるからです。 SELECT 受注台帳.ID, 受注台帳.受注日, 受注台帳.物件名, 工事台帳明細.行番号, 工事台帳明細.工事名, 工事台帳明細.単価, 工事台帳明細.数量, 工事台帳明細.摘要 FROM 受注台帳 LEFT JOIN (工事台帳 LEFT JOIN 工事台帳明細 ON 工事台帳.ID = 工事台帳明細.工事台帳_ID) ON 受注台帳.ID = 工事台帳.受注台帳_ID ORDER BY 工事台帳明細.行番号; 結果は、添付図のようです。つまり、不必要だということです。

回答No.1

<回答1/2> Q、このやり方が良いのか? A、不必要ですよ。 まず、添付図のような感じですと不必要。その理由は、回答=2/2で補足します。

関連するQ&A

  • Access2002:帳票形式のフォーム内に明細を表示させたい

    下記の様なテーブルがあります。 テーブル名:T_明細 +----------------------------------------------+ ID   受注番号   名称   数量   発注先 +----------------------------------------------+ 1   1      りんご   1   A商店 2   1      ぶどう   3   A商店 3   2      みかん   2   A商店 3   2      キウイ   2   A商店 4   2      桃     1   Bショップ 5   3      メロン   3   A商店 6   3      バナナ   2   Cストア +----------------------------------------------+ このテーブルの情報を下記の様なフォームを作成し 表示しようとしています。 フォーム名:F_発注処理(受注番号単位で開かれます)※帳票形式にて表示 ■受注番号1 で開いた場合 ------------------------------- A商店      発注明細       りんご   1       ぶどう   3 ------------------------------- ■受注番号2 で開いた場合 ------------------------------- A商店      発注明細         みかん   2         キウイ   2 ------------------------------- Bショップ   発注明細       桃   1 ------------------------------- ■受注番号3 で開いた場合 ------------------------------- A商店      発注明細       メロン   3 ------------------------------- Cストア      発注明細       バナナ   2 ------------------------------- Accessの仕様で、帳票形式のフォーム内にサブフォームを設置できないのは、知っています。 また、別の方法で「発注明細」部分をリストボックスにし 親レコード毎に、Rowsourceの値を変更するような仕組みにしてみましたが これも上手くいきませんでした。(元々こういう使い方は出来ないのでしょうか・・・) 参考:Form Loadイベントに    Me.明細.RowSource = "SELECT 名称,数量 FROM T_明細 WHERE 受注番号 = " & Me.受注番号 & " and .発注先 = '" & Me.発注先 & "';" 要は、 1.受注番号毎に、F_発注処理フォームは開かれる 2.発注先毎に帳票表示し、各発注先毎に明細を表示 という条件を満たしたいのですが、良い方法が思いつきません。 どなたかご助言頂けませんでしょうか。宜しく御願い致します。

  • リフォーム工事の受注書

    リフォーム工事会社に勤務しています。下請けに出すときに口頭のみで注文書を作成していません。 これはまずいと思ったので作成しようと思いますが、受注の確認書もついでに作ろうと思います。調べていたら受注確認の書類だと金額により印紙が必要と書いてありました。 そこで質問ですが、 1.工事の注文書は作成しないと建設業法違反になってしまいますか? 2.発注書に印紙は必要でしょうか? 3.受注の確認書に印紙は本当に必要なのですか?メールや書類のFAXであれば不要と書かれているものもありました。 教えて下さい。

  • ACCESSのテーブル設計とクエリ

    ACCESS初心者です。 ACCESS2010 OSはWindows7です。 パソコンはアクセスとエクセルマクロの入門書を読み終えたレベルです。 只今、注文実績管理表を作成するために、必要な情報を複数のテーブルに 分解してコード化していますが、関連付けできない為にデーターの参照ができません。 対応方法があれば教えていただくようお願いします。 どうしても実現したいので、テーブルの設計が間違えているかもしれませんが写真を掲載します。 ■現在の状況と質問 A)商品だけで300アイテムあります。リストを見ながら商品名と金額を入力するのは、膨大な時間を奪われるので、発注書に書かれている。4ケタの商品番号と注文数量の入力のみに したい。その後に入力した4ケタの数字でデーターを集計し、分析業務につなげていきたい B)【C】と【D】は注文書のイメージです。ひとり最大50個の商品を一枚の注文書で 発注します(ひとりの注文が1か月に1~3回)。一回の注文で最大、50品目のデーターを 格納することは、アクセスで可能なのでしょうか? C)発注実績の抽出ですが、以下内容で実行したいです。どうすれば可能でしょうか?   テーブルの設計と関連付け、リレーションの設定がわかりません。   i)個人別の1か月注文実績。商品名、注文合計数、合計金額を商品別に表示   ii)個人別の注文合計金額(月、年間)の集計。   iii)商品Aの注文実績(月、年間) D)リレーションの状態。 【A】の(2)と【C】の(2)  【B】の(2)と【D】の(3)、(5)、(7)、(9)、(11)、(13)、(15)、(17)、(19)・・・ 【C】の(1)と【D】の(2)のみ参照整合性がとれています。 E)商品テーブルのドリルボタンを押して、下の階層を見ようとすると、画像のような メッセージがでます。これはなんなのでしょうか? ■現在の状況を列挙します。 【A】顧客テーブル (1)顧客ID(オートナンバー・・・長整数型) 主キー(2)発注コード(テキスト型)         ※発注コードは『英数字』のためテキスト型。リンク先も『テキスト型』 (3)氏名(テキスト型) 【B】商品テーブル (1)商品ID(オートナンバー・・・長整数型) 主キー(2)注文番号(数値型・・・倍精度浮動小数点型) (3)品名(テキスト型) (4)金額(通貨型) 【C】注文テーブル 主キー(1)注文ID(オートナンバー・・・長整数型)    (2)日付 (3)発注コード(テキスト型)        ※発注コードは『英数字』のためテキスト型。リンク元も『テキスト型』 【D】注文明細テーブル(注文番号は全て4ケタの数字です。重複Noはありません) 主キー(1)注文明細ID(オートナンバー型・・・長整数型) (2)注文ID(長整数型) (3)注文番号1(数値型・・・長整数型) (4)数量(注文番号1) (5)注文番号2 (6)数量(注文番号2) (7)注文番号3 (8)数量(注文番号3) (9)注文番号4 (10)数量(注文番号4) ・ ・ ・※注文番号50まで続く・・・

  • 請求先

    Access 2013 vba 1つの受注された案件で、その売上の請求先が複数になる場合があります。 しかも、その請求先に何を請求するのかは、その場、その場で変わり、決まっていないらしいです。 このような場合に、どのように請求先を1つの受注した工事案件に引き当てれば良いのか、良くわからず、困っています。テーブル構造は恐らく 【受注テーブル】 ・受注ID(Main key) ・受注日 ・依頼元 ・依頼内容 ・受注総合計金額 などなど 【請求引当テーブル】 ・請求引当ID(Main key) ・受注ID (Ex.Key) ・請求金額 ・摘要 ・支払期日(依頼元が当社に支払う期日) ・支払方法 しかし、その明細については、受注テーブルの項目の依頼内容の何になるのかは、その時にならなければわからないのです。それに、請求先が1つしかない場合もあるし、複数に成るのが最後にならないと分からない場合もあります。 この場合、請求書をPGでデータベースからデータを選択して作成する場合、何を選択すれば良いのかわかりません。 このような説明の仕方では、ご回答が難しいかとも思いますが、私も説明に苦慮しています。 実際に、このようなケースを扱ったシステムでは、どんな解決策をとっているのか知りたいです。

  • 3つのテーブルの画面表示

    Access 2013 vba リレーションが貼ってある親子関係の3つのテーブルがあったとして・・・ A table: ・ID1(主キー) ・依頼会社ID ・依頼内容 ・金額総合計(Bの会社毎の金額の合計) B table: ・ID2(主キー) ・ID1(外部キー) ・会社ID ・金額計(Cの明細の金額の合計) ・完了日 ※AのID1 : BのID1 = 1 : 多 C table: ・ID3(主キー) ・ID2(外部キー) ・項目名 ・単位 ・数量 ・金額 ※BのID2 : CのID2 = 1 : 多 このようなテーブル構成がある場合に まず、AとBの画面を作りそこでBの情報を入力して 次に、Bの帳票のどれかを選ぶと、 BとCのメイン・サブフォームが表示され、そこでCの明細を入力するというやり方も考えていますが、もう一つ、1つの画面で、BとCを両方サブフォームとして配置し、Bの方のレコードを選択すると、Cの方でそれに対応する明細が表示できるようなものを作りたいです。 このような方法が可能か教えていただきたいのと、その場合のやり方を教えて下さい。 宜しくお願いします。

  • outlookで上手く受注メール振り分けするには

    Outlook 2013を使って受注メールを上手く管理する方法があれば教えて下さい。 最近、物を購入する部署に就きました。(社内で使う事務用品等ではありません) 社内の各部署から注文メールが来るのですが、上手く管理する方法を探しております。 今まで受注関係の仕事をした事がないので、同じような業務をしている方に分かりやすいメール管理の方法があれば教えていただきたいと思います。 (1)まず各部署から注文メールが来たら、発注、未発注という感じで単純にフォルダ分けするのが一番良いのでしょうか? 受信トレイにあればすぐ目につきますが、フォルダに分けてしまっていたらメールが来ていた事を忘れそうです。 ●一応エクセルでも管理をしており、受注メールがきたらすぐつけるようにはしています。 現在、〇〇課フォルダ内→〇月〇日受注という感じで細かく分けてしまっています。 今のところは大丈夫ですが、いつか発注漏れなどしそうで怖いです。 皆さんどのようにしているのでしょうか。 (2)outlookにアーカイブ機能があるようですが、経過したメールに対してのようで分かりにくく、使っておりません。 Gメールのように簡単にに手動でアーカイブできる方法があれば教えていただきたいです。 (3)受信トレイのメールが全て表示されない時があります。他のフォルダをみて再度見ると表示されています。 反応が遅いのでしょうか。 ●後で探しやすく、見やすい方法、またメールと併用に管理している方法等、良い方法があれば教えて下さい。 よろしくお願いします。

  • 2つのサブフォーム間でデータの連携

    今、ある単票フォームに、2つのサブフォームを配置し、そのサブフォーム間で金額の連携をしたいと考えています。 【親フォームA】 ・ID1、長整数型(主きー) ・受付日時 ・発注金額総合計 <== ※Bが更新されたら、ここを更新したい 【サブフォームB】 ・ID2、長整数型(主キー) ・ID1(外部キー) ・発注日 ・発注合計金額 <=== ※Cが更新されたら、ここを更新したい ==> Aの更新へ↑ 【サブフォームC】 ・ID3、長整数型(主キー) ・ID2(外部キー) ・発注項目名 ・単価 ・数量 ==>ここを更新する→Bへ↑ ・単位 ==>ここを行進する→Bへ↑ ・摘要 サブフォームB、Cは、いずれも帳票型です。 それぞれ、テーブルA, B, Cがレコードソースで テーブル構成は、上の項目の構成と同じです。 A-ID1: B-ID1 = 1:多 B-ID2: C-ID2 = 1:多 この時、Cで単価と数量を入力したら、Bの発注合計金額の値を更新したいです。 それと同時に、親Form Aの「発注金額総合計」の値を、Bの全てのレコードの「発注合計金額」のSumで更新したいです。 よろしくお願いします。

  • AccessのDBシステムからの自動メール発信

    Accessで作ったデータベース受発注帳票作成システムがあります。受注の帳票に工事日が決まったら工事日を入力すると自動的に発注メールを送信できるシステムが作れるでしょうか?ご教示願います。

  • access 1対1と1対多のテーブルをクエリで集計したい…

    受注管理のデータベースを作っています。 売り上げを計算するクエリを作ったのですがどうもうまくいかないので質問します。 集計したいテーブルですが 受注マスタテーブル 注文番号(主キー テキスト型) 注文日(日付型) 氏名 : : 受注明細マスタテーブル 注文番号 (重複あり)受注マスタの注文番号と1対多のリレーションシップ 商品名 品番 販売単価 購入個数 経費・返品金額テーブル 注文番号(主キー)受注マスタの注文番号と1対1のリレーションシップ 経費 返品金額 これを、販売単価×購入個数-経費+返品金額というようにして1ヵ月ごとに集計しようとして、下のようなクエリを作ったのですが経費が何回も計算されてうまくいきませんでした… よろしくお願いします。 SELECT Format(注文者マスタ!注文日,"yyyy/mm") AS 月, Sum([受注明細マスタ]![販売単価]*[受注明細マスタ]![購入数量]-[経費・返品金額テーブル]![経費]+[経費・返品金額テーブル]![返品金額]) AS 売上 FROM (注文者マスタ RIGHT JOIN 経費・返品金額テーブル ON 注文者マスタ.注文番号 = 経費・返品金額テーブル.注文番号) LEFT JOIN 受注明細マスタ ON 注文者マスタ.注文番号 = 受注明細マスタ.注文番号 GROUP BY Format(注文者マスタ!注文日,"yyyy/mm");

  • Access:サブフォームのレコードのコピー(複数)

    Accessにて販売管理システムを構築しています。 以下の構成にてテーブルがあります。 ------------------------------ T_見積伝票(メイン)  ・見積ID(主キー)  ・顧客名  ・見積日 ------------------------------ T_見積明細(サブ)  ・明細ID(主キー)  ・見積ID  ・商品名  ・数量  ・単価 ------------------------------ T_受注伝票(メイン)  ・受注ID(主キー)  ・顧客名  ・受注日 ------------------------------ T_受注明細(サブ)  ・明細ID(主キー)  ・受注ID  ・商品名  ・数量  ・単価 ------------------------------ *主キーはすべてオートナンバーにて採番されるようにしています。 T_見積伝票とT_見積明細がリレーション T_受注伝票とT_受注明細がリレーション 実現したいことは、T_見積伝票&T_見積明細に入力された内容が 実際に受注となった場合、「受注に転記」のようなボタンを設置し クリックすることで、T_受注伝票&T_受注明細に複製できればと思っています。 T_見積伝票とT_受注伝票にはいくつか異なるフィールドがあるので、(見積日と受注日) 対応するフィールドの内容のみコピーしたいです。 逆にT_見積明細とT_受注明細は主キーとなってるIDのみ違うだけで それ以外は全て同じフィールドにて構成されていますので 全部コピーしたいです。 色々と調べた結果、追加クエリを使うといいみたいですが 追加クエリ自体がよく分からず質問させて頂きました。 宜しくお願い致します。