• ベストアンサー

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

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

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

  • ベストアンサー
  • 30246kiku
  • ベストアンサー率73% (370/504)
回答No.2

どうも駄目っぽいですね(私が知らないだけかもしれませんが) 以下の方法2つを考えてみました。(遅かったらごめんなさい) 1)ユーザ定義関数を使用する 2)コンボボックスで選んだ時、不可視のテキストボックスに値を代入しておいて、クエリではテキストボックス側を参照する フォーム名を「F1」、コンボボックス名を「cbx01」と仮定します。 1)ユーザ定義関数を使用する 以下の内容で、標準モジュールに関数を記述します。 Public Function myCombo(sCombo As String, iNum As Integer) As Variant   On Error Resume Next   myCombo = Eval(sCombo & ".Column(" & iNum & ")")   If (IsError(myCombo)) Then myCombo = Null End Function クエリの方では、2つ目を参照したかったら以下の様に記述します。 myCombo("[Forms]![F1]![cbx01]",1) 参照でエラーになったら Null で戻るので、その処理は入れてください。 2)コンボボックスで選んだ時、不可視のテキストボックスに値を代入しておいて、クエリではテキストボックス側を参照する フォームヘッダ(フッター)部に、不可視のテキストボックスを配置します。 テキストボックス名を「txt_cbx2」(2列目用)、「txt_cbx3」(3列目用)と仮定します。 コンボボックスのクリック時イベントで以下を記述します。 Private Sub cbx01_Click()   If (Not IsNull(Me.cbx01)) Then     Me.txt_cbx2 = Me.cbx01.Column(1)     Me.txt_cbx3 = Me.cbx01.Column(2)   Else     Me.txt_cbx2 = Null     Me.txt_cbx3 = Null   End If End Sub マクロでするなら、 条件: Not IsNull([cbx01]) アクション: 値の代入 アイテム: [txt_cbx2]   式: [cbx01].[Column](1) 条件: ...  (半角ピリオド3つ) アクション: 値の代入 アイテム: [txt_cbx3]   式: [cbx01].[Column](2) 条件: ...  (半角ピリオド3つ) アクション: マクロの中止 条件: (空欄) アクション: 値の代入 アイテム: [txt_cbx2]   式: Null 条件: (空欄) アクション: 値の代入 アイテム: [txt_cbx3]   式: Null クエリからは、[Forms]![F1]![txt_cbx2] とか [Forms]![F1]![txt_cbx3] で参照するようにします。

nodapapa
質問者

お礼

御礼が遅くなり申し訳ありません。 教えて頂いた2番目の方法で望んでいたとおりの結果を得ることができました! まだまだ解らないことかたくさんありますが、おかげさまで問題が一つ解決しデーターベースの完成に向けて一歩進むことができました。 ありがとうございました。

その他の回答 (1)

  • iryuza
  • ベストアンサー率57% (16/28)
回答No.1

コンボボックスは、1つしか選べません。 リストボックスを使うか複数のコンボボックスを並べる位しかないと思います。

nodapapa
質問者

お礼

ご回答ありがとうございました。 できることなら条件設定をシンプルにしたかったのですが・・・ 残念です。 ある人が作成したデーターベースですが、テーブル構造をなるべく壊さず少し改良して使いやすくしたかったったのですがテーブル構造等を少し見直してみたいと思います。

関連するQ&A

  • 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)フォーム「印刷」のリストボックスは全レコードが表示されている。

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

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

  • ACCESSでコンボボックスが作れません

    ACCESS2000のフォーム内に抽出クエリを元にしたコンボボックスを作成しようとしているのですが、「1つ以上の必要なパラメータの値が設定されていません」と表示され作成できません。元になる抽出クエリを開くと、コンボボックスに表示したいデータが表示されているのですが、上記エラーがでてコンボボックスが作成できない状態です。どなたか解消方法がおわかりの方教えてください。宜しくお願いします。

  • Access フォームコンボボックス空白をクエリで抽出したい

    現在access2000を使って、 フォーム1内にコンボボックスを作って コンボボックス内に1,2,3 と項目を入れています。 一方、クエリを使って、上記フォーム内のコンボボックスをつなげて1,2,3をそれぞれ抽出することはできるのですが、 1から3まで全てをiif関数などで 抽出したいと考えてします。 僕が考えた関数は iif(isnull([フォーム1][コンボ1]),is not null ,[フォーム1][コンボ1]) とクエリ抽出条件内に入力すると、結果は、 1、2、3をそれぞれフォームコンボボックスで選択すれば、クエリに反映されるのですが、コンボボックス内を「空白」の状態にすると、1,2,3すべてがクエリで抽出されるのではなく、何も抽出されないという結果になってしまいます。 どうすれば、クエリで1から3すべてを抽出することができるのでしょうか?多分、iif関数内の「空白」は空白として処理されないような気がします。 よろしくお願いします。

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

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

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

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

  • Accessコンボボックスについて

    Accessコンボボックスで選択した番号に連動する名前を他のフィールドへ表示する方法 Access初心者です。 どなたか方法をご存知の方がいらっしゃいましたら、お手数ですがご教授願います。 何分初心者なので、お手数ですが、噛み砕いてお教え頂けると助かります。 請求書の作成フォームを作っています。 フォーム上に[取引先名」という、コンボボックスを配置しています。 そのコンボボックス上から名前を選択できるようにしています。 作成済の請求書を名前別に検索できるようにパラメータクエリを作成して、あいまい検索?(Like検索)で 検索した名前に該当する請求書を抽出できるようにしたいと思っています。 実際にパラメータクエリを作成してみましたが検索結果0件で表示されてしまいます。 その際に作成したものは、「取引先名」フィールドの抽出条件に、Like"*"&[取引先名を入力して下さい]&"*" です。 これで駄目だったので、次に Like"*"& &"*"を削除して、[取引先名を入力して下さい」だけで作成してみましたが 取引先名で検索すると、検索結果は0件でした。 取引先IDで検索すると検索できましたが、何が駄目だったのかがさっぱり分かりませんでした。 説明下手で申し訳ありませんが、どなたかご存知の方がいらっしゃいましたら教えて下さい。

  • アクセスでクエリーによる抽出方法

    アクセスの超初心者です。 クエリーのデータをフォームのコンボボックス等のデータを選ぶことにより抽出したいのです。クエリーの抽出条件にフォームのコンボボックスを割り当てて抽出することはできるのですが、例えばクエリーデータは下記のようになっています。  A  B  石川  100 東京  200   沖縄  150 フォームのコンボボックスで石川を選べば  "石川" "100"と表示できますが、コンボボックスに”すべて”という項目をつけてその”すべて”をクリックするとクエリーが全表示になるようにしたいのです。(そのクエリーにはすべてという項目はない) 長くなりましたがおわかりいただけたでしょうか。よろしくお願いします。 また、クエリーを使わず別の抽出方法がありましたら教えてください。というのもいろいろな抽出条件をするのにそのつどクエリーを作らなければならないからです。よろしくお願いします。

  • Accessのテキストボックスとコンボボックスの違い

    フォームにテキストボックスを3ケ用意し、テキストボックス名をtxt1,txt2,txt3としました。これにコマンドスイッチを作成し、機能を再クエリと設定しました。 フォームのサブフォームに再クエリの結果を表示するようにしました。 クエリのテキストボックス1の抽出条件は 条件  [Forms]![フォーム名]![txt1] または [Forms]![フォーム名]![txt1] Is Null    [Forms]![フォーム名]![txt1] Is Null テキストボックス2の抽出条件は 条件  [Forms]![フォーム名]![txt2] Is Null または [Forms]![フォーム名]![txt2]  [Forms]![フォーム名]![txt2] Is Null テキストボックス3の抽出条件は 条件  [Forms]![フォーム名]![txt3] Is Null または [Forms]![フォーム名]![txt3] Is Null [Forms]![フォーム名]![txt3] と設定し、テキストボックスにデータを入力し実行すると 正しい結果が得られるのですが、テキストボックスをコンボボックスに変更し、コンボボックス名をtxt1,txt2,txt3 とすると、抽出されません。 コンボボックスをテキストボックスのように扱うのには どうするのでしょうか。教えてください。

  • access クエリコンボボックスについて

    フォームのメニュー画面でレポート印刷ボタンを作りました。 印刷ボタンを押すと[抽出する都道府県は?] とパラメーター入力が表示されるようにしてあるのですが、 それを入力式ではなく、コンボボックスにして選択式にしたいのですが、 どのようにすれば良いのでしょうか? コンボボックスにマクロをつけて クエリの抽出条件のところに[forms]![フォーム名]![コンボ名] を入力しても、実行したときになにも抽出されません。 なにがどのように違っているのでしょうか? 説明が分かりにくくて申し訳ないのですが、 わかる方いらっしゃいましたらぜひ教えていただきたいです。 よろしくお願いいたします。