質問: Microsoft365同梱のACCESSを使用しております。 今、サブフォームに一覧表示した請求明細金額の合計を、メインフォームの合計金額を表示するテキストボックスに代入する埋め込みマクロでつまづいています。 メインフォームのテキストボックス「請求金額合計」は、テーブルAのフィールド「請求金額」をコントロールソースとし、請求書1件の合計金額を表しております。 サブフォームのテキストボックスは、テーブルBの「明細金額」をコントロールソースとし、請求明細の要素となる金額データをテキストボックス「請求明細金額」に帳票形式で一覧表示しています。 なお、テーブルAとテーブルBは「入力番号」というフィールドでリレーションしていて、「1対多」の関係です。 サブフォーム内には非連結のテキストボックス「請求明細金額合計」を作って、請求明細の要素を合計した金額を、 関数式 =Sum([請求明細金額]) で計算表示しています。 したがって、サブフォームのテキストボックス「請求明細金額」に数字を入れると、この関数式には合計金額がリアルタイムで表示されています。 つぎに、埋め込みマクロをサブフォームのテキストボックス「請求明細金額」に次のように仕込みました。 更新後処理としてのマクロ 再クエリ コントロール名[請求明細金額合計] -----------> 非連結の関数式入りボックス 値の代入 アイテム=[Forms]![F_請求内容]![請求金額合計] -----------> メインフォームのボックス 式=[請求明細金額合計] ここまでが現状における仕掛けです。 さて、新規に請求書を起票するため、メインフォームとサブフォームに必要事項と明細金額を入力する場合、 明細1 10,000 と入力すると関数式「請求明細金額合計」は「10,000」と表示しますが メインフォームの請求金額合計は「0」のままです。 つぎに 明細2 20,000 と入力すると関数式は「30,000」と表示しますが、 メインフォームの請求金額合計は「10,000」となり、明細1の金額を表示します。 つぎに 明細3 30,000 と入力すると関数式は「60,000」と表示しますが、 メインフォームの請求金額合計は「30,000」となり、明細1+明細2の金額を表示します。 つぎに 明細3の 30,000 を消去、または「0」と修正すると メインフォームの請求金額合計は「60,000」となり、明細1+明細2+明細3の金額を表示します。 つまり、サブフォームの入力履歴のひとつ前の計算結果がメインフォームに表示されるのです。 これは一体どういうことなのでしょうか。
回答: 再クエリ を計算前では無く計算後に行うようにしてお試し下さい。 それでダメなら再クエリに似た意味の処理が他に3つほど有ったと思います、 全てを試してみて下さい。