- ベストアンサー
Accessで式の計算結果がテーブルに反映されない。
計算結果を表すテキストボックスのコントロールソースに式を書き込みました。フォーム上では、計算されてでてきたのですが、その数値がテーブル上では現れてこないのです。テーブルでも同じ式を入れる必要があるのでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
マクロでもVBAでもいいんですがマクロの説明でいきますね。 仮に「テーブル:受注明細」を基に「フォーム:受注入力」を作成しました。「テーブル:受注明細」にはフィールド[単価][数量][合計金額]があるとします。今回fuji1200さんは「フォーム:受注入力」の[合計金額]のコントロールソースに式を書き込んだと思って下さい。 「フォーム:受注入力」をデザインビューで開きます。(名前がややこしくなるので)テキストボックス[合計金額]を削除して下さい。で、もう一度「テーブル:受注明細」と連結したテキストボックス[合計金額]を作成します。そして非連結テキストボックスを作成してこのテキストボックスに式を書き込みます。(ここでは =[金額]*[数量] テキストボックスの名前に[合計]と付けます。) フォームのプロパティのイベントタブを開き「レコード移動時」にカーソルを置き右横の...ってボタンを押して下さい→マクロビルダを選択→適当にマクロ名付け(ここでは[合計計算]とします。)マクロ作成画面が出てくるのでアクションの▼ボタンをクリック→「値の代入」を選択→ウィンドウの下の方にある「アイテムボックス」に[Forms]![受注入力]![合計]、同じく「式」に[Forms]![受注入力]![金額]*[Forms]![受注入力]![数量]と入力→上書き保存して閉じます。フォームに戻って先ほどのプロパティ-「レコード移動時」の右横に[合計計算]と表示されてますよね? そうしましたらテキストボックス[合計金額]のプロパティの書式タブの「可視」に「いいえ」を選択。 後は適当にデザイン等変更して下さい。 ただイベント「レコードの移動時」というのが最善の方法なのかどうかは分かりません。 長々となりましてどうも済みません。判りにくい所等がありましたらまた質問して下さい。それでは頑張って下さい。(^o^)丿
その他の回答 (1)
- kurisan
- ベストアンサー率71% (10/14)
今晩は。fuji1200さん。 フォームのレコードソースとなるテーブルに計算結果を格納するフィールドがあって、そのフィールドと連結しているテキストボックスに式を書き込んだという事ですよね? (違ってたらごめんなさい。。。) コントロールソースに式を書き込んでいるのですから、そのテキストボックスはテーブルとは非連結になってしまっていまよね。だからフォーム上では計算結果が表示されていてもテーブルとは無関係なので数値はテーブルには現れません。 クエリーで計算結果を表示するフィールドを作ってそれを基にフォームを作成するか、ど~してもテーブルにも計算結果を格納するフィールドが必要というのであれば、値の代入を使えばいいのではないでしょうか?
お礼
早速ありがとうございます。こんな風に助け合えるサイトっていいですね。私も知っていることがあれば、また参加したいです。
補足
違っていないです、その通りでした。そしてテーブルにも格納したい状況です。教えてもらいついでなのですが「値の代入」の方法を教えてもらえますか?
お礼
ありがとうございます!!出来ました。ただ、フォームのプロパティに「レコードの移動時」がなかったので、「フォーカス取得時」に設定して、「可視」を「はい」にしてみました。入力していって、その欄まできた時に計算結果も出たし、テーブルにも入ってました。kurisanさん、本当にありがとうございました。