プロが教える店舗&オフィスのセキュリティ対策術

サブフォームにコンボボックスがあります。値集合ソースにクエリを指定しており、クエリの抽出条件でメインフォームのリストボックスの値を参照しています。
ところがなぜか、メインフォームのリストボックスを変更しても、それがサブフォームのコンボボックスに反映されません。どういうわけか、変更する前の値が反映されてしまいます。
ところがデータベースウィンドウからそのサブフォームを開くと、同じコンボボックスにメインフォームの変更がちゃんと反映されています。
メインフォームのリストボックスの更新後処理イベントでサブフォームのコンボボックスのリクエリを実行しています。
原因が分からず困っています。よろしくお願いします。

A 回答 (3件)

イベントの発生タイミングが


・・・・・・・AfterUpdate(Cancel As Integer) で有るべき処が・・・・

クリック間違いで
  ”更新前”担ってませんか?
・・・・・・・BeforeUpdate(Cancel As Integer)

今一度 プロシージャーで確認して見て下さい。

デバッグで 各変数の変わり方を 確認すれば 確実ですよ。

簡易的にな デバッグですが msgコメント で 変数の値をを表示するコードを書き込み
旨く機能すれば コードを消すか コメント行に変更しますと 解りやすいです。
    • good
    • 0
この回答へのお礼

お礼が遅くなり失礼いたしました。
とりあえず迂回的な方法で処理することにしました。
教えていただいた方法での確認もやってみようと思います。

お礼日時:2013/03/19 08:17

例えば・・・ 



Private Sub 選択日付_AfterUpdate()
Form![サブフォーム].Refresh

End Sub

Form名は 適時貴方の物にしないと なりませんが・・・・

コードを書くときに ”編集” より ”入力候補” を選択すれば 選択できる
オブジェクトや コマンド等が 簡単に表示されますので 試して見てください。

尚、Access のhelp は良くできてますので 独習には まず Help です。
”リフレッシュ”で間作すれば 詳細が表示されるとおもいます。
    • good
    • 0
この回答へのお礼

教えていただいた方法でやってみましたが、やはりメインフォームのリストボックスを変更するたびに一つ前のデータが反映されてしまいます。試験用のデータベースを作成して同じ操作を試してみたところ問題なく動きました。おそらくリレーションの設定に問題があるのではないかと考えています。

お礼日時:2013/03/05 23:19

Q>メインフォームのリストボックスの更新後処理イベントで ・・・・・


     >サブフォームのコンボボックスのリクエリを実行しています。

ではなくて
    >サブフォーム自体を リフレッシュ して見たら 如何でしょうか?
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。サブフォームのリフレッシュとは具体的にどういうコードになるのでしょうか?
Forms!FormA.FormB.refresh(FormA = main form, FormB = subform)とやってみましたがエラーになりました。

お礼日時:2013/03/05 18:33

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!