- ベストアンサー
Access2000で、元になる(取り込んでデータベース化したい)CSVファイルが2種類あり、その統合方法がわかりません。
販売管理のデータベースをAccess2000で、作ろうとしています。イチからデータを入力するのではなく、元になる(取り込んでデータベース化したい)CSVファイルが2種類ありますので、それをインポート、加工しようと考えています。 以下に元になるCSVファイルを簡単に記します。 【元ファイルA】 注文番号|商品番号| 購入数 -------------------------------------------- 0001 | 100 | 5 0002 | 100 | 1 0002 | 125 | 1 0003 | 100 | 2 0003 | 125 | 2 0004 | 125 | 1 0005 | 100 | 4 0005 | 120 | 4 0005 | 125 | 4 0006 | 100 | 1 …というように、注文番号の重複がある、購入品のデータ そして、 【元ファイルB】 注文番号| 個人名 | 住所 |TEL |支払方法 ------------------------------------------------------------------------------------- 0001 | ○△×男 |■■県▲▲市|000-0000-0000|クレジット 0002 | △×○子 |▲▲県■■市|111-1111-1111|代金引換 0003 | ×○△夫 |■▲県▲■町|222-2222-2222|銀行振込 と、注文番号1つにつき1名の購入者・個人データ この2つです。 これを、 注文番号|個人名|支払方法 |商品番号100|品番120|品番125| ------------------------------------------------------------------------------------ 0001 |○△×男|クレジット |5(購入数) | 0 | 0 | 0002 |△×○子|代金引換 |1 | 1 | 0 | 0003 |×○△夫|銀行振込 |2 | 0 | 2 | というふうに、注文番号をキーに統合したいのです。 タテヨコが複雑に絡み合っていて、どうすればいいかお手上げ状態でして…。 そもそも、こういう統合はムリなのでしょうか? ぜひ、アドバイスをお願いいたします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
なるほど、できるかなぁと思ってみたはいいが、アクセスをあまり使ったことがなかったのですね。 それは失礼しました。 たとえば、 元データAを、そのまま加工せずに、たとえば「明細」とでもテーブルに名前をつけてインポートします。 元データBも同様に、「注文票」とでもしてインポートします。 1、「クエリ」→「デザインビューでクエリを作成する」を選択。 2、そこでテーブルを選択していきます。 ・・・が、これはヘルプかなにかで調べてみてください。 以下のように出力することが可能です。 注文番号|個人名|支払方法 |商品番号|購入数 --------------------------------------- 001 |○△×男|クレジット|100|5 001 |○△×男|クレジット|120|0 001 |○△×男|クレジット|125|0 002 |△×○子|代金引換 |100|1 002 |△×○子|代金引換 |120|1 002 |△×○子|代金引換 |120|0 この形でも、十分に質問者さんの要望をかなえられるように思うのですが、いかがでしょう? >「○△×男さんの買った商品をすべて表示するようなプログラム」 というのはどのようにすればよいのでしょうか? これは、上記のように出力した後、 条件に「個人名=○△×男」と指定するやり方です。 一度ご自分で試されて、分からなかったときはどうぞ。
その他の回答 (2)
- Dxak
- ベストアンサー率34% (510/1465)
クロス集計クエリを使えば出来なくは無いですよ 但し、前提として・・・Accessの場合、フィールド数に制限があります ですので、「商品番号」が、どれくらいのパターンがあるのか? そう言う、もろもろの話があって、クロス集計クエリで、必ず可能とも言えないのも現実です Access2000の場合、フィールド数が255個の制限だったような記憶があるので、「注文番号」、「個人名」、「支払方法」を除いた、252個の「商品番号」まで、扱えると考えるしかね 1 章 クロス集計の操作方法 - microsoft http://www.microsoft.com/japan/office/previous/xp/suminaka/access/sousa2002/1/sousa1_20_2.htm と、言う感じね
お礼
御礼が遅くなりまして、失礼いたしました。 クロス集計クエリを使用し、何とかできました。 何もわからない素人がこつこつ作っているシステムなので(システムと呼ぶのもおこがましい?)、簡素なものではありますが、おかげさまでうまく稼動しております。 本当にありがとうございました。
- 9arabi
- ベストアンサー率32% (140/433)
正規化されてるテーブルをそんなふうにわざわざ? アクセスに入れる段階では、元の通りがいいと思います。 そういうテーブルを作りたいといわれても、 商品がふえるたびにカラムが増えていくなんて、今後のことを考えたら無理です! そんなもの作れといわれても、私なら断ります。 どうしてもその形にしたいのであれば、 エクセル上でまず加工して、その形でインポートするしたらどうですか? vlookupなど活用して。 その方が分かりやすいですよねたぶん。 でも、使い物になりませんよ。 注文番号をキーにして「001」と検索したときに ○△×男さんの買った商品をすべて表示するようなプログラムで対応できないのでしょうか? つまり、2つのテーブルを結合して表示する、という方法です。 なぜ、そのように加工したいのでしょうか?
補足
ご回答ありがとうございます。 質問の補足です。 商品数は全部で10個(100,125なんて、紛らわしい例ですいません)なので、 問題はないです。 実はこのcsvファイルは、Webの通販で、 お客様が商品カートに各種項目を入力した後に、自動的に作成される 宅配業者の出荷伝票用のものでして。 【元ファイルA】が伝票データ(送り先住所の情報で使用)、 【元ファイルB】が商品データ(その日に出荷した商品の種類と数)と なっています。 ではなぜテーブルをそのまま使わないか、というと… 「顧客によって、商品単価が違う」という問題がありまして。 (社内の諸々の事情により致し方なく…) つまり、 注文番号=顧客別に、どの商品がどれだけの数出荷されたか、 ということをしっかり把握していないと、 ・「請求書」の発行に支障をきたす ・「商品別売上金額表」「顧客別売上履歴・売上金額表」を作成する際、単価が違うので一律で計算できない (例えば、商品番号100は、ある顧客には2100円、別の顧客には1840円、さらにまた別の顧客には…とキリがなくて) という問題が発生しているのです。 というわけで、Accessで 注文番号|個人名|支払方法 |商品番号100|品番120|品番125| ------------------------------------------------------------------------------------ 0001 |○△×男|クレジット |5(購入数) | 0 | 0 | 0002 |△×○子|代金引換 |1 | 1 | 0 | 0003 |×○△夫|銀行振込 |2 | 0 | 2 | というテーブル(出荷総合(?)データ)のデータベースが作成できれば、 それを基に 「請求書」も「売上表」も作れるのではないかと思った次第でした。 (↑この考え自体がおかしい?) これまでは、 【ファイルA】(顧客情報)を注文番号順に並べた上で ↓ つまり、 注文番号|個人名|支払方法 |商品番号100|品番120|品番125| ------------------------------------------------------------------------------------ 0001 |○△×男|クレジット | | | | 0002 |△×○子|代金引換 | | | | 0003 |×○△夫|銀行振込 | | | | と、ここまで準備して、 その後、 「商品購入数」は2度手間だなぁーと思いつつも 手動でセルに入力していたのです。 もちろん、人間のすることですから、 入力ミスが多少なりとも発生しており、 せっかく【ファイルB】(自動的に作成されるcsv=間違いがない)があるので、 何とか活かせないかと常々思っており、Accessならできるのでは、と 考えた次第で…。 ちなみにご回答の中にありました、 「○△×男さんの買った商品をすべて表示するようなプログラム」 というのはどのようにすればよいのでしょうか? (重ね重ねすいません、Accessは初心者なのです) よろしくお願いいたします。
お礼
ご丁寧な回答に対して何も返答がない状況が続いておりまして、本当に失礼いたしました。 アクセス初心者でどうしていものかわからず途方にくれておりましたが、何とかできました。 ありがとうございました。 開始後半年、「ああしたい」「こうしたい」という思いをもちつつ、でもどうしていいかわからず、というような状況は未だに続いていおりますが、少しずつ勉強をしてこつこつと修正を付け加えております。 またどうにもこうにもできない状況が出てきましたら質問させていただきます。 本当にありがとうございました。