- 締切済み
アクセスのサブフォームでのトラブル
サブフォームにコンボボックスがあります。値集合ソースにクエリを指定しており、クエリの抽出条件でメインフォームのリストボックスの値を参照しています。 ところがなぜか、メインフォームのリストボックスを変更しても、それがサブフォームのコンボボックスに反映されません。どういうわけか、変更する前の値が反映されてしまいます。 ところがデータベースウィンドウからそのサブフォームを開くと、同じコンボボックスにメインフォームの変更がちゃんと反映されています。 メインフォームのリストボックスの更新後処理イベントでサブフォームのコンボボックスのリクエリを実行しています。 原因が分からず困っています。よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- 007MUKADE
- ベストアンサー率41% (286/694)
イベントの発生タイミングが ・・・・・・・AfterUpdate(Cancel As Integer) で有るべき処が・・・・ クリック間違いで ”更新前”担ってませんか? ・・・・・・・BeforeUpdate(Cancel As Integer) 今一度 プロシージャーで確認して見て下さい。 デバッグで 各変数の変わり方を 確認すれば 確実ですよ。 簡易的にな デバッグですが msgコメント で 変数の値をを表示するコードを書き込み 旨く機能すれば コードを消すか コメント行に変更しますと 解りやすいです。
- 007MUKADE
- ベストアンサー率41% (286/694)
例えば・・・ Private Sub 選択日付_AfterUpdate() Form![サブフォーム].Refresh End Sub Form名は 適時貴方の物にしないと なりませんが・・・・ コードを書くときに ”編集” より ”入力候補” を選択すれば 選択できる オブジェクトや コマンド等が 簡単に表示されますので 試して見てください。 尚、Access のhelp は良くできてますので 独習には まず Help です。 ”リフレッシュ”で間作すれば 詳細が表示されるとおもいます。
お礼
教えていただいた方法でやってみましたが、やはりメインフォームのリストボックスを変更するたびに一つ前のデータが反映されてしまいます。試験用のデータベースを作成して同じ操作を試してみたところ問題なく動きました。おそらくリレーションの設定に問題があるのではないかと考えています。
- 007MUKADE
- ベストアンサー率41% (286/694)
Q>メインフォームのリストボックスの更新後処理イベントで ・・・・・ >サブフォームのコンボボックスのリクエリを実行しています。 ではなくて >サブフォーム自体を リフレッシュ して見たら 如何でしょうか?
お礼
ご回答ありがとうございます。サブフォームのリフレッシュとは具体的にどういうコードになるのでしょうか? Forms!FormA.FormB.refresh(FormA = main form, FormB = subform)とやってみましたがエラーになりました。
お礼
お礼が遅くなり失礼いたしました。 とりあえず迂回的な方法で処理することにしました。 教えていただいた方法での確認もやってみようと思います。