• 締切済み

アクセスVBについて

メインフォームA(非連結) F_main上に コマンドボタンA cmd_AとサブフォームB(クエリに連結しておりメインフォームAとリンクはなし) sbf_Bがあります。 sbf_Bには連結したクエリのフィールドに対応するコンボボックスやテキストボックス が配置されフォームフッターには合計金額等sbf_Bのレコードのフィールドの合計を 表示するテキストボックス txt_total に演算式 (=sum([field])) と 同様にsbf_Bのレコードに対してフィルタを実行するドグルボタン dgl_filterがあります。 F_main.cmd_Aをくりっくすると サブフォーム上のtxt_totalの値を取得する。 その際にsbf_Bのフィルタが実行状態(dgl_filterが押された状態)の場合は 強制的に外してtxt_totalの値を取得したい。 以下のコードで実行すると..... ************************************ メインフォーム上のコマンドボタンAをクリック Private Sub cmd_A_Click() モジュールA.プロシージャA End Sub ************************ ***************************** sub プロシージャA dim myTotal as long rem サブフォームBのフィルタ解除して値を取得 with forms("F_main").sbf_B.Form .FilterOn=false .dgl_filter.value=0 myTotal=.txt_total end with msgbox myTotal end sub **************************** 実際の振る舞い dgl_filterが押されていない状態でcmd_Aをクリックすると メッセージボックスは値を取得するが dgl_filterが押されているとメッセージボックスの値が空白になる こうした動きになる理由を教えてほしかったのですが 分る方いるでしょうか? フィルタをオンオフ直後に値が取得できない理由 もしくは理由はなくそういった仕様なのか? 補足 あっアクセス2002です。

みんなの回答

回答No.1

.FilterOn=false でフィルターのオンオフを切り替えても、テキストボックスは更新されないので myTotal=.txt_total でテキストボックスの値を取得する前に .Requery で、サブフォームを更新してみて下さい(試してないので、これで上手く行くとは限りません) sub プロシージャA dim myTotal as long rem サブフォームBのフィルタ解除して値を取得 with forms("F_main").sbf_B.Form .FilterOn=false .dgl_filter.value=0 .Requery myTotal=.txt_total end with msgbox myTotal end sub

すると、全ての回答が全文表示されます。

関連するQ&A