dポイントプレゼントキャンペーン実施中!

DB初心者です。
アクセスを使ってデータベースに挑戦を始めたのですが、
簡単な入り口で躓いています。

A列(数値)、B列(数値)を入力したら、その合計値をC列に
書き込むようにしたいと思っています。

まずこんなことって普通やらないのでしょうか?
またできるとしたら A+B はどこに、どのように
書けばいいのでしょうか?

よろしくお願いいたします。

A 回答 (5件)

同じレコードの他のフィールドの値から計算で求められるようなものは


テーブルには格納しません(格納してはいけません)
難しい言葉で言えば正規化規則に違反しているといいます

A、B、A+Bというフィールド構成にし
なんらかの方法でAとBを入力したときにA+Bに値が入るようにしたとしても
後でAの値を変更したときにA+Bの値を正しく保つためには
非常にややこしい仕組みなり規則なりを設けないといけなくなります

そんな事をしなくとも、テーブルにはAとBだけを格納しておき
A+Bを見たいときにはクエリで表示するようにしておけば
AやBをどのように変更しても何時も正しい値が表示されます

テーブルにはAとBだけを格納するようにしておき
入力フォームで入力時にA+Bの値を確認のために表示したい
という時には、A+Bを式フィールドとして持つクエリを入力フォームのソースにします
非連結のテキストボックスに式を入れておいて表示させるという手段は
単票フォームのときにしか使えませんが、クエリをソースとする方法は
単票・帳票両方のフォームに使えます
    • good
    • 0
この回答へのお礼

ありがとうございます。
見たいものをすべて格納しておくという発想がまずいんですね。
必要なものだけを残しておいて、あとはその都度表示させるということを
もう一度考え直してみます。

お礼日時:2006/04/19 11:49

テーブルにはA・Bのフィールドは作りますが合計を保存するCのフィールドは通常ではテーブル上に持たないというのは他の方が書いてありますので・・。



>A(数値)、B(数値)を入力したらその合計値をCに
>Cはおなじフォーム上に単なる表示するだけのテキストボックスを配置して入力があるたびに計算し結果を表示させたい
Bのコントロールの更新後処理などで演算する方法とか方法は色々ありますが簡単にやるには
フォームに配置したテキストボックスのプロパティを開きコントロールソースに
=[A]+[B]
とすれば表示してくれます。
#4の方が「非連結のテキストボックスに式を入れておいて表示させるという手段は単票フォームのときにしか使えませんが・・」とありますが帳票フォームでもデータシート型でも使えます。テキスト表示の様になってしまう場合は文字配置で右に設定すればOKです。
    • good
    • 0
この回答へのお礼

必要なデータしかDBの残さない ということがよく
判りました。
見たいものすべてを予め作っておく必要はないのですね。
もう一度考え直してみます。
ありがとうございました。

お礼日時:2006/04/19 11:52

普通、計算で求められるデータはDBに格納しません。



> 補足の質問ですが、フォームでAとBを入力するとして
> C列はおなじフォーム上に単なる表示するだけのラベルか
> テキストボックスを配置して、入力があるたびに計算し、
> 結果を表示させたいと思っているわけです。

ということであれば
フォームにテキストボックスを追加し、
コントロールソースを
=A+B
とすることで実現できます。
    • good
    • 0
この回答へのお礼

ありがとうございました。

少し根本から考え直してみます。

お礼日時:2006/04/18 13:00

#1です



> 補足の質問ですが、フォームでAとBを入力するとして
> C列はおなじフォーム上に単なる表示するだけのラベルか
> テキストボックスを配置して、入力があるたびに計算し、
> 結果を表示させたいと思っているわけです。

こういうことをやるのであれば、いちいちDBを経由したりせず
AとBの入力イベント時に、計算とCの表示処理を行った方がいいと思いますが。
で、AとBの確定時にCも合わせてDBへ更新という形で。

この回答への補足

ありがとうございます。
でもいまいちよくわかっていなくて・・・(すみません)

>AとBの確定時にCも合わせてDBへ更新という形で

とは具体的にどうすればいいのいでしょう?
テーブルにはやはりABC3列要るんですよね。

補足日時:2006/04/18 11:58
    • good
    • 0

UPDATE テーブル SET C = A + B



この一文で全行計算してくれます。
WHERE句を付ければ、行を限定することも可能です

この回答への補足

asahina02さん

早速の回答ありがとうございます。
補足の質問ですが、フォームでAとBを入力するとして
C列はおなじフォーム上に単なる表示するだけのラベルか
テキストボックスを配置して、入力があるたびに計算し、
結果を表示させたいと思っているわけです。

そういう結果を得るためにC列のテーブルデザインのところ
で、どういう記述をしたらいいのかなと思っています。

よろしくお願いします。

補足日時:2006/04/18 11:20
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す