• ベストアンサー

Access内で計算

Access2002を使用しています。 あるテーブルに「電話代」「宅急便代」「立て替え金計」という フィールドがあり、「立て替え金計」のフィールドには、自動的に 「電話代」「宅急便代」の合計が入るようにしたいです。 フォーム上でコントロールソースの式ビルドを使用すれば、合計は 表示されるのですが、テーブルには反映されません。テーブルに値を 反映させるにはどうすればよいでしょうか?

  • oom
  • お礼率29% (26/87)

質問者が選んだベストアンサー

  • ベストアンサー
  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.5

すいません。ちょっと多忙だったため返事遅くなりました。 >[フィールドA][フィールドB]どちらかを編集した時点で[立て替え金合計1]が更新 >され、イベントが起こる、ということでしょうか? [フィールドA][フィールドB]のどちらかを編集してもあくまでも[立て替え金合計1] の演算結果が変わるだけで更新したとの意味合いとは少し違います。 AかBを編集した場合、フォーム上の[立て替え金合計1]フィールドの表示の変更で コントロールソースの=[電話代]+[宅急便代]の演算結果が変更表示されているだけ です。 通常更新といえばテーブルに保存しに行く時点のことを指すと思うのですが。 この場合Me![立て替え金合計] = Me![立て替え金合計1]を記述してあるイベントに 処理が一致した場合テーブルに更新に行きます。 >Private Sub 立て替え金合計1_Click() >Me![立て替え金合計] = Me![立て替え金合計1] >End Sub この記述は[立て替え金合計1]のテキストボックスのプロパティに書いているのですか? テキストボックスではクリックイベントは発生しないと思ったのですが・・。 キークリック時のイベントに記述を書き直してください。 [立て替え金合計1]にタブ移動でフォーカスが移りEnterキーなどを押すとテーブル に更新に行くはずです。 後はMe![立て替え金合計] = Me![立て替え金合計1]のイベントを発生させるタイミ ングもあります。 処理の一番最後にMe![立て替え金合計] = Me![立て替え金合計1]のイベントを発生 する様にすれば一番問題がないと思います。例えばレコードの保存ボタンの記述に 追加するとか。

oom
質問者

お礼

ご解答ありがとうございました。 長くかかってしまい申し訳ありませんでした。 解決しました。やはりイベントの発生タイミングが悪かったようですね。 どうもありがとうございました。

その他の回答 (4)

  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.4

>計算のみ「立て替え金計1」は、値が自動計算されたことで、更新、という扱いに >なるのでしょうか フォーム上のフィールドでコントロールソースに=[電話代]+[宅急便代]と設定して あると思うのですがフォーム上で演算された内容はテーブルには反映されずフォー ム上だけでの表示となるので演算値をテーブルに保存するにはテーブルのフィールド に書込みにいくイベントが必要になるためそのイベントが発生した時点で更新の扱い になります。

oom
質問者

補足

たびたび申し訳ありません。 Private Sub 立て替え金合計1_Click() Me![立て替え金合計] = Me![立て替え金合計1] End Sub というコードを入れているのですが、うまくいきません。 [フィールドA]と[フィールドB]の合計が[立て替え金合計1]に算出されるとしたら、[フィールドA][フィールドB]どちらかを編集した時点で [立て替え金合計1]が更新され、イベントが起こる、ということでしょうか? 何故うまくいかないのでしょう・・・。

  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.3

フォームの「立て替え金計」のフィールドを「立て替え金計1」として「電話代」 「宅急便代」の合計を表示するようにして。 「立て替え金計1」のプロパティのイベントの更新後処理に me![立て替え金計]=me![立て替え金計1] とするか またはレコードの保存などのボタンのイベントの途中に me![立て替え金計]=me![立て替え金計1] を追加記述すればテーブルに書込みに行ってくれます。

oom
質問者

補足

返答が遅くなりもうしわけありません。 いろいろ試してみたのですが、更新後処理だとうまくイベントが起動しないようです。ためしにクリック時にイベントを設定してみたところ、うまくいきました。 計算のみ「立て替え金計1」は、値が自動計算されたことで、更新、という扱いになるのでしょうか?

  • KODAMAR
  • ベストアンサー率26% (267/1006)
回答No.2

再びです。 以前私が回答したところですが参考になれば。 http://oshiete1.goo.ne.jp/kotaeru.php3?q=286515

  • KODAMAR
  • ベストアンサー率26% (267/1006)
回答No.1

フォームもしくはクエリで計算した値をテーブルに入れる場合は、テーブルを新たに作成するか、更新が必要になります。 更新クエリを作成してみてはいかがでしょうか?

関連するQ&A

  • ACCESSのフォームとテーブルの連携について

    ACCESSのフォームとテーブルの連携について 説明がややこしくて大変申し訳ないのですが、教えてください テーブルが1つあります。 そのテーブルを元にフォームが作成されています。 そおフォームの一つのフィールド((コンボボックス)→[テスト]フィールド名とします)でOK と NG と選択できるように値集合ソースを設定しています。 そしてここからが本題なのですが、 そのフォーム上では使用しない(見せたくない)フィールド([いろは]フィールド名とします。)がテーブルに1つあるのですが 例えばフォームの[テスト]に仮に OK と選択して保存したら、 テーブルの[いろは]に 快調 と自動反映させることは可能でしょうか?

  • フォームの計算がテーブルに反映するには?

    Windows2000/ACCESS2000を使用してます。 フォームで自動的に合計や消費税が計算されるように設定しましたが、保存されたテーブルを見てみると合計や消費税は空白になっていて計算された値が入力されてませんでした。 フォームでの計算式は以下のように設定しました。 合計のフィールドを選んで、プロパティを開きその中のデータタブのコントロールソースに式ビルダーで、 =A+B と設定しました。フォーム上では計算されるの ですが・・・ どのようにしたらテーブルに計算された値が表示されるのでしょうか? 宜しくお願いします。

  • アクセスでの、フォームとテーブルの連動の方法を教えてください

    初歩の初歩だと思うのですが、教えてください。 アクセスで、テーブルのフィールドと全く同じ内容でフォームを作りました。(受講生情報の管理) その中で「性別番号」と「性別」があり、(「性別番号」と「性別」は、別にテーブルを作っています)フォーム上では「性別番号」に番号(男なら1、女なら2)を入力すると「性別」に自動で値が入るように設定できたのですが、テーブルに反映されません。(フォームの「性別」のプロパティのコントロールソースに”DLOOKUP~”を入力しました) テーブル上にも同じように反映させるには、どうすればよいのでしょうか。 同様の質問と思われるものを参考にいろいろとやってみたのですが、どうもうまくいかなくって・・・ よろしくお願いします。

  • Accessで計算式を挿入

    テーブルで、A・B・Cのフィールドがあります。 C=A/(B/100)^2 という式があります。 この場合、更新クエリを使ってCのフィールドに値を入れるしかないのでしょうか。 もともとあるテーブルを元にフォームを作成しました。 このフォームを使って、AとBを入力すれば自動的にCに値が入る、という事をイメージしていたのですが行き詰っています。 式ビルダは使用してみたのですが、データが反映されません。 元のテーブルCフィールドには式はなく、ただ数値があるだけです…。 どんな作業が足りないのでしょうか。 もしくは別な方法がよいのでしょうか。 よろしくお願いします。

  • Accessのテーブルのフィールドに式を入れる方法

    質問:1 テーブルのフィールドに式を入れる方法を教えてください。 フィールド1、フィールド2、フィールド3とある場合に、 フィールド3=フィールド1+フィールド2を自動入力したいのですが、 どこで設定すればいいのか教えてください。 質問:2 フォームのテキストボックスのコントロールソースに下の式を設定してあります。 ="K-" & [区分] & "-" & CStr([通番]) これをテーブルのフィールドに反映させるにはどのような設定を行えばいいでしょうか。 (フォームのコントロールはウィザードでテーブルの全フィールドを取り込んでいます。) よろしくお願いします。

  • アクセス: フォーム上で計算した数字をテーブルに保存したい。

     こんばんは。また質問させてもらいます・・。 これがアクセスに関して、最後の質問になるようにしたいです!!  さて、フォームに入力したものは自動的にテーブルに保存されます。 しかし、フォーム上で計算したものは、テーブルに反映されていませんでした。 過去の質問にフォーム上計算したものは、テーブルに反映されないということがわかりました。 では、一体どうすればいいのでしょうか。  フォームのコントロールソースには =([QTY]*[COST]) 数量*値段を入れています。 どうすれば、テーブルに表示できるでしょうか。 ご教授お願いいたします。 過去の質問は、こちらを参考しました。 http://oshiete1.goo.ne.jp/kotaeru.php3?q=1002073

  • アクセスのフォーム

    アクセスでウィザードを利用して入力フォームを作りました。 当初はテーブルにあるデータがフォームにも反映されていたのですが、いろいろといじっているうちに、フォームのデータが消えてしまいました。コントロールソースをいじってみたのですが、直りませんでした。 フォームにも、テーブルのデータを反映させるためにはどこを直したらよいか教えて下さい。よろしくお願いします。

  • アクセスの演算について

    アクセス2000を使用しています。 フォームの中に「価格(税込み)」という入力フィールドがあるのですが、このフィールドを入力すれば自動で「価格(税抜き)」が表示されるフィールドを作成しようとしています。  ところがフォームの「価格(税抜き)」フィールドのプロパティの中のコントロールソースで以下のように入力しても正しい値が表示されません。  =[価格(税込み)]/1.05  ただ、同様に1.05のところを整数(たとえば2)にすると正しい値が表示されます。  小数点以下の数値で割り算をする方法を教えてください。

  • Accessのフォームで…

    Access 2010のフォームのリストボックスで、あるテーブルのフィールドの値を選択した場合に、同じテーブルの同じレコードにある違うフィールドの値を、テキストボックスに読み込みたいのですが、どうすれば出来ますでしょうか? VBAのサンプルソース等でも構いません。回答お願いしますm(_ _)m

  • アクセスでフォームのデータ(計算結果)がテーブルに反映されない

    アクセス初心者です、教えて下さい。 うまく説明できないのですが、エクセルで作成した売上表をアクセスで作り直そうと試みているのですが…。 簡単に説明すると、フィールドA,B,Cと3つあって、フォーム上でCはAとBの合計(C=[A]+[B])としました。フォーム上ではA,Bに値を入力するだけでCに結果が表示されるのですが、それがテーブルのCに反映されません。テーブルに計算結果を表示させるにはどうしたらいいのでしょうか?

専門家に質問してみよう