• ベストアンサー

Access2000での複数条件での検索

http://www.okweb.ne.jp/kotaeru.php3?q=351587でも質問したのですが、色々考えたあげくにやっぱりもう一度質問することにしました。 フォームにcbo検索ビル区分、cbo検索テナントコード、btn検索…etcがあります。 cbo検索ビル区分である数字が選ばれたときのみcbo検索テナントコードのプルダウンに数値が現れるようにしたいのです! テーブル(テナントマスタ) ビル区分 テナントコード ---------------------- 01 100 01 101 02 100 02 101 02 103 このときcbo検索ビル区分で01が選ばれたらcboテナントコードには100と101がリストにでるようにしbtn検索をクリックされたらそのレコードを表示させたいのです。  もし仮に先にcboテナントコードのリストを開けた場合は何も表示されないようにしたいのです!  しかしMe.cbo検索テナントコード.Enabled=Falseとしたいわけではありません。使えるけども値はない状態にしたいのです。 どのように文章を書けばうまく伝わるかわからないので、わかりにくければ質問してください!よろしくお願いします

質問者が選んだベストアンサー

  • ベストアンサー
  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.2

こんにちは。maruru01です。 cbo検索ビル区分が未選択の場合は、cbo検索テナントコードのRowSourceプロパティに""をセットすればいいと思います。 ***** フォームのLoadイベントなどで ***** Me!cbo検索テナントコード.RowSource = "" (代わりに、デザイン時にcbo検索テナントコードのプロパティ[値集合ソース]に""をセットしておいてもいい。) ***** cbo検索ビル区分のChangeイベントに ***** If IsNull(Me!cbo検索ビル区分) Then   Me!cbo検索テナントコード.RowSource = "" Else   Me!cbo検索テナントコード.RowSource = "SELECT テナントコード FROM テナントマスタ WHERE ビル区分 = '" & Me!cbo検索ビル区分 & "'" End If

その他の回答 (1)

  • Te-Sho
  • ベストアンサー率52% (247/472)
回答No.1

マスタの持ち方の構成が分からないのですが... ビル区分もテナントコードもコンボで良いんですよね。 ビル区分の値集合ソースはビル区分のマスタかテナントマスタを集計したクエリを選択するか...を押しクエリービルダより作成すれば良いですね。前者ではテナントマスタに登録されていないビル区分も出力する仕様で、後者はテナントマスタに登録されているビル区分を出力するような仕様の場合です。 次にフォームのテナントコードのコントロールに対する値集合ソースで...ボタンを押しクエリービルダを起動、ビル区分とテナントコードとドラッグアンドドロップで対象にしてビル区分の表示のチェックボックスを外します。次にビル区分の抽出条件で右クリックを押しビルドを選択、フォームより辿っていってビル区分を選択します。 そうすればビル区分のコントロールを抽出条件としたクエリーがテナントコードのコントロールの値集合ソースに設定されるはずです。 あとは、ビル区分のイベント「更新後処理」でVBAを使用しテナントコードのコントロールをRequeryするだけです。 そうすれば、検索ボタンを使用しなくても値が変わるだけで抽出表示出来ますね。 もし検索ボタンが必要ならボタンが押されたらVBAでテナントコードのRowSourceにSQLをセットしてRequeryと言う手も有ります。その時にビル区分の値をチェックすれば空の時には表示しないとか色々出来ますね。 こうすればビル区分が何も選択されてないときにはテナントコードは何も表示されなくなります。