• 締切済み

アクセスで関数は?

アクセスのデータAに100と入力し、 データBに30と入力した時に、 データCにデータA-データBが自動的に入るように 関数みたいなものはできないでしょうか? 単純なことなのですが、宜しくお願いします。

みんなの回答

  • snoopy64
  • ベストアンサー率42% (337/793)
回答No.5

#3です。補足を見ました。 >フォームAとBに更新後処理を入れましたがCが更新されません。。。 これは???AとBとCは別々のフォームのような言い方ですね。。。そうだとすると、レコードの同期やらフォーム間のフォーカスの受け渡しやら、いろいろ複雑になるはずで、そういう処理を希望する方のご質問としては初歩過ぎますので(失礼)、おそらく違うのではないかと。。。というわけで一応、「テーブル1にA、B、Cというフィールドがある。テーブル1へのデータ入力用のフォーム1にはテキストボックスA、B、Cがある。それぞれのコントロースソースは同名の各フィールドとする。」 ということで話を進めます。これがまったく的外れでしたら以下は無視してください。 テキストボックスAの更新後処理のイベントプロシージャに Private Sub A_AfterUpdate() Me.C = Me.A - Me.B End Sub テキストボックスBも同様に Private Sub B_AfterUpdate() Me.C = Me.A - Me.B End Sub をコードを書き、フォームを実行すると、AやBに入力するとCが自動的に計算されます。 がんばってください(^o^)丿

  • Gin_F
  • ベストアンサー率63% (286/453)
回答No.4

そもそも、リレーショナルデータベースの基本的な考え方に、計算で 求めることができる項目については、データ(テーブル)として もたないというものがあります。 そうでないと、例えば今回の場合、テーブルをデータシートビューで 開き、データA を直接修正すると、データC の内容は誤ったものに なってしまいます。 クエリで計算をさせれば、上記のようなことはないので、そうすべきだと 思います。

  • snoopy64
  • ベストアンサー率42% (337/793)
回答No.3

#1 です。#2の方への補足を見ました。 #2さんがおっしゃっているのは、入力用フォームを作って、そのフォームで入力する場合の事です(だと思います)。 フォームにABCそれぞれのテキストボックスを用意し、AとBの更新後処理イベントにC=A-Bの計算をするコードを書く、という事です。 一方、僕が回答したのは、テーブルを開いてデータシートで入力するイメージです。 この違いはお分かりになりますか?(失礼!) その辺の補足をいただければまた回答します。 頑張ってくださいヽ(^。^)ノ

noname#12381
質問者

補足

どうもありがとうございます。 フォームを使ってC=A-Bを行おうとしています。 フォームも作って、フォームAとBに更新後処理を 入れましたがCが更新されません。。。 式ビルダで [C] = [A] - [B]と入れました。 (入力後の表示は =[C]=[A]-[B])となっていますが大丈夫でしょうか?) その後、フォームよりAとBを入力しましたが、 テーブルのAとBは正しく更新されています。 しかし、Cはそのままです。

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.2

データA,B,Cがフィールド(項目)なら AとBのイベントの更新後処理で [C]=[A]-[B] にすればデータCへの値セットも可能です。 データCが表示だけの場合は#1の方も言われる通り、 テキストボックスのコントロールソースに =[A]-[B] としてください。 データA,B,Cが異なるレコードの場合は不可能です。

noname#12381
質問者

補足

回答ありがとうございます。 手元の書籍など色々調べましたが、 「イベントの更新後処理」がわかりません。 どこで設定するのでしょうか? 宜しくお願いします。。。

  • snoopy64
  • ベストアンサー率42% (337/793)
回答No.1

データシートでの入力で、Aに100、Bに30と入力した瞬間にCに70と表示させたいなら、C:[A]+[B]としたクエリを作成し、クエリで入力すればできます。ただしCはテーブルのフィールドではないので保存されません。 AとBを件数分入力した後、Cを一括で計算させたいなら、上記のクエリを更新クエリにして実行すればできます。 頑張ってくださいヽ(^。^)ノ

noname#12381
質問者

お礼

回答ありがとうございます。 色々、やってみたいとおもいます。