• ベストアンサー

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

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

  • サブフォームのテキストボックスの表示が遅い

    ACCESS2010です。 サブフォーム(帳票フォーム)のフッターにある、コントロールソースが =nz(sum([金額]),0) と設定してあるテキストボックスがあります。([合計金額s]) サブフォームの詳細には[数量]、[単価]、[金額](タブオーダーもこの順番)があり、この[金額]の合計値が上記[合計金額s]に表示されます。 ただ一つ問題があり、[金額]でエンターを押した後[合計金額s]の内容が更新されるまで約1秒位かかります。 これの何が問題なのかと言うと、[金額]でエンターを押した後[F12]キーを押すことで入力したデータをテーブルに書き込んでいるのですが、メインフォームに[合計金額s]を参照しているコントロールがあり、[合計金額s]が更新される前に[F12]キーを押すと更新前の内容でデータに書き込まれてしまうのです。 今は[金額]でエンターを押し一息ついてから[F12]キーを押しています。 何か良い解決策が有りましたらご教示ください。

  • ACCESS メインFからサブFの値を参照

    サブフォームで集計した値をメインフォームで演算値として使用したいのですができません。 サブフォームのフォームヘッダに集計値を入れるテキストボックスを配置し、メインフォームにサブフォームの集計値を参照するテキストボックスを配置しています。 ほんとうはイベントの実行で直接サブフォームの集計値を使った演算を行いたいのですが出来ないのでメインフォームにテキストボックスを作成しました。 サブフォームの集計値は表示しますが、その値を演算値として使用できないのです。試しにMsgboxでメインフォームのテキストボックスの値を表示させると何も表示しません。 なぜメインフォームのテキストボックスにサブフォームの値は表示できるのにその値を使用できないのでしょうか? 具体的には次の通りです。 <サブフォームに配置したテキストボックス>  名前        :テキスト16  コントロールソース:SUM([枚数〕)  書式        :数値 <メインフォームに配置したテキストボックス>  名前        :テキスト130  コントロールソース:[Foms]![メインフォーム名]![サブフォーム名].Form!テキスト16  書式        :数値 <イベント>   MSGBOX テキスト130       ※何も表示されません!

  • サブフォームのサブフォームの値を参照

    Access2007で親フォームAの中にサブフォームBが入っていて、そのサブフォームBの中にサブフォームCが入っているとします。 この場合、親フォームAからサブフォームCの中のテキストボックスの内容等は参照できないのでしょうか? 一応試しに、親フォームから Me!サブフォームB.Form!サブフォームC.From!テキスト.SetFocus と、ソースに書いたのですが「実行エラー:438」が出てしまいます。 どうにかして参照できないでしょうか? ご存じの方がいらっしゃったらご教授お願いします。

  • Accessのサブフォームについて

    Accessのサブフォームのテキストボックスをクリックするとメインフォームのテキストボックスにサブフォームのテキストボックスの値を反映させるために以下のロジックを組み込んだ所エラーが発生してしまいました。 調べてみても分かりませんでしたので解決方法が分かる方は教えて下さい。 よろしくお願いします。 ロジック Form!メインフォーム!テキストボックス=サブフォームのテキストボックス エラー 「指定した式で参照されている’メインフォーム’フィールドが見つかりません」 「コントロールがフォーカスを取得していないときに、コントロールのプロパティまたはメソッドを参照することはできません」

  • Accessのサブフォームから値を参照する方法について

    いつも拝見させて頂いております。 現在、Access97のフォームに以下のようなコントロールを配置しています。 1.フォームにサブフォームAを配置  1-1.サブフォームAにテキストボックスAを配置(入力用) 2.フォームにサブフォームBを配置  2-1.サブフォームBにテキストボックスBを配置(表示用) ※フォームは一つです。 <実現したい事> サブフォームA内のテキストボックスAの値をサブフォームB内の テキストボックスBに表示したいのですが、なかなかうまくいきません。 サブフォームA内のテキストボックスAの値を変更するとサブフォームB内の テキストボックスBも変更するようにしたいので、テキストボックスBの ControlSourceに[Form]![フォーム]![サブフォームA].[Form]![テキストボックスA] としましたが実現できませんでした。 どのような方法をとれば実現できるでしょうか? 宜しくお願いします。

  • MS ACCESSテキストボックスの値のリンク

    みなさんこんにちは! MS ACCESSで、フォームを作成いたしました。 そのフォームにはサブフォームが挿入されており、サブフォーム側で入力した値の合計を計算するテキストボックスを作りました。そしてその合計の値を、メインフォームに設けたテキストボックスに反映させたいのですが、なかなかうまく行きません・・・どうしたら値が反映するようにできるでしょうか? 初心者な者で質問ないようが分かりにくいかと思います。不足等ございましたら教えていただけると幸いです。 よろしくお願い致します。

  • サブフォームのテキストボックスにフォーカスを戻す

    Access2010です。 メインフォームにいくつかのテキストボックスやコンボボックスと「登録」ボタンがあり、メインフォームの中には帳票形式のサブフォームがあります。 サブフォームには ・数量 ・単価 ・金額 のテキストボックスがあります。 フォーカスがサブフォームのいずれかのテキストボックスにある状態で、「登録」ボタンをクリックするとYES/NOボタンがある確認画面が表示されます。 そこでNOを選択した場合に、直前までフォーカスがあったサブフォームのテキストボックスへフォーカスを戻すにはどうしたら良いでしょうか?

  • Access式ビルダでのサブフォーム参照について

    メインフォーム名  「売上明細フォーム」 サブフォーム名 「売上明細サブフォーム」です。 サブフォームのテキストボックスの値をメインフォームに表示させるため、式ビルダから参照させるとき、リストで展開して出てくる項目で以下の2つの違いがわかりません。   ・組み込まれたフォーム  ・すべてのフォーム どっちからでも一緒のことでできそうだと思うのですが、組み込まれたフォームからは参照されずエラーになります。 この2つの違いはなんですか??   

  • フォームの値をレポートに反映させるには

    お世話になります。 Access2002のフォームとレポートについてご教授ください。 それは、サブフォームをデータシートにしてサブフォームの中の計算の合計をメインフォームのテキストボックスに反映させるために、=Form![サブフォーム名]![合計]として、サブフォームのヘッダーに一時値を待機させといて、その合計値(サブフォームの合計値)をメインフォームに反映させています。(サブフォームの合計値も計算式をコントロールソースに入力:[単価]*[数量]) そして、メインフォームの値をレポートに反映させて印刷をかけたいのですが、どの様にしたらいいのかわかりません。。。 何かいい方法がございましたら、ひとつよろしくお願いいたします。

  • クロス集計クエリの合計 テキストボックスに表示

    クロス集計クエリの合計と、フォームのテキストボックスに表示させたいのですが無理でしょうか? クロス集計クエリの行見出しには会社名A社B社が入っていて、 合計 金額フィールドには各会社の合計金額が入っています。 そのクロス集計クエリを元にサブフォームを作り、 親フォームにはめ込んだのですが その親フォームにテキストボックスを設置し、 クロス集計クエリの合計 金額フィールドの合計を表示させたいのですが サブフォームのレコードをクリックするたびに、 親フォームにテキストボックスに表示される値は、そのアクティブなレコードの値になってしまいます。 テキストボックスのコントロールソースは =[テーブル1のクロス集計のサブフォーム].[Form]![合計 金額] としています。 A社B社のそれぞれのクロス集計クエリを作成し、 それぞれを足すしか、テキストボックスに合計を表示させる方法はないでしょうか?

専門家に質問してみよう