- ベストアンサー
アクセスで計算結果も格納したい
DB初心者です。 アクセスを使ってデータベースに挑戦を始めたのですが、 簡単な入り口で躓いています。 A列(数値)、B列(数値)を入力したら、その合計値をC列に 書き込むようにしたいと思っています。 まずこんなことって普通やらないのでしょうか? またできるとしたら A+B はどこに、どのように 書けばいいのでしょうか? よろしくお願いいたします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
同じレコードの他のフィールドの値から計算で求められるようなものは テーブルには格納しません(格納してはいけません) 難しい言葉で言えば正規化規則に違反しているといいます A、B、A+Bというフィールド構成にし なんらかの方法でAとBを入力したときにA+Bに値が入るようにしたとしても 後でAの値を変更したときにA+Bの値を正しく保つためには 非常にややこしい仕組みなり規則なりを設けないといけなくなります そんな事をしなくとも、テーブルにはAとBだけを格納しておき A+Bを見たいときにはクエリで表示するようにしておけば AやBをどのように変更しても何時も正しい値が表示されます テーブルにはAとBだけを格納するようにしておき 入力フォームで入力時にA+Bの値を確認のために表示したい という時には、A+Bを式フィールドとして持つクエリを入力フォームのソースにします 非連結のテキストボックスに式を入れておいて表示させるという手段は 単票フォームのときにしか使えませんが、クエリをソースとする方法は 単票・帳票両方のフォームに使えます
その他の回答 (4)
- O_cyan
- ベストアンサー率59% (745/1260)
テーブルにはA・Bのフィールドは作りますが合計を保存するCのフィールドは通常ではテーブル上に持たないというのは他の方が書いてありますので・・。 >A(数値)、B(数値)を入力したらその合計値をCに >Cはおなじフォーム上に単なる表示するだけのテキストボックスを配置して入力があるたびに計算し結果を表示させたい Bのコントロールの更新後処理などで演算する方法とか方法は色々ありますが簡単にやるには フォームに配置したテキストボックスのプロパティを開きコントロールソースに =[A]+[B] とすれば表示してくれます。 #4の方が「非連結のテキストボックスに式を入れておいて表示させるという手段は単票フォームのときにしか使えませんが・・」とありますが帳票フォームでもデータシート型でも使えます。テキスト表示の様になってしまう場合は文字配置で右に設定すればOKです。
お礼
必要なデータしかDBの残さない ということがよく 判りました。 見たいものすべてを予め作っておく必要はないのですね。 もう一度考え直してみます。 ありがとうございました。
- bonaron
- ベストアンサー率64% (482/745)
普通、計算で求められるデータはDBに格納しません。 > 補足の質問ですが、フォームでAとBを入力するとして > C列はおなじフォーム上に単なる表示するだけのラベルか > テキストボックスを配置して、入力があるたびに計算し、 > 結果を表示させたいと思っているわけです。 ということであれば フォームにテキストボックスを追加し、 コントロールソースを =A+B とすることで実現できます。
お礼
ありがとうございました。 少し根本から考え直してみます。
- asahina02
- ベストアンサー率47% (95/202)
#1です > 補足の質問ですが、フォームでAとBを入力するとして > C列はおなじフォーム上に単なる表示するだけのラベルか > テキストボックスを配置して、入力があるたびに計算し、 > 結果を表示させたいと思っているわけです。 こういうことをやるのであれば、いちいちDBを経由したりせず AとBの入力イベント時に、計算とCの表示処理を行った方がいいと思いますが。 で、AとBの確定時にCも合わせてDBへ更新という形で。
補足
ありがとうございます。 でもいまいちよくわかっていなくて・・・(すみません) >AとBの確定時にCも合わせてDBへ更新という形で とは具体的にどうすればいいのいでしょう? テーブルにはやはりABC3列要るんですよね。
- asahina02
- ベストアンサー率47% (95/202)
UPDATE テーブル SET C = A + B この一文で全行計算してくれます。 WHERE句を付ければ、行を限定することも可能です
補足
asahina02さん 早速の回答ありがとうございます。 補足の質問ですが、フォームでAとBを入力するとして C列はおなじフォーム上に単なる表示するだけのラベルか テキストボックスを配置して、入力があるたびに計算し、 結果を表示させたいと思っているわけです。 そういう結果を得るためにC列のテーブルデザインのところ で、どういう記述をしたらいいのかなと思っています。 よろしくお願いします。
お礼
ありがとうございます。 見たいものをすべて格納しておくという発想がまずいんですね。 必要なものだけを残しておいて、あとはその都度表示させるということを もう一度考え直してみます。