ACCESSテーブル作成のアドバイス

このQ&Aのポイント
  • ACCESSでのテーブル作成について超初心者の方がアドバイスを求めています。社内業務で使用するプログラムについて具体的な要件を説明し、現在作成しているテーブルの問題点を指摘しています。注文伝票のデザインやテーブル関連の設計についてアドバイスをお願いします。
  • 超初心者がACCESSでのテーブル作成についてアドバイスを求めています。社内業務で使用するプログラムの要件を説明し、作成しているテーブルの問題点について相談しています。注文伝票のデザインやテーブル関連の設計に関するアドバイスをお願いします。
  • ACCESSでのテーブル作成について超初心者の方がアドバイスを求めています。社内業務で使用するプログラムの要件を説明し、現在作成中のテーブルについての問題点を指摘しています。注文伝票のデザインやテーブル関連の設計についてのアドバイスをお願いします。
回答を見る
  • ベストアンサー

ACCESS テーブル作成にアドバイスください

初めてACCESSに取り組んでいる超初心者です。2007使用ですが、勤務先で使えるよう、2003形式で保存するつもりです。 社内での物品請求、払い出しのような業務で使おうと思っているプログラムで、最終目的は、個人別注文(請求?)伝票の印刷と物品数量の集計(フロア毎)です。注文伝票は前回分として印刷し、次回注文時に必要に応じて訂正して利用してもらうことを考えています。 次のような感じの伝票です。 3F   山田太郎     請求種別A 1) 商品A     1個    商品B     2個    商品C     1個         定型文1 2) 商品A     3個    商品D     3個         定型文2 3)・・・ ・1人の注文伝票の中に注文番号が複数(多くて20くらいまで)、注文番号1つにつき商品が複数と定型文が1つ。 ・1枚の伝票の中で、商品、定型文は重複して使用される。 ・注文番号は全体の通し番号でなく、1枚の伝票のなかで必ず1から順につくようにしたい。 ・注文番号のふりなおし(並べ替え)と商品の並び順も変更できるようにしたい。 ・直近の請求内容が分かればよいので履歴はとらず、変更をしていければよい。(あまり難しいことはできないので) 書籍にある注文関係データベースの例を参考にして、社員テーブル、商品テーブル、注文テーブル、注文詳細テーブルを作ってみたのですが、注文関連のテーブルをどのようにすればよいかよく分かりません。現在とりあえず作ってみたのが 注文テーブル:注文書番号(オート)、社員ID、請求種別 注文詳細テーブル:注文詳細番号(オート)、注文書番号、商品ID、数量、定型文ID、注文番号(並べ替え用) です。(注文書番号にリレーションシップ設定) これだと結局同じデータ(定型文など)を何度も入力しないといけない気が・・・ 長文ですみません。アドバイスよろしくおねがいします。

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

  • ベストアンサー
  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.2

>特定個人の前回注文データを呼び出し、回ってきた注文票と同じになるように修正を加え 以前のレコードを新規レコードにコピーし、変更点だけ書き換えます こうすれば新しいレコードが登録されます 以前のレコードを書き換えたのではそのレコードが消えてしまいます >実務で必要な番号で、 ということが管理に使っているということでは? >1番は1番と書いた袋に入れて渡す。薬は毎回ほぼ同じだが、時々変更がある。 >毎回1から続き番号がふられていて、順番や番号は勝手に変えられない。 グループとして管理するという感じかな だったらテーブルは3重の階層構造より2層にしておいてグループを指定してやるというほうが簡単みたいですね [伝票見出し](伝票番号、顧客ID、請求種別) [伝票詳細](伝票番号、注文番号、商品、数量) [注文番号マスタ](注文番号、・・)

jasmin-q
質問者

お礼

>[伝票見出し](伝票番号、顧客ID、請求種別) >[伝票詳細](伝票番号、注文番号、商品、数量) >[注文番号マスタ](注文番号、・・) この場合、[伝票見出し]では伝票番号が、[伝票詳細]では注文番号が主キーになりますよね?とすると、[注文番号マスタ]に入るフィールドは注文番号、グループ番号(実際にレポート時に表示したい番号)と、定型文ID・・・でよいのでしょうか? 3層の場合は次のように想像したのですが・・・ [伝票見出し]伝票番号(主キー)、顧客ID、請求種別 [伝票中見出し]伝票番号、注文番号(主キー)、グループ番号(注文番号として表示したい番号を手動入力)、定型文ID [伝票詳細]注文番号、伝票詳細番号(主キー)、商品ID、数量

その他の回答 (2)

  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.3

3層の場合はそれでいいです ただし2層にする場合は >番号ごとにひとまとめにして渡します ということですから 注文番号は複数レコードで同じものがでてくるはずですから主キーにはなれません もうひとつ中身が分からないので詳細の主キーまで考えられないのですが 同じ注文番号で同じ商品が無いのなら 伝票番号、注文番号、商品の3つで主キーにするか 詳細行ナンバーのようなものを導入し 伝票番号と行ナンバーの2つで主キーにします

jasmin-q
質問者

お礼

詳細行フィールドを導入するのがいいように思います。 まずは2層で作ってみます。 まだまだ先は長そうなので再度質問することがあるかもしれませんが、そのときはよろしくお願いします。何度もありがとうございました。

  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.1

構想の中で問題は >・直近の請求内容が分かればよいので履歴はとらず、変更をしていければよい。 データベースではこのような考え方をしません。(この考え方はExcelのような表計算のものですね) 発生したデータを次々と溜め込んでいきます (何時の注文というようなことは重要な情報として残す必要があるのでは) アップされた情報の中でよく分からないのが注文番号ですねこれはどういう理由で分けているのでしょう 分ける必要性があるのだとテーブルは 注文大見出し、注文中見出し、注文詳細の3段階の親子関係になりますね >・注文番号のふりなおし(並べ替え)と商品の並び順も変更できるようにしたい 注文番号は管理に使用しているのじゃないのですかだったら途中で変更したりしたら混乱しますよ ただのお飾りならテーブル設計にも影響してきます >と商品の並び順も変更できるようにしたい データベースではレコードの順番には意味がありません 逆に並べたい順番があるのならそのためのフィールドが必要です

jasmin-q
質問者

お礼

回答ありがとうございます。やっぱりわかりにくいですよね。 現状を言いますと、例のような手書きの伝票が週1回まわってきます。注文伝票の枚数が多い上内容は毎回ほぼ変わらないので、物品を予め用意しておいて、最終チェックをして渡しています。業務自体は注文票さえ回ってくればできるのですが、手書きゆえの書き間違い等で確認に時間をとられています。注文内容を予め前回通りにプリントアウトして渡しておけば、次回は部分的に加筆訂正するだけでよいのでお互い楽になると思いました。やりたい作業としては、特定個人の前回注文データを呼び出し、回ってきた注文票と同じになるように修正を加えて登録、次回用に印刷という感じでしょうか。履歴は現段階では利用していないので、直近のデータを修正でも良いかと思ったのですが、履歴をとっておくに越したことはないという感じです。 注文番号は、管理というよりは実務で必要な番号で、(番号ごとにひとまとめにして渡します)レポートの段階で入れば良いです。並べ替え用のフィールドということになるでしょうか。 薬の処方箋が一番近いかもしれません。 1)薬品A  1個   薬品B  1個  1日1回朝 とか。 で薬を番号(飲み方)ごとにまとめ、1番は1番と書いた袋に入れて渡す。薬は毎回ほぼ同じだが、時々変更がある。毎回1から続き番号がふられていて、順番や番号は勝手に変えられない。 具体的にこんな内容のテーブルを作るといいんじゃないかというのがありましたら教えてくださるとうれしいです。

関連するQ&A

  • Access DLOOKUPについて

    Access DLOOKUPについて こんにちは。Access2010でのDlookupについてお教えください。 ■注文テーブル オーダーID,商品コード,数量,お店番号 001,A01,1,お店1号 001,A02,5,お店1号 002,B01,3,お店2号 002,B02,3,お店2号 ※同一オーダーIDで商品コードが重複する事は無 ■確認用注文テーブル 商品コード,数量,お店番号 A01ですよ,1お店1号 B02です,3,お店2号 ※なんと、オーダーIDがありません。さらに商品コードに変な文字列も入っています。 ■やりたい事 フォームに「判定」というテキストボックスを配置しました。 コントロールソースで以下の条件にあっているなら○、あっていないなら×と表示したいです。 ○注文テーブル.商品コードと確認用注文テーブル.商品コードを比較。 注文テーブル.商品コードのデータが確認用注文テーブル.商品コードに含まれていること。 ○注文テーブル.数量と確認用注文テーブル.数量がイコールであること。 ○注文テーブル.お店番号と確認用注文テーブル.お店番号がイコールであること。 これらを満たしていれば、○、満たしていなければ×と表示したいです。 Dlookupでなくても、何か他に方法がありましたらお教えください。 宜しくお願いします。

  • 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 リレーションとデータの参照について

    パソコンはアクセスとエクセルマクロの入門書を読み終えたレベルです。 只今、注文実績管理をする為にアクセスを構築していますが思うようにできません。 職場でPCの相談する相手がいないため、大変困っています。どなたかお知恵をください。 相談の内容ですが、【C】の注文テーブルにある「注文番号」と「数量」と「日付」で 期間中の発注実績の集計をしたいと考えています。 【B】と【C】がまったく関連付けることができません。 【A】顧客テーブル    (1)ID(オートナンバー)    (2)発注コード    (3)氏名     (注)顧客テーブルにある「発注コード」がローマ字と数字の組み合わせで        、これでリレーションシップを設定したいのです。 【B】商品テーブル    (1)ID(オートナンバー)    (2)注文番号    (3)品名    (4)金額 【C】注文テーブル    (1)ID(オートナンバー)    (2)発注コード    (3)日付    (4)氏名    (5)注文番号1    (6)注文番号1(数量)    (7)注文番号2    (8)注文番号2(数量)    (9)注文番号3    (10)注文番号3(数量)     ・     ・     ・     注文番号50     注文番号50(数量)

  • SQL2000 ワークテーブルの作成文について

    いつもお世話になっております。 SQLを学んで3ヶ月の初心者です。 下記の内容でご理解いただけ、分かる方がいましたら教えていただけないでしょうか。 一応、自分なりに以下作成したのですが、結果が反映されなく困っています。 よろしくお願い致します。 ※質問内容※ ・条件に従い、Aテーブルから必要な項目を抜き出し、Bワークテーブルを作成する。 ・@・・・頭で宣言しています。 delete from Bワークテーブル insert into Bワークテーブル ( ID, CD, 伝票番号, 部門CD, 引当日, ユーザID, ) select Aテーブル  Cテーブル.ID,  Aテーブル.CD,  Aテーブル.伝票番号,  Aテーブル.部門CD,  Aテーブル.引当日,  Aテーブル.ユーザID, from Aテーブル INNER JOIN Cテーブル ON Cテーブル.ID = @ID where Aテーブル.CD = @CD and ((Aテーブル.伝票番号 >= @伝票番号FROM) OR (@伝票番番号FROM IS NULL)) and ((Aテーブル.伝票番号 <= @伝票番号TO) OR (@伝票番号TO IS NULL)) 以上。

  • 2テーブルの別カラムを一つにまとめたViewの作成

    以下の2つのテーブルがあった場合 Aテーブル 商品番号,種別 123456,A 123456,C 123456,M Bテーブル 商品番号親 123456 123123 123321 以下のようなView にしたいのですができますでしょうか。 Viewテーブル 新商品番号 123456 123123 123321 A123456 C123456 M123456 上3レコードは、Bテーブルのレコード、 下3レコードは、Aテーブルの種別と、商品番号を、CONCATしています。 なお、Viewテーブルは、全てユニークなレコードになります。 すみませんが、ご回答よろしくお願いいたします。

    • ベストアンサー
    • MySQL
  • 商品カタログ「この商品を買った人は、こんな商品も買っています」について

    はじめまして。 商品データベースのカタログ表示の際のSQLの質問です。 www.amazon.co.jp のサイトでは、ある商品を選択すると、「この商品を買った人は、こんな商品も買っています」と表示されます。 この内部的な処理方法を教えてください。 例えば、以下のような単純なテーブルがあるとします。 ●顧客テーブル ・顧客番号 ・顧客名 ●商品テーブル ・商品ID ・商品名 ・販売単価 ●注文テーブル ・注文番号 ・注文日時 ・顧客番号 ・小計 ●注文詳細テーブル ・注文番号 ・注文詳細番号 ・商品ID ・数量 このような設計の場合、「ある商品を買った人は、こんな商品も買っています」を実現するために ・バッチで裏で処理するのでしょうか?それとも注文のたびに処理するのでしょうか? ・どのテーブルに、保存するのでしょうか? ・どのようなSQL文になりますか?(具体的に教えてください) また、別の適切な設計方法があるのでしょうか? 困っています・・・ お手数ですがよろしくお願い致します。

  • Access マスターテーブル

    Accessについて。 テーブル1がID(主キー)、注文日、商品番号、納期など入力欄の項目で、テーブル2が商品番号(主キー)、商品名で商品のマスターテーブルになっています。 商品番号を入力すれば商品名が表示されるようにクエリを作成し、そのクエリからフォームを作っています。 ここまでは良いのですが、新しい商品番号を入力したときに限りフォームから商品名も入力する事でマスターテーブルに登録されるようにしたいのですが、どうすれば良いでしょうか?

  • Accessで親テーブルと2つの明細テーブルでできているデータのレポートを作りたい

    親テーブルと2つの明細テーブルでできているデータのレポートを作りたいのですが、レポート機能ではフォーム作成のように、詳細セクションに2つの明細テーブルのデータを表示させることはできますか? ウィザードを使って作成するとどうしても以下のようになってしまいます。 (ちなみに親テーブルと明細テーブルは伝票番号でリレーションしています) ↓↓↓↓ 伝票番号000001に対して、明細Aテーブル(2レコード)、明細Bテーブル(1レコード)あるとする。 ----------------------------------------------------------- 本来は以下のように表示したい ヘッダーセクション 伝票番号:000001  親テーブルの情報:xxxxxxx 詳細セクション  明細Aの情報 01 aaaaaaaa  明細Aの情報 02 aaaaaaaa 明細Bの情報 11 bbbbbbbb ------------------------------------------------------------ 実際は以下のように表示される ヘッダーセクション 伝票番号:000001  親テーブルの情報:xxxxxxx 詳細セクション  明細Aの情報 01 aaaaaaaa 明細Bの情報 11 bbbbbbbb  明細Aの情報 02 aaaaaaaa 明細Bの情報 11 bbbbbbbb

  • アクセスで値を参照したい

    Win2000,Access2000を使用しています。 AB二つのテーブルに「仮番号」というフィールドがあり、同じ「仮番号」のレコードに同じ「伝票番号」をつけたいんです。 Aテーブル(お客様情報) Bテーブル(注文履歴) Aテーブルの「伝票番号」フィールドに番号を入力したら、BテーブルのAと同じ「仮番号」のレコードの「伝票番号」フィールドに番号が入力されるようにしたいのですが、どのようにVBまたは、フォーム上のテキストボックスのプロパティで組んだらよいのかわかりません。 Bテーブルには、過去の注文データもあるのですでに入力されているレコードには過去に受注した時の伝票番号入力されています。 新規入力したレコードに対してだけAと同じ伝票番号をつけたいのです。 Bテーブルで、         |商品名|価格  |伝票番号| 過去の受注データ|電卓 |¥500|1000  | 今回の受注データ|名刺 |¥800|2500  | と、こんな感じにしたいんですが うまく説明できず申し訳ありませんが、どうぞよろしくお願い致します。

  • Accessのテーブル構造で悩み中…(*_*)

    こんにちは。Windows NTでAccess2000を使っています。 製造業の伝票情報を整理するためAccessと格闘しているのですが 以下の3つのテーブルの構造と結合で悩んでいます。 T_伝票:伝票番号を始め、得意先名や担当営業名など     別のデータベースから情報を引っ張る(ゆえに入力不要) T_商品:その仕事の仕様等、商品の詳細情報を入力。 T_発送:その商品の発送日・納品日などの納期情報 T_伝票とT_商品の伝票番号は重複なしで設定できますが T_発送は1つの商品を何回かに分けて送るときが多々あるため重複ありです。 3つのテーブルはそれぞれ入力する人が違う(T_商品は複数人)ことも要注意です。 クエリでT_伝票とT_商品の伝票番号をつないでフォームで伝票番号を入力したとき T_伝票の得意先名や営業名が自動表示されるようにしたいのですが、 両方ともインデックスを重複なしにすると不可能でした。 (特に一対一のリレーションシップは設定していません。) そこでT_商品の伝票番号インデックスを重複ありにするとクリアできました。 その後で1つの仕事に対して発送情報が複数のレコードになることが判明した為 始めはT_商品と一緒に収めていた発送情報を別テーブルにしなければならなくなりました。 しかしそうすると、どうT_商品とT_発送をつないでよいのかわからなくなりました。 T_商品から追加クエリでT_発送に同じ伝票番号を持たせることを思いつきましたが T_発送の伝票番号は重複ありでなければならないため 追加のたびに過去のレコードが重複してしまいます。 かといって追加のたびにT_発送を削除していたら 送りが複数にわたる場合の情報が消えてしまうことになります。 (しかも複数人入力の為削除のタイミングも難しいため合理的でない) どこをどうすればうまく回避できるのか打開策が尽きてしまいました。 どうかよい知恵があればご教授くださいm(_ _)m

専門家に質問してみよう