- 締切済み
アクセス2003でのデータベース作成で
WinXP上でaccess2003のデータベースを作成していますが、どうしても分からないのでどなたかご教授いただけないでしょうか? Aというテーブルには商品名と値段をそれぞれのフィールドに入力してあり(フィールドA1,A2と仮定。主キー用は別) Bというテーブルの3つのフィールド(仮にフィールドB1,B2,B3)はテーブルAの商品名(A1)をルックアップしている状態なのですが、テーブルBのもうひとつのフィールド(フィールドB4と仮定)にフィールドB1,B2,B3でルックアップしている商品の値段(A2)の合計額が表示されるようにするにはどうしたらいいのでしょうか? 買った本にも載ってませんし、ネットで検索してもこれかな?っていう解説が見つからなかったので漠然とでもいいのでこうしたらいいとかリンク先などを教えていただければ幸いです
- みんなの回答 (3)
- 専門家の回答
みんなの回答
ひょっとして、テーブルBは横展開してるですか。 1000円、みかん、りんご、バナナ といったように... これだとDBの意味がありません。 EXCELから入った人が陥りやすいところです。 生徒の成績をDB化する際、デーブル構造を 生徒番号、算数、理科、社会、英語 と作成してしまい勝ちです。これは本来 生徒番号、科目、点数 とすべきなのです。
- gatt_mk
- ベストアンサー率29% (356/1220)
>テーブルBのもうひとつのフィールド(フィールドB4と仮定)にフィールドB1,B2,B3でルックアップしている商品の値段(A2)の合計額が表示されるようにするにはどうしたらいいのでしょうか? 根本的にテーブル構造が理解されていないのではないですか? ルックアップするというのは単にそのフィールドに値を代入するときに参照しているだけではないですか?そうであれば値が代入された後にフィールドB4の合計額は変化しなくてはなりません。ACCESSのテーブル定義で値を自動的に変化させることはできません(SQLSeverなどのDBをつかい、データベーストリガーなどの設定をすれば変化させることも可能ですが)。 こうしたことをするためにはフォームなどを作成して、その画面で各フィールドの値が変化した時に、VBEでフィールドB4の合計値を更新するプログラムを作成するしかありません。テーブルの定義で設定できるものではありません。 それなりにVBEでのプログラム開発の知識が必要です。
BテーブルにAテーブルの内容をという形ではなく、A,Bテーブルをつないで必要なデータを得られるクエリーを作成する形がACCESSのようなRDBでの使い方ではないでしょうか?
お礼
仰る通りかもしれません。 テーブルはデータの保管など基本的な概念をもう一度勉強します
お礼
アクセスを使い始めてまだ日が浅いのでテーブルというものを理解しきっていないのかもしれません。 テーブルをエクセルのシート感覚で捉えていました。 やはりフォーム上などでクエリを使って呼び出すようにしたほうがいいのかも知れません。 ちなみにB1~3の値が更新されたときにイベントをマクロで作るようなやり方というのもありかなと解答を見て思いましたが、やはりフォームなどで表示させる方が簡単で良さそうです ありがとうございます