• ベストアンサー

サブフォームにあるテキストボックスの値を参照したい

ACCESS2010です。 サブフォーム(帳票フォーム)のフッターにある、コントロールソースが =nz(sum([金額]),0) と設定してあるテキストボックスがあります。([合計金額s]) この[合計金額s]の値を、メインフォームのコントロールソースがテーブルの項目に設定されているテキストボックス([金額])で参照したいのですが、金額入力直後の値が参照できません。 現在はメインフォームに中継用のテキストボックス([金額wk])を作成し、コントロールソースを[合計金額s]に設定、acNewRecする前に[金額wk]の値を[金額]へ渡しています。 何とか直接参照する方法はありませんでしょうか。

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

  • ベストアンサー
  • piroin654
  • ベストアンサー率75% (692/917)
回答No.1

質問のようなことは考えたこともなかったので、 少し試行錯誤しましたが、以下でサブフォームが Dirtyの状態で金額が捕らえることが出来ます。 質問の意図を間違えていなければですが。 Private Sub 金額_KeyUp(KeyCode As Integer, Shift As Integer) Forms!Fmain!tx参照 = Nz(Me![金額合計s], 0) + Val(Nz(Me![金額].Text, 0)) End Sub

suteaddor
質問者

お礼

「Fmain」はメインフォームの名前でしたね、失礼しました。 無事解決いたしました。 有難うございました。

suteaddor
質問者

補足

有難うございます。 自分の質問文を読み返していて正確に伝わっているか自信が無い部分がありましたので補足します。 先ず[金額]はメインフォームとサブフォームの両方にあります。 サブフォームの[金額]の合計がサブフォームの[合計金額s]に表示されます。 サブフォームの[合計金額s]がメインフォームの[金額wk]を中継しメインフォームの[金額]に入ります。 上記の部分は正確に伝わっていましたでしょうか? 教えて頂いたコードを試してみましたが下記のエラーが表示されてしまいます。  実行時エラー2450  参照されているフォーム'Fmain'が見つかりません。 このコードはサブフォームの[金額]に記入すれば良いのですよね?

その他の回答 (2)

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.3

Mo1、No2です。 すみません。もう一つ書き忘れです。 No1は「金額」のキー解放時のイベントです。 以上です。

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.2

No1です。 書き忘れましたが、 Forms!Fmain!tx参照 はメインフォーム上の「tx参照」というテキストボックスに データを表示するようにしています。実際に合わせて変更 してください。 No1のプロシージャの仕様は、データを入力するたびに 「合計金額s」と「金額」の合計が「x参照」に表示されます。 普通は質問のように「金額」を入力し終わって、フォーカスを 他のレコードに移さないと「合計金額s」のデータは変更されませんが、 No1のプロシージャは先読みしてデータを合計するようになっています。 ようするに、「先読みして合計」をし、それによって「直接参照」という ことにしています。 「キモ」は、 Val(Nz(Me![金額].Text, 0)) の中で、テキストボックスのTextプロパティでデータを拾い、Val関数でテキストデータを 数値に変換しているところですかね。 勘違いがあれば補足してください。

関連するQ&A