• 締切済み

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

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

みんなの回答

  • 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

  • Access2000のサブフォームで…

    今、サブフォームにデータを入力する時に、コンボボックスを使ってリストから入力させたいと思っています。 それで、サブフォームにコンボAとコンボBを作成しました。コンボAで選択した項目を条件として、コンボBのリストとして使用する値を抽出したいのです。 コンボAの更新後処理でコンボBを再クエリさせるVBAを組んでみたのですが、エラーメッセージが出て実行されません。 サブフォームを単独で表示させている時にはこのVBAが実行されるのに、親フォーム内のサブフォーム上では動かなくなってしまうんです。 どのたか、解決策を教えてください。お願いします!!

  • Accessのサブフォームについて

    Accessのサブフォームのテキストボックスをクリックするとメインフォームのテキストボックスにサブフォームのテキストボックスの値を反映させるために以下のロジックを組み込んだ所エラーが発生してしまいました。 調べてみても分かりませんでしたので解決方法が分かる方は教えて下さい。 よろしくお願いします。 ロジック Form!メインフォーム!テキストボックス=サブフォームのテキストボックス エラー 「指定した式で参照されている’メインフォーム’フィールドが見つかりません」 「コントロールがフォーカスを取得していないときに、コントロールのプロパティまたはメソッドを参照することはできません」

  • ACCESSのサブフォーム教えてください☆

    お世話になっております。 メインフォームではなくサブフォームの抽出方法で、コンボボックスでサブフォームのフィールド(例えば、商品名)を選択後、テキストボックスで文字列(例えば、ソフトクリーム)を指定して検索する方法です。メインフォームでのやり方は調べて(VBA)分かったのですがサブフォームは試行錯誤してやってみたのですがうまくいきません。 すみませんが、宜しくお願いします。

  • access2007でのサブフォームへの入力

    仕入入力画面なんですが メインフォーム(仕入伝票テーブル)サブフォーム(仕入伝票明細テーブル) という構成です。 メインフォームで 仕入先をコンボボックスで指定すると サブフォームの 商品を入力するコンボボックスに メインフォームで選択した仕入先で購入できる商品が選べるように したいのですが、どうすればよろしいでしょうか? メインフォームの仕入先コンボボックスを選択する度に サブフォームの商品コンボボックスで選択できる内容を反映させたい です。 仕入先A : 商品1 商品2 仕入先B : 商品3 商品4 商品5 仕入先C : 商品6 商品7 商品8 商品9 メインフォームで仕入先コンボボックスで仕入先Aを選択すると サブフォームで選択できる商品コンボボックスは商品1と商品2 メインフォームで仕入先コンボボックスで仕入先Bを選択すると サブフォームで選択できる商品コンボボックスは商品3と商品4と商品5 というようなイメージで作りたいです。 どうかよろしくお願いします。

  • Access コンボボックスについて

    フォーム1の中にコンボボックス1、 検索結果用のサブフォームを作りました。 コンボボックス1は日付抽出用で、 プロパティは 値集合タイプ・・・テーブル/クエリ にしてあり、 2005-01  ・  ・  ・ 2005-12 となります。 「すべて」検索したいときには、どのように設定したら 良いのかを教えていただけないでしょうか? よろしくお願いします

  • サブフォームを利用したクエリーの抽出条件について

    環境:ACCESS2003&XP Pro メインフォーム&サブフォームのフォームを作成しています。 このサブフォームにテキストボックスをつけ、このテキストボックスの値を抽出条件にしたクエリーを作成しましたが、抽出条件がうまくいかないようで クエリー実行時にパラメータを聞いてきます。 クエリーの抽出条件は forms![メインフォーム名].[サブフォーム名].[テキストボックス名] です。 上記の書き方がおかしいのだと思います。 よろしくお願いします。

  • access2007 サブフォームのエクスポート

    担当営業・売上月度別のデータを抽出用フォームを作成しました。 メインフォームでは担当を選択するためのコンボボックスと 売上月度を選択するためのコンボボックスを配置しています。 サブフォームはメインフォームで選択された条件の明細が 表示される設定となっています。 このサブフォームに表示された内容をエクセルにエクスポート させたいのですが、メインフォームにボタンを配置しても メインフォームの担当と売上月度の日付のみが エクスポートされるだけでサブフォームの内容がなに一つ エクスポートされません。 担当・。売上月度で抽出されたサブフォームの内容を エクスポートするにはどうすれば良いでしょうか? ご指導の程、宜しくお願い致します。

  • サブフォームでのテキストとコンボ連動について

    ACCESS2002でDBを構築している初心者です。 メインフォームに2つのサブフォーム(サブ1、サブ2)埋め込みを サブフォーム同士を連動させたフォームを作成中です。 2つのサブフォームのうちのサブ1にテキストボックスを基に コンボボックスでSQLを実行して抽出結果を コンボボックスに表示させています。 下記でaの値が変更されるとbにその値を送っています。 Private Sub a_AfterUpdate() DoCmd.Requery "b" Me!a.Requery End Sub その後bの値集合ソースでSQLを実行しております。 SQLの抽出条件「forms!サブ1!a」として、上記で取得した テキストボックスaを使用しております。 サブ1をメインフォームで開き上記を実行すると値を抽出します。 しかしサブフォームで実行した際に、「パラメータの入力」が 出てきて手動で入力しなくてはいけません。 サブフォーム上で実行する際に、イベントプロシージャや SQLの抽出条件を更新しなくてはならないのでしょうか。 お手数おかけいたしますが、ご教授よろしくお願いいたします。

  • ACCESSのサブフォームについて

    ACCESS-2000を使用しております。 リレーションシップを作成し、抽出されたデータをリストボックスに 表示されるようにしました。 そのリストボックスを他のフォームにサブフォームとして挿入し、 メインフォームとリンクをさせたいのですがこれは可能なのでしょうか? リストボックスに表示されるデータの元になっている2つのテーブルと、 リンクを張りたいメインフォームのデータテーブル(1つ)間にリレー ションシップを作成すればよいのでしょうか。 よろしくお願いいたします。

  • サブフォーム内の再クエリー

    メインフォームに仕入先コードのコントロールを配置し、サブフォームに商品コードがあります。 メインフォームの仕入先コード(コンボボックス)を選択した時に、サブフォームの商品コード (コンボボックス)に表示される商品を指定した仕入れ先の商品のみ抽出する為に 仕入先コードの更新後処理に再クエリを実行しているのですがサブフォーム内の商品コードが 更新されません。 再クエリのコントロールとして、サブフォームを指定してみましたが、やはり駄目でした。 どのように指定すれば、意図した動きになるのか、お分かりになる方がいましたら、 ご教授の程、お願いします。

専門家に質問してみよう