• 締切済み

access97でのデータ利用方法について

AテーブルのレコードとBテーブルのフィールドをリレーションさせる方法はあるのでしょうか やろうとしている事は、Bテーブルの各フィールドにはそれぞれの商品数量があって、そのフィールド(商品名)の単価をAテーブルから参照させたいのですが 主キーがAテーブルでは、商品名に出来そうですが、Bテーブルは、商品名が フィールドとなっているので 配列のような概念が利用できないかとも思ってマニュアル探してみましたが判りませんでした。それともデータベースの考え方が間違っているのでしょうか? ご存知の方いらっしゃいましたら宜しくお願いします。

みんなの回答

  • ARC
  • ベストアンサー率46% (643/1383)
回答No.1

レコードとフィールドのリレーション処理は、できないです。 えーと、も少しテーブルの構造やなさりたいことを、具体例をあげて書いていただくと、解決策が書きやすいんですが、 Aテーブル  商品ID  商品名  単価 Bテーブル  商品ID1  商品数量1  商品ID2  商品数量2    : のようになっていて、単価×数量で、商品1,商品2…の売上金額を求めたい。ってことなんでしょうか? もしそうであれば、根っこの部分の問題として、テーブルの構造に難があるとことになります。 Bテーブルを  伝票ID  商品ID  数量 ってな構成にして、伝票一つに付き複数レコード生成するようにする、ってのが根本的な解決になると思います。 データベースの大規模な改造を伴わずに解決するとすれば、DLookup()関数を使えば良いでしょうね。 クエリ中に、 DLookup("単価","Aテーブル","[商品ID]=" & [商品ID1]) と書けば、[商品ID1]フィールドの商品の単価を取得することが出来ます。 DLookup("単価","Aテーブル","[商品ID]=" & [商品ID1]) * [商品数量1] で、売上金額が計算できます。 テーブル構造を修正する方式に比して、DLookup()の方は速度的には大幅に劣ります。が、修正の手間はこっちの方が遥かに簡単です。取り扱うデータ量が少ない(せいぜい数万件程度)んであれば、後者の方法で十分だと思います。 なんかあったら、補足をお願いします。

mehiro
質問者

お礼

ありがとうございました。accessは初心者なので大変勉強になりました。 ご理解頂いている通りの内容です。質問内容が具体的でなくて申し訳ございませんでした。ホームページからcgiでサーバーに蓄積されたcsv形式データをダウンロードしてaccessで整理しようと考えていました。

関連するQ&A