• 締切済み

アクセスのサブフォームでのトラブル

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

みんなの回答

  • 007MUKADE
  • ベストアンサー率41% (286/694)
回答No.3

イベントの発生タイミングが ・・・・・・・AfterUpdate(Cancel As Integer) で有るべき処が・・・・ クリック間違いで   ”更新前”担ってませんか? ・・・・・・・BeforeUpdate(Cancel As Integer) 今一度 プロシージャーで確認して見て下さい。 デバッグで 各変数の変わり方を 確認すれば 確実ですよ。 簡易的にな デバッグですが msgコメント で 変数の値をを表示するコードを書き込み 旨く機能すれば コードを消すか コメント行に変更しますと 解りやすいです。

snorioo
質問者

お礼

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

  • 007MUKADE
  • ベストアンサー率41% (286/694)
回答No.2

例えば・・・  Private Sub 選択日付_AfterUpdate() Form![サブフォーム].Refresh End Sub Form名は 適時貴方の物にしないと なりませんが・・・・ コードを書くときに ”編集” より ”入力候補” を選択すれば 選択できる オブジェクトや コマンド等が 簡単に表示されますので 試して見てください。 尚、Access のhelp は良くできてますので 独習には まず Help です。 ”リフレッシュ”で間作すれば 詳細が表示されるとおもいます。

snorioo
質問者

お礼

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

  • 007MUKADE
  • ベストアンサー率41% (286/694)
回答No.1

Q>メインフォームのリストボックスの更新後処理イベントで ・・・・・      >サブフォームのコンボボックスのリクエリを実行しています。 ではなくて     >サブフォーム自体を リフレッシュ して見たら 如何でしょうか?

snorioo
質問者

お礼

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

関連するQ&A