• ベストアンサー

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と言う手も有ります。その時にビル区分の値をチェックすれば空の時には表示しないとか色々出来ますね。 こうすればビル区分が何も選択されてないときにはテナントコードは何も表示されなくなります。

関連するQ&A

  • Access2000での複合検索について

    コンボボックスを使い検索をしたいと考えております! 名前は テーブル1:ビル区分マスタ←フィールド:ビル区分、ビル名 テーブル2:テナントマスタ←フィールド:ビル区分、テナントコードetc…があります コンボボックス:cbo検索ビル区分、cbo検索テナントコード コマンドボタン:btn検索 cbo検索ビル区分に01,02があり、例えば01を選んだときcbo検索テナントコードにビル区分が01のテナントコードを出したいのです!そしてbtn検索をクリックするとフォームにそのデータを出したいのです! こんな文章じゃわかりにくいかとも思われますが、よろしくお願いします!!もんすごい初心者です!

  • Access2000での複合検索再び

    http://www.okweb.ne.jp/kotaeru.php3?q=361223 でも質問したのですが、今になってから新たなことが判明しました… ビル区分 テナントコード ----------------------    01    100    01    101    01    102    02    100    02    101    02    103 テナントコードがダブっていないもの、例えば01、102であれば問題なく動作するのですが、ダブっている場合表示されません… 01、100も02、100のときもどちらも検索できるようにしたいのですがどうすればいいですか? 今のコードは Private Sub btn検索_Click() Dim rs As Recordset Set rs = Me.RecordsetClone -------------------------------------------------- rs.FindFirst "[テナントコード]='" & Me![cbo検索テナントコード] & "'" Me.Bookmark = rs.Bookmark cbo検索ビル区分 = Null cbo検索テナントコード = Null Me.Filter = "ビル区分 = '" & Me!cbo検索ビル区分 & "' AND テナントコード = '" & Me!cbo検索テナントコード & "'" -------------------------------------------------- End Sub です。お願いします

  • Access2000の重複チェック

    現在あるデータとあるフィールド内において値が重複してある場合こちら側からエラーを出したいのですがどうすればいいですか? テーブル名:テナントマスタ フォーム:txtビル区分、txtテナントコード、…etc テナントマスタ ビル区分 テナントコード ----------------------- 01 100 01 101 02 102 02 103 ここに新たにフォーム上でビル区分、テナントコードを入力し、この値がそれぞれ01、101だったときbtn登録をクリックしたときこちらからエラーをだしたいのです! どうかよろしくお願いします!!

  • Access2000での更新の仕方

    テーブル(歩率マスタ、ワークテーブル)があり、フォーム(テナントマスタ←これにbtn前のレコード、btn次のレコード、btn修正、btn新規、btn歩合入力…etcのコマンドボタンがある。歩率入力(歩合入力にサブフォームとしてsub歩率入力が張り付いている))サブフォームで規定金額、歩率を入力しそれをいったんワークテーブルに格納しておき、テナントマスタで修正ボタンをクリックされたら時点で部率マスタに登録できるようにしたいんです。またそれぞれのビル区分とテナントコードに一致するものを呼び出したいのです!当然、新規ボタンをクリックされたときはサブフォームの規定金額、歩率は空です! あと注文としてはこれをSQL文でできるみたいなのですが これを使って教えてくださると大変ありがたいです! よろしくお願いします!! ど素人なんてゆってることがわからないとこがあるかと思いますが、なんなりとご注文つけてください!! 歩率マスタ:ビル区分、テナントコード、規定金額、歩率 ワークテーブル:規定金額、歩率

  • Accessのコンボボックスでの検索について2

    コンボボックスが2つあり、cbo回線区分でAAを選択するとcbo名称にはAA条件クエリの名称フィールドの名称が表示され、名称を何か選択すると、AA条件クエリの中から一致するレコードが抽出され、またcbo回線区分でBBを選択するとcbo名称にはBB条件クエリの名称フィールドが表示されBB条件クエリの中の一致するレコードを抽出しにいくということは出来ますでしょうか? わかりにくい説明ですいませんが、コンボボックスにより検索したいクエリを切り替えることは出来るかということなんですが。。。 コンボボックス名 cbo回線区分、cbo名称 クエリ名 AAクエリ、BBクエリ 色々試してはいるんですがうまく行かないので、ご教授願います(If Else・・・を使ったんですが間違いでしょうか?)

  • アクセス 抽出条件が一致したらフォームを開く

    教えてください! フォームを「開くとき」イベントに、以下のコードを書きました。 Private Sub Form_Open(Cancel As Integer) Me!コマンド24.Enabled = False End Sub そのフォームの中には、以下のふたつ(a,b)と、コマントボタン「コマンド24」があります。 a:テキストボックス「当月の名前」『コントロールソースに、=DatePart("m",Date())を設定』 b:コンボボックス「月」『リスト値で、4,5,6,7,8,9を設定』月 そして、aとbの数値が一致した時に、検索ボタンを使用可能にする というコードを書きました。(というか、書いたつもりです) Private Sub 月_AfterUpdate() If (Me!当月の名前) = (Me!月) = True Then Me!24.Enabled = False Else Me!コマンド24.Enabled = True End If End Sub ですが、数値が一致しなくても、検索ボタンどうも、うまくいきませんでした。 このコードのどこが間違っているのでしょうか?

  • ACCESS 選択クエリでの抽出条件について

    在庫マスターと得意先マスターのテーブルを使用して 在庫マスターのデータを抽出条件により出力したいと思っています。 在庫マスターは区分コード1の倉庫コードと区分コード3の店舗コードと分かれており、 抽出条件は区分コード1の時は倉庫コード199と155は除きます。 区分コード2の時は得意先マスターの形態コードから"1"と"2"のものを抽出します。 デザインビューでクエリ作成するで選択クエリから抽出条件を入力してデータを出力できないのでしょうか。 色々と試していますがエラーが表示され出力できません。 例) If([ST_WHTYPE]="1",([dbo_STOCK].[ST_WHNO]) Not In ("199","155"), IIf([ST_WHTYPE]="3",[CU_SHOPTYPE]="1" Or [CU_SHOPTYPE]="2")) この場合は集計関数・・・・・含んでないクエリーを実行しましたと表示されます。 他には複雑すぎるため評価できませんとかエラーが表示されます。 選択クエリでの抽出条件ではできないのでしょうか。

  • フォーム上での複数条件での抽出ができません

    工事の発注した年度と月をコンボボックスでそれぞれ入力した値で 抽出したいと思いましたが、なかなかうまくいきません。 Private Sub 抽出ボタン_Click() Me.FilterOn = False '抽出ボタンをクリックしたらcbo年度コードの値でフィルターをかける Me.Filter = "年度 = " & Me![cbo年度] And "発注予定 = " & Me![cbo月] 'フィルターを実行します。 Me.FilterOn = True End Sub 別のプロシージャで年と月を別々に抽出することはできたのですが、 「○年のさらに○月の工事」と絞り込むことができずに困っています。 このプロシージャを実行すると、以下のエラー分が表示されます。 ========================= 実行時エラー '13': 型が一致しません。

  • access 検索フォームで検索が出来ない(コードについて)

    accessにて、薬の在庫管理DBを構築しています。 「薬剤名」で検索をし、フォーム上に表示させたいと思っていますが、 コード記述をしても検索出来ず、かれこれ2~3週間悩み続けております。 一人で四苦八苦しながら作って居るため、 原因が良く分からず、質問させて頂きます。 よろしくお願い致します。m(__)m 視覚的に説明します。              f_薬剤マスター ~フォームヘッダ~ 非連結のtxt 「薬剤検索」    「検索」ボタン     ※2つがあります ~詳細~ 「薬剤ID」 「薬剤区分ID」「薬剤区分名」 「薬剤名」 「包装内容」 「包装量」 「単位」「適用チェック」 とあります。 フォームヘッダの検索ボタンのイベントプロジーシャに Private Sub コマンド20_Click() Me.Filter = "[薬剤名] Like '*" & Me!薬剤検索 & "*'" Me.FilterOn = True End Sub と記述をしていますが、薬剤名を入れて、コマンドボタンを押しても検索がかけられません。 この「f_薬剤マスター」をメインフォームとして、 サブフォーム 「f_仕入れマスター」と 「f_価格マスター」と 言う順で2つ連結させていますがその関係もあるのでしょうかせいなのでしょうか? 尚、この3つのフォームのリレーションは t_薬剤マスター → t_仕入れマスター → t_価格マスター と、いづれも 1対多 でリレーションを組んでいます。 初心者の為何がおかしいのか良くわかりません。 どなたかご教授の程お願い致します。m(__)m

  • Access テーブル内検索を教えてください。

    いつもお世話になっております。今回、また皆様のお知恵をお貸しいただきたく思います。 検索対象テーブル:社員マスタ(ユニオンクエリ)複数件 検索値:画面リストボックスより入力された部署コード・BUSYO 処理内容:社員マスタの部署コードに入力値BUSYOが一致している データに【更新処理:(仮)INSERTクエリ】を実行したい。 DLookup()や、FindRecord を調べましたが私の技力は限界です。 どうか、ご教授お願いします。 ■コード(実際チャレンジした一部です。) 'str検索条件を条件にバンドIDをT_メンバーテーブルから検索する strBusyo = DLookup("[部署コード]", "qry_社員マスタ", BUSYO) '結果のテスト表示 If strBusyo = "" Then  MsgBox BUSYO& "は、見つかりませんでした" Else  qry_社員マスタから条件に合致したデータをテーブルにInsert  DoCmd.OpenQuery "qry_追加処理"  DoCmd.FindRecord strBusyo 'データを検索する  DoCmd.GoToControl "[部署CD]" 'コントロールを[部署CD]へ移動 End If