プロが教えるわが家の防犯対策術!

ACCESSの一覧表示しているフォームで、検索条件を設定させ、その検索条件よりApplyFilteを使って、データ絞込みをしています。
データがある場合はうまく動作するのですが、該当データがないと、その後、検索条件を変更しても、検索条件のコンボボックスに値が表示されなくなります。
でも、認識はしているようで、デバッグで見ると値が入っているし、再度検索して、該当データがある場合は、また検索条件のコンボボックスが表示されるようになります。

何かつくりが悪いのでこのように動作するのでしょうか?
もしくはデータが存在しない場合に何か別のことをするようにするなど、回避する方法があれば教えてください。

お願いします。

A 回答 (3件)

状況が分からないので対症療法的ですが



If Dcount(Filter条件・・) = 0 Then
MsgBox "No Records!", vbOKOnly
Me.FilterOn = False
End If
とか?
    • good
    • 0
この回答へのお礼

ありがとうございました!!

状況よくわからないですよね。
すみません・・

でも、この方法で、0件の時は、表示しないように回避させました。

お礼日時:2006/04/28 13:20

Filterに値をセットする前にフィルターの初期化を


Me.Filter = ""
として行いそれから抽出条件をセットして
Me.FilterOn = True
でFilterを実行。
>データが存在しない場合に何か別のことをするようにするなど、回避する方法
抽出レコードが無いときの処理は
If Me.Recordset.RecordCount = 0 Then
などでやっているのでしょうか?
レコードが無い場合の処理に
Me.Filter = False
Me.FilterOn = True
とすれば何も表示されません。
同様に
Me.FilterOn = False
で全レコードが表示されます。
    • good
    • 0
この回答へのお礼

すみません。
うまく状況が伝わっていないようでした・・

レコードがない場合に条件設定のコンボがおかしくなるんです。

If Me.Recordset.RecordCount = 0 Thenなど何もいれていません。

回答ありがとうございました!

お礼日時:2006/04/28 13:22

もしかして・・


コンボボックスのコントロールソースにフォームのレコードソースの何かを指定してるとか?

コンボボックスのプロパティにて、
コントロールソースに何か記述が有れば削除して空欄にします。
値集合タイプへ、テーブル/クエリ
値集合ソースへ、SELECT フィールド名1,フィールド名2 FROM テーブル名など; のSQL文
(あるいは[・・・] ボタン(▼ボタンの右隣)を押して作成)
連結列へ、・・・・・適宜指定してください。

これでコンボボックスは非連結コントロールになりますので
フォームのフィルターとは連動しません(常に全てのレコードが出ます)

見当はずれかも?
    • good
    • 0

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