- ベストアンサー
ACCESS コンボの抽出の再選択時の設定
- ACCESSの入力フォームで非連結コンボAと連結コンボBを使い、Aで選んだ企業名によりBの選択肢をフィルターしています。
- 再度Aを変える際に、該当のレコード以外のレコードの企業名も変わってしまう問題があります。
- 表示されているレコードのみフィルターを有効にする方法はありますか?
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
帳票フォームですね 帳票フォームは複数のレコードを表示していますが 使われているコントロールは同じものです 従ってカレントレコードの都合のいいようにコントロールを変えてしまうと カレント以外のレコードの表示がおかしくなってしまいます これに対処するには表示用と入力用のコントロールを 分けてやらなければなりません しかしひとつのフィールドに対してコントロールが2つでは 分かりにくいものになってしまいますから 入力用コントロール(絞込をするコンボ)の上に 表示用のコントロール(絞込をしないコンボ)を重ね 表示用にエンターしたときに入力用にフォーカスを移動してやる というような仕掛けを作ります Private Sub 表示用コンボ_Enter() Me.入力用コンボ.SetFocus End Sub Private Sub 入力用コンボ_Enter() Me.入力用コンボ.Requery End Sub
その他の回答 (4)
- CHRONOS_0
- ベストアンサー率54% (457/838)
1回目の回答をよく読んでいただきましたか? オペレーターには一つしか見えないように2つを重ねておいて 入力時に入れ替えるようにするのですよ
- CHRONOS_0
- ベストアンサー率54% (457/838)
>コンボA=非連結 これはこのままでいいです コンボBを2つにします コンボB表示用 連結:絞込なし コンボB入力用 連結:絞込あり コンボB入力用の絞込実行はコンボA変更時でなく コンボBフォーカス取得時に行なっています (変更時でもいいですが、その必要がないため)
補足
ありがとうございます。 2つにすると、正しいものが表示されることは知っているので、使ったりしています。 ただ、これだとACCESSをよくしらない入力者に「なんで?」と聞かれることが多いので、2つ表示しない方法を探しています。 実質無理なのでしょうか?
- CHRONOS_0
- ベストアンサー率54% (457/838)
>コンボにターゲットが合わなくなってしまいました。 どういうことでしょう どちらのコンボも連結コントロールにするのですよ 絞込をしない方から入力出来ないという意味なら その必要はないはずですよね >絞込み自体が出来なくなってしまうのですが 絞込はどのようにしているのでしょう コンボのソースをくえりにしているのじゃないのですか VBAで絞込をしているのならソースをクエリに変えてください
補足
えっと、絞込み大前提なのですが… コンボA=非連結 …こちらを一つ選ぶとコンボBにフィルタがかかる コンボB=連結 …[forms]![入力フォーム]![コンボA]がSQLステートメント:クエリビルダ に入っている。 1、Aを選ぶとBの選択肢が変わる。←クエリ 2、Aを選びなおすとBも選びなおされる。←VBA コレが基本です。AもBも使えないと意味がないのです。 この状態で、2の作業をしたときに、過去のレコードのフォーム上でも再選択のために変わってしまうので、変わらないようにしたいというのが質問事項です。 コンボを連結にすると、うまくフィルタがかからないので、非連結にしてあります。 連結にする場合のフィルタの掛け方を教えてください。
- miwaharu
- ベストアンサー率25% (29/112)
こんにちは、違ったらすみません それは、該当レコード以外が変わるのではなくて、 リクエリーした、(コンボAを変更した)レコードの 内容に変わるからではないでしょうか。 これを解消するには、レコード移動時のイベントに Me!支店名.Requery を記載して、レコードを移動するたびに リクエリーする必要があると思います
補足
ご回答ありがとうございます。 >該当レコード以外が変わる のではなく、該当レコードを含めた全てが変わってしまうんです。 実際にテーブルを確認して保存されているデータは正しいものですが、フォーム上で見え方が変わってしまうのはちょっと気持ち悪いので。。。 上記の方法もやってみましたが、現状変わらず、でした。
補足
ご回答ありがとうございます。 上記のようにしてみたところ、コンボにターゲットが合わなくなってしまいました。 片方は変えられるのですが、もう片方は変更が出来なくなります。 これでは、絞込み自体が出来なくなってしまうのですが、なにか良い方法はありませんでしょうか?