- 締切済み
access97でのデータ利用方法について
AテーブルのレコードとBテーブルのフィールドをリレーションさせる方法はあるのでしょうか やろうとしている事は、Bテーブルの各フィールドにはそれぞれの商品数量があって、そのフィールド(商品名)の単価をAテーブルから参照させたいのですが 主キーがAテーブルでは、商品名に出来そうですが、Bテーブルは、商品名が フィールドとなっているので 配列のような概念が利用できないかとも思ってマニュアル探してみましたが判りませんでした。それともデータベースの考え方が間違っているのでしょうか? ご存知の方いらっしゃいましたら宜しくお願いします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- ARC
- ベストアンサー率46% (643/1383)
レコードとフィールドのリレーション処理は、できないです。 えーと、も少しテーブルの構造やなさりたいことを、具体例をあげて書いていただくと、解決策が書きやすいんですが、 Aテーブル 商品ID 商品名 単価 Bテーブル 商品ID1 商品数量1 商品ID2 商品数量2 : のようになっていて、単価×数量で、商品1,商品2…の売上金額を求めたい。ってことなんでしょうか? もしそうであれば、根っこの部分の問題として、テーブルの構造に難があるとことになります。 Bテーブルを 伝票ID 商品ID 数量 ってな構成にして、伝票一つに付き複数レコード生成するようにする、ってのが根本的な解決になると思います。 データベースの大規模な改造を伴わずに解決するとすれば、DLookup()関数を使えば良いでしょうね。 クエリ中に、 DLookup("単価","Aテーブル","[商品ID]=" & [商品ID1]) と書けば、[商品ID1]フィールドの商品の単価を取得することが出来ます。 DLookup("単価","Aテーブル","[商品ID]=" & [商品ID1]) * [商品数量1] で、売上金額が計算できます。 テーブル構造を修正する方式に比して、DLookup()の方は速度的には大幅に劣ります。が、修正の手間はこっちの方が遥かに簡単です。取り扱うデータ量が少ない(せいぜい数万件程度)んであれば、後者の方法で十分だと思います。 なんかあったら、補足をお願いします。
お礼
ありがとうございました。accessは初心者なので大変勉強になりました。 ご理解頂いている通りの内容です。質問内容が具体的でなくて申し訳ございませんでした。ホームページからcgiでサーバーに蓄積されたcsv形式データをダウンロードしてaccessで整理しようと考えていました。