• 締切済み

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

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

  • jinah
  • お礼率40% (118/291)

みんなの回答

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

再びmaruru01です。 >全部で6種類の回線区分からの各月別テーブル テーブルのデザイン(フィールドの数と種類)は回線区分ごとに違うのでしょうか? また、各月別にテーブルを作っているのでしょうか。それらもやはり、テーブルのデザインは同じじゃないですか? もし、テーブルデザインが同じなら、1つのテーブルに統合した方がずっと簡単で管理し易いと思います。 そうすれば、cbo名称のリストについても、値集合ソースに、 "SELECT 名称 FROM テーブル名 WHERE 回線区分 = '" & Me!cbo回線区分.Value & "'" にすればいいですし、 新しいフォームを開いて抽出したデータを表示させるなら、そのフォームのレコードソースに、そのテーブルを設定しておき、 DoCmd.OpenForm "フォーム名", , , "回線区分 = '" & Me!cbo回線区分.Value & "' AND 名称 = '" & Me!cbo名称.Value & "'" とすればいいだけですから。(No.2にも書きましたが。) データテーブルは出来るだけ分割しない方がいいと思いますよ。

jinah
質問者

補足

大変申し訳ありません。テーブルのデザイン(フィールド数)は各回線区分によって違うのです。また相手先からいただくデータも回線別、更に月別となっているため私のほうではクエリでA回線の3月4月を合わせたクエリを作成しています。 テーブルだと簡単なんですけど、最終的にレポートで請求書を作成するのに、細かく分けての請求になるので。。。

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

こんにちは。maruru01です。 まず、2つのコンボボックスで段階抽出するのは、 cbo回線区分のChangeイベントに、 If Me!cbo回線区分.Value = "AA" Then   Me!cbo名称.RowSource = "AAクエリ" ElseIf Me!cbo回線区分.Value = "AA" Then   Me!cbo名称.RowSource = "BBクエリ" End If で出来ます。 ところで、2つのクエリはぜんぜん違う内容ですか? もしかして、同じテーブルから回線区分によって条件抽出してるだけじゃないですか? それなら、もっと簡単に、cbo名称の値集合ソースに、 "SELECT 名称 FROM テーブル名 WHERE 回線区分 = '" & Me!cbo回線区分.Value & "'" とするだけでいいですが。 あと、レコードの抽出先はどこですか。 現在のフォームに表示されているデータを絞り込む(フィルタリング)のなら、 Me.RecordSource = "AAクエリ" Me.Filter = "名称 = '" & Me!cbo名称.Value & "'" Me.FilterOn = True とすればいいし、新しくフォームを開くなら、そのフォームのLoadイベントに、 Me.RecordSource = "AAクエリ" Me.Filter = "名称 = '" & Me!cbo名称.Value & "'" Me.FilterOn = True とすればいいです。 (もちろん、クエリ名はcbo回線区分によって変えられるようにします。) ただし、1つのテーブルから、回線区分と名称で抽出しているだけなら、そのフォームのレコードソースにそのテーブルを設定しておき、 DoCmd.OpenForm "フォーム名", , , "回線区分 = '" & Me!cbo回線区分.Value & "' AND 名称 = '" & Me!cbo名称.Value & "'" でフォームを開けばいいですが。

jinah
質問者

補足

回答ありがとうございます。 テーブルは月別の回線区分になっています。 3月A回線区分、4月A回線区分 3月B回線区分、4月B回線区分・・・・と全部で6種類の回線区分からの各月別テーブルです。 時間がかかってしまいますが回答頂いた方法でやってみます。またご不明な点はご教授願います。

回答No.1

こんにちは おみうけしますに、要するに表示される結果をクエリ毎にしたい のだと思います。ですからそれぞれのクエリに対するサブフォームを 作成し表示を切り替えれば実現できるのではないでしょうか。 AAクエリ、BBクエリそれぞれをコントロールソースとする フォームを作成。 コンボボックスがあるフォームにサブフォームとして貼り付けます 可視プロパティを"いいえ"にしておきます cbo回線区分で選択された時の[イベント プロシージャ]で with AAフォーム    If .Visible = True Then .Visible = False Else .Visible = True End If end with with BBフォーム    If .Visible = True Then .Visible = False Else .Visible = True End If end with で表示を切り替えます これでどうでしょうか?

jinah
質問者

補足

回答ありがとうございます。 私が回線区分は6つあるですが、やなり6回IF Elseを繰り返さないといけないのでしょうか?何か簡潔な方法がありましたらご教授願います。初心者で本当にすいません

関連するQ&A

  • Access2000 コンボボックス内の並べ替え

    フォーム上で指定した条件で選択クエリを作り、クエリのデータを フォーム上のコンボボックスに表示するようにしました。 (選択クエリのフィールド:   「ID」、「名称」、「条件(指定の状況により数が変わる)」) 選択クエリを見ると「ID」が昇順で並んでいるのですが、 フォームのコンボボックスは「名称」が昇順で表示されます。 コンボボックス上でも「ID」が昇順になるようにするには どうすればよいのでしょうか? よろしくお願いします。

  • ACCESS2000フォームでコンボボックスを使ったクエリーを作成したい

    ACCESS2000でデータベースを作成しています。 どなたか教えてください!! 検索フォームというのを作り、そこには「部」「課」「掛」を 選択できるようにテーブルを参照してコンボボックスを作成しました。 それぞれの項目を選択した後、「検索」ボタンを押すと コンボボックスから選んだ値と一致するレコードだけを抽出して表示させたいんです。 クエリは何となく作ったのですが、現在は全てのデータが抽出されてしまいます。 条件を一切入力していない状態なんです。 検索条件に"総務部"などと入力すればそのデータだけ抽出 されるようにはなっています。 でも、でも・・・「コンボボックスで選んで値と一致したら」抽出っていう条件をどうやって設定していいかわからないのです。 どうぞよろしくお願いします。

  • アクセス チェックボックスとクエリ

    いつもお世話になっております。アクセス初心者です。 あるフォームのチェックボックスのオンオフとコンボボックス、 クエリの選択条件が思うように連携できなくて困っています。 やりたいことは、、、フォームのチェックボックスが、 ON(True)ならば、 フィールドにコンボボックスのキーワードを含むレコードおよびフィールドが空白のレコードを抽出し、 OFF(False)ならば、 フィールドにコンボボックスのキーワードを含むレコードのみでフィールドが空白のレコードは抽出しない、 としたいのですが…。 IIfやSwitchで式を書きましたが、チェックを入れても外しても、どちらも抽出件数が0件になります。 クエリの実行は、コマンドボタンで別のフォームを開いています。 (IIfでは、エラーが出ているのか、チェックを入れた時『~キャンセルされました』と出ます。  IIf(…,…,IIf(…,…,…)) という感じで書きました。) Switchの時のクエリの抽出条件の式は、次のような感じです。 Switch([Form]![チェックボックス]=True,([テーブル名].[フィールド名]) Like "*" & [Form]![コンボボックス] & "*" Or Is Null,[Form]![チェックボックス]=False,([テーブル名].[フィールド名]) Like "*" & [Form]![コンボボックス] & "*") ( Like の前の『([テーブル名].[フィールド名])』は、式をビルドすると、勝手に追加されてきます。) このようなことはできないのでしょうか? 別の方法が必要でしょうか? すみませんが、教えてください。宜しくお願い致します。

  • Accessのコンボボックスの値が消える

    お伺いいたします Accessのフォーム(フォーム請求実績)上に置いたコンボボックスで ユーザーリスト(テーブル)から目的のデータを 選択出来るように設定していますが、 目的のデータをクリックすると、コンボボックスに一瞬、表示された後、消えて空欄になります。 目的のデータ(販売先名)で販売実績表(クエリ)の中の販売先別のデータを抽出(Filter)させていますが目的のデータの抽出はできるのですが、 コンボボックスの表示が消えるので困っています。 因みに、請求実績データ(選択クエリ)の販売店フィールドの抽出条件欄には [forms]![フォーム請求実績]![コンボボックス1]で 抽出するようにしています。 ぐだぐだと長い説明で解りにくいと思いますが要は コンボボックスのデータを選択してもコンボボックスに表示されないのです。 こんな経験された方よろしくアドバイスお願いいたします。

  • アクセスコンボボックスで教えてください。

    アクセス初心者です。 設備の修理情報を登録する、簡単なデータベースを作成しています。 修理履歴テーブル  修理ID(オートナンバー)  発生日  設備No.  実施区分ID 実施区分テーブル  実施区分ID  区分名       001     実施済    002     未実施 実施区分IDはリレーションシップを組んでいます。 その他、修理履歴テーブルを基に、修理履歴クエリを作成、 情報を登録するフォームを作成しました。 基になるクエリを修理履歴クエリにし、デザインビューで 修理履歴を閲覧することができるフォームを作成、 実施区分は、実施済・未実施とを選択できるように コンボボックスで作成、表示することができました。 しかし、完成後、あるレコードのコンボボックスで未実施を選択後フォームを閉じ、次にまたそのフォームを開くと、実施済の全レコードが未実施表示になってしまいます。 また、実施区分テーブルの区分名、実施済が未実施に変わってしまっています。 どのようにしたら、選択したレコードだけ、未実施表示にし、実施区分テーブルの区分名も変らずに済むのでしょうか? よろしくお願いします。

  • Accessで「キーワード検索」をしたい

    前任者が作ったデータベースを触っています。 私自身はAccessの基本操作がわかるくらいでVBAとかはよくわかりません。 今回その修正がしたいと思っています。 検索用フォームがあり、現在3つのコンボボックスがあってそれを選択して 「検索開始」をしています。 今回、その検索用フォームに「キーワード検索」というテキストボックスを1つ追加したいです。 検索の対応となるフィールドは2つあります。 「質問」「回答」 このどちらかのフィールドに「キーワード検索」した文字があればレコードを抽出してほしいです。 とりあえず検索結果を表示するためのクエリの「質問」「回答」の抽出条件に同様に Like "*" & [Forms]![F_検索フォーム]![キーワード] & "*"と入れてみました。 なんとなく違う気はするのですが、どうやってやれば良いのかイマイチわかりません。 またこの同じクエリに IIf(IsNull([Forms]![F_検索フォーム]![区分1cd]),True,[区分1cd]=[Forms]![F_検索フォーム]![区分1cd]) 抽出条件欄に「True」 これが3つのコンボボックス分あります。 何のためのフィールドでしょうか? また、私が追加する「キーワード検索」テキストボックスの分も作らないといけないものでしょうか? 素人質問で申し訳ありませんがアドバイスいただけたら助かります。 Accessのテキストは職場にたくさんあるのですが、私のレベルでは読んでも??ばかりです。 よろしくお願いします。

  • Access2003でコンボボックスからデータを抽出したい

    自己啓発でAccess2003を勉強しています。 Access2003でコンボボックスで名前を選択して、データ(住所)を抽出したものをリストボックスに表示させたいのですがどこがまちがっているかわかりません。こんなことで3週間ぐらい悩んでいます。 回答またはアドバイスをお願いします。 もしくはもっと簡単なやりかたがあればお願いします。 (1)「氏名」、「住所」のテーブルを作成。テーブル名は「01データ」 (2)「氏名」、「住所」のクエリを作成。クエリ名は「クエリ1」 (3)フォームでコンボボックスとリストを作成。フォーム名は「印刷」 ⇒コンボボックスの名前は「検索」。 ⇒値集合ソースはSELECT [01データ].ID, [01データ].氏名 FROM 01データ; これで「氏名」が選択できた。 (4)クエリの「氏名」抽出条件にLike [forms]![印刷]![検索] (5)検索するマクロを作成。マクロ名「M検索」 アクションは 全レコードの表示 フィルタの実行 ⇒Where条件は[Forms]![印刷]![検索]=[クエリ1]![氏名] (6)マクロ「M検索」をコンボボックスのプロパティ「イベント」タブから変更時に設定する。 (7)フォーム「印刷」を開き、コンボボックスで氏名を選択すると『クエリ1!氏名』と表示されてしまいます。 (8)フォーム「印刷」のリストボックスは全レコードが表示されている。

  • ACCESSのコンボボックスデータについて

    Microsoft Office Accessのフォームに作成したコンボボックスで選択できるデータは一つしかダメなんでしょうか? コンボボックスには3項目のデータがあり2番目及び3番目のデータもクエリーの抽出条件として使いたいのですが可能でしょうか? 良い方法があれば教えて頂けないでしょうか。

  • Access コンボボックスを使って抽出

    Access2000・Windows2000を使用しています。 レコードの抽出をしたいと思います。テーブルは1つ、フィールドには日付・商品名・業者名・単価・・・とあります。フォームで「商品名から抽出(コンボボックスから商品を1つ選ぶ)」または「業者名から抽出(コンボボックスから業者を1つ選ぶ)」(コンボボックスから商品を1つ選ぶ)出来るようにし、なおかつ今月のレコードのみ表示させたいのですが、まずそのテーブルを1つ作成した時点でつまづいてしまっています。 どなたかご教授お願いします。

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

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