サブフォームの値をメインフォームで表示する方法

このQ&Aのポイント
  • Accessのサブフォームの値をメインフォームで表示する方法について教えてください。
  • MAIN_FORM1にあるtextbox1に、サブフォームの「数量の合計フィールド」の合計を表示したいと思っていますが、うまく表示ができません。どのように表示すれば良いですか?
  • MAIN_FORM1を開き、コンボボックスにある日付を選択すると、サブフォームでrequeryが実行されますが、textbox1にサブフォームの「数量の合計フィールド」の合計を表示する方法を教えてください。
回答を見る
  • ベストアンサー

サブフォームの値をメインフォームで表示

Accessのサブフォームの値をメインフォームで表示する方法をお教え下さい。 画像にありますように、各コントロールは以下になります。 http://upload.fam.cx/cgi-bin/img-box/th6120120093700.jpg MAIN_FORM1(このフォーム) subform_1(サブフォーム) combo1(コンボボックス) textbox1(テキストボックス) subform_1はクエリオブジェクト、「Q_月報」を呼び出し、以下のSQLでできています。 -------------------------------------------------------------------------------------------------- SELECT Format([伝票日付],"yyyy-mm") AS 月, 出庫テーブル.商品番号, 商品マスタ.商品名, Sum(出庫テーブル.数量) AS 数量の合計 FROM 出庫テーブル INNER JOIN 商品マスタ ON 出庫テーブル.商品番号 = 商品マスタ.商品番号 WHERE (((Format([伝票日付],"yyyy-mm"))=[Forms]![月報]![リスト2])) GROUP BY Format([伝票日付],"yyyy-mm"), 出庫テーブル.商品番号, 商品マスタ.商品名; -------------------------------------------------------------------------------------------------- MAIN_FORM1には下記のVBAコードが書かれています。 -------------------------------------------------------------------------------------------------- Private Sub リスト2_Click() Me!月報サブフォーム.Requery End Sub -------------------------------------------------------------------------------------------------- MAIN_FORM1を開き、コンボボックスにある日付を選択すると、日付をキーにサブフォームでrequeryされるようになっています。 わからない点は、MAIN_FORM1にtextbox1に、サブフォームの「数量の合計フィールド」の合計を表示したいと思います。 textbox1のコントロールソースに、「=Sum([Forms]![月報サブフォーム]![数量の合計])」をやりましたが、うまく表示ができません。エラーと表示されます。どのように注文フォームに表示されている、「数量の合計フィールド」の合計をテキストボックスに表示できるでしょうか?

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

  • ベストアンサー
回答No.1

textbox1 のコントロールソースを下記のように設定します。 =DSum("数量","出庫テーブル","Format([伝票日付],'yyyy-mm')='" & [リスト2] & "'") リスト2のクリック時のイベントプロシージャを下記のように変更。 Private Sub リスト2_Click() Me!月報サブフォーム.Requery Me!textbox1.Requery End Sub 説明でのオブジェクト名と、SQL、コードのオブジェクト名が矛盾してますので、 SQL、コードの方が正しいとして回答してます。

mellow91
質問者

お礼

ありがとうございます!助かりました。今度試してみます!

関連するQ&A

  • ACCESS──メインフォームでサブフォームのレコード件数をカウントしたい

    日付/品番/出庫数のフィールドで構成された「明細テーブル」があります。 「日付」フィールドからなるメインフォーム、「品番/出庫数」からなるサブフォームをつくり、メインフォームのサブフォームコントロールのレコードソースを「サブフォーム」に指定しました。 日付を入れるとその日の出庫明細がサブフォーム上に表示されるのですが、このレコード件数をメインフォーム上のコントロールで表示したいのです。 サブフォームのヘッダにテキストボックスコントロールを作り「=Count([品番])」としてやれば、「サブフォーム上での」件数表示は出来るのですが、同じ式をメインフォーム上のコントロールに記述すると、「全レコードの件数」が表示されてしまいます(当たり前ですが) そこで、「=Count([埋め込み].Form![品番])」とやってみました。ここで「埋め込み」とはメインフォーム上のサブフォームコントロールの名前です。 結果は「#Error」となってしまいます。Count関数だけでなくSum関数などでも同様の結果となります。 はっきりいって「サブフォームのヘッダに表示させればいいじゃないか」というところなのですが、「式ビルダ」ではサブフォームのコントロール名も容易に参照できるようになっており、なにか方法があるのではないか、初歩的なところでつまずいていないか、と思案している次第です。 なにかアドバイスいただけたら幸いです。

  • Accessでサブフォームの合計をメインフォームに

    Access2007で開発しています。 メインフォームにサブフォームを貼り付けており、 サブフォームに入力した「数量」「単価」から「金額」を計算して表示し、 その合計金額をメインフォームのテキストボックス(非連結)に表示しようと しています。 サブフォームは行単位で追加、削除が可能です。 サブフォームの更新結果が正しくメインフォームに表示されずに困っています。 おわかりの方、おられましたらお教え頂きたく、よろしくお願い致します。 【サブフォーム】   ・レコードソース:T_明細   ・[詳細]項目:数量・・・レコードソース=T_明細・数量        単価・・・    〃    =T_明細・単価        金額・・・数量および単価のAfterUpdateで計算して表示。    [フォームフッター]項目:金額計・・・コントロールソース=Sum([金額])   ・Vbaコード:   Private Sub Form_AfterUpdate()   Forms![メインフォーム].合計計算   End Sub   Private Sub Form_Delete(Cancel As Integer)   Forms![メインフォーム].合計計算   End Sub 【メインフォーム】  ・テキストボックス:「合計金額」(非連結) Public Sub 合計計算()    Me.サブフォーム.Requery   方法1: Me!合計金額 =DSum("金額", "T_明細", (キー項目指定 記述省略))   方法2: Me!合計金額 = Me![サブフォーム].[Form].[金額計] End Sub ここで、 方法1の場合:数量、単価の変更入力及び行追加は正しく動作するが、          行削除の後、メインフォームの「合計金額」が再計算されず、変更前のまま。 方法2の場合:数量、単価の変更入力及び行追加すると、「合計金額」が”0”になる。          行削除しても「合計金額」は変わらず、変更前のまま。 どちらも、サブフォオームの「金額計」は正しく表示されています。 以上、よろしくお願い致します。

  • access2010のフォーム上で計算したいです

    access2010 初心者です。 メインフォーム上に総合計を計算したいのですがどうしたらいいのか困ってます。 ***サブフォーム(テーブル1から表示しました)*** ・商品名(テーブル1から表示) ・金額(dlookupを使って「商品一覧表」から金額を表示しました) ・数量(テーブル1から表示) ・合計金額(コントロールリボンでテキストボックスを作り「金額」*「数量」で表示してあります) *********************** メインフォームに、サブフォームの「合計金額」の様にテキストボックスで、サブフォームの「合計金額」の『総合計』を表示したいです。 総合計がある一定の金額になるように、サブフォームの「数量」を決めて行きたいのです。だから、一定金額から『総合計』を引いて残金も表示したいのですが、『総合計』の求め方がわからなくて困っています。 総合計や合計金額はデータとしてテーブルには残らなくてもOKです。 初心者なので、できればわかりやすく簡単な方法がうれしいです うまく伝えれなくて不明な点があるかと思いますが、なにとぞお願いします

  • サブフォームのデータをメインフォームへ

    お世話になります。 ひとつお聞きしたいのですが、サブフォームのデータをメインフォームに表示させる方法ってないのでしょうか? データシートのサブフォームで計算させた合計の値を、メインフォームにもテキストボックスを表示させたいと思っています。 できるかどうかわかりませんが、何かいい方法がございましたら、よろしくお願いいたします。

  • Access2000でメインサブフォーム

    テーブル1 商品ID 数値型(主キー) 商品名 テキスト型 ------------------ テーブル2 売上ID  数値型(主キー) 商品ID  数値型 月日   日付型 売上個数 数値型 --------------------- 以上のようなテーブルがあり、テーブル1を「メイン」テーブル2を「サブ」のメインサブフォームを作成しました。 しかし、「サブ」のデータが多いため、さらに、サブフォームの日付フィールドを使い、抽出をしたいのですが、方法がわかりません。(例えば、9/1以上9/10以下のような抽出) いろいろやってみは見たのですが、思うようにできません。メインサブフォームでさらにサブフォームのデータを抽出するということは無理なのでしょうか?

  • アクセス2002メインフォームとサブフォームの合算

    発注書を作成し、担当者毎に改ページを設定してます。 担当毎にメインフォームの発注数量とサブフォームの発注数量の合計を ページフッターに表示することは出来たのですが、 全体の合計数を各担当のページに表示させる方法がわかりません。 教えてください。

  • AC2000でフォームから入力したデータをサブフォームに表示

    ID 商品名 単位 単価で商品マスタフォームを作っています。このフォーム内にサブフォームを作っておいて データが入力するたびにサブフォームへ表示させたいのですが、このときの条件としてID(オートナンバー)を降順(最新のデータが一番上になる)・データシート形式にしたいと思います。 T_商品(テーブル名) Q_商品(IDを降順としたクエリ) MF_商品(各入力テキストボックスがあるフォーム) SF_商品(MF_商品に貼り付けるサブフォーム) 降順にすると一番若いIDのデータだけがサブフォームに 表示されるのです。 requeryは必要なのでしょうか? よろしくお願い致します。

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

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

  • アクセス2010 サブフォーム集計結果を表示させる

    テーブルに連結したメインフォーム取引台帳があります。 メインフォームに、入金台帳と仕入金額予定表のサブフォームが2つあります。 それぞれのサブフォームにテキストボックスで合計を表示しています。 入金台帳が取引合計 仕入金額予定表が支払合計 この2つのそれぞれの合計をメインフォームの詳細にテキストボックスを追加して表示させ さらに集計するためのテキストボックス作って、下記の式を入れたら エラーが出てしまいます。 レポートではうまくできたのですが、計算結果を表示させる方法を教えてください。 原価率を表示したいのです。 =Sum([取引台帳レポートのサブ出金予定入力表].[Form]![支払合計]/[入金台帳入力用].[Form]![取引合計])

  • サブフォームに複数検索機能を使用する

    はじめまして。 今卒業研究で顧客管理システムを製作しています。 つまづいてしまいどうにも作業が進まなくなってしまったので質問させてもらいます。 日付(テキストボックス、カレンダー表示)と時間帯(リストボックス)の二つの条件が合致した結果を出したいのですが、コマンドボタンで検索をかけるとすべての結果が出てしまいます。 フィルターをかけているのですが、参照の仕方が悪いのかと思い、いろいろ試しましたがうまくいきません。 [T予約マスタ]![来店日] Like '*' & [Form]![textbox] And [T予約マスタ]![時間帯] Like '*' & [Form]![listbox] 参照テーブル→[T予約マスタ] 日付のテキストボックス名前→[textbox] 時間帯のリストボックス名前→[listbox] とこのようになっています。 Access2010のマクロビルダーで製作しています。 まだまだAccessのことを理解できていません。 些細なことでもいいのでご指摘アドバイスお願いします。

専門家に質問してみよう