Access2003で2種類のキーワードを取得する方法

このQ&Aのポイント
  • Access2003で、2種類のキーワードを取得する方法について教えてください。
  • 具体的には、キーワード取得用フォームで商品番号を選択した際に、日付Xを動的にリストに表示したいです。
  • テーブル構造やフォームの設定についても教えてください。
回答を見る
  • ベストアンサー

Access2003で、2種類のキーワードを取得するときに2つ目を動的

Access2003で、2種類のキーワードを取得するときに2つ目を動的にリストにしたいです。 http://okwave.jp/qa/q5912564.html こちらで解決した問題の続きになるのですが、 下のような構造で印刷できるようにはなりましたが、キーワード取得用フォームに おいて、商品番号を選択した瞬間に、全てのサブテーブルの、その商品番号がもつ 日付Xを日付X入力コンボボックスでリストにできますでしょうか。 (実際にはサブテーブルは5個あります) 可能であるならばその方法を教えてください。よろしくお願いいたします。 【テーブル構造】 基本テーブルは、 商品番号、商品名 内容  サブ1テーブルは、 商品番号、日付A 日付X サブ2テーブルは、 商品番号、日付B 日付X ------------------------------ 【キーワード取得用フォーム】 [1]商品番号入力コンボボックス→商品番号「001」が選択されたとします [2]日付X入力テキストボックス→日付「2010年6月5日」が選択されたとします [送信ボタン] ------------------------------ 【全体書類印刷用レポート】 ---基本情報--- (商品番号001の基本情報) 001:シャープペンシル 斬新なデザインで芯が減らないシャーペン ---サブ情報--- (商品番号001で日付Xが2010年6月5日のサブ1テーブルの日付A例) 2010年2月10日 2010年3月3日 (商品番号001で日付Xが2010年6月5日のサブ2テーブルの日付B例) 2010年2月20日 2010年4月5日 ------------------------------

noname#183584
noname#183584

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

  • ベストアンサー
  • piroin654
  • ベストアンサー率75% (692/917)
回答No.4

失礼しました。私も読み間違えていた部分が あるようです。 手順は以下です。設定の方法は同じですが、場所と クエリの参照部分を変更します。 (1) 「商品番号入力コンボボックス」の設定は、できているものと します。一応、「基本テーブル」を値集合ソースに選択し、 商品番号が「基本テーブル」の最初に設定されているなら、 列数1、列幅1cm、連結列1で設定。一応こちらの設定です。 seroteepuさんの環境にあわせてください。(3)でもう一度 設定が出てきます。 (2) クエリの作成 Q日付X: SELECT サブ1テーブル.商品番号, サブ1テーブル.日付X FROM サブ1テーブル GROUP BY サブ1テーブル.商品番号, サブ1テーブル.日付X HAVING (((サブ1テーブル.商品番号)=[Forms]![キーワード取得用フォーム]![商品番号入力コンボボッ クス])) UNION SELECT サブ2テーブル.商品番号, サブ2テーブル.日付X FROM サブ2テーブル GROUP BY サブ2テーブル.商品番号, サブ2テーブル.日付X HAVING (((サブ2テーブル.商品番号)=[Forms]![キーワード取得用フォーム]![商品番号入力コンボボッ クス])) UNION SELECT サブ3テーブル.商品番号, サブ3テーブル.日付X FROM サブ3テーブル GROUP BY サブ3テーブル.商品番号, サブ3テーブル.日付X HAVING (((サブ3テーブル.商品番号)=[Forms]![キーワード取得用フォーム]![商品番号入力コンボボッ クス])) UNION SELECT サブ4テーブル.商品番号, サブ4テーブル.日付X FROM サブ4テーブル GROUP BY サブ4テーブル.商品番号, サブ4テーブル.日付X HAVING (((サブ4テーブル.商品番号)=[Forms]![キーワード取得用フォーム]![商品番号入力コンボボッ クス])) UNION SELECT サブ5テーブル.商品番号, サブ5テーブル.日付X FROM サブ5テーブル GROUP BY サブ5テーブル.商品番号, サブ5テーブル.日付X HAVING (((サブ5テーブル.商品番号)=[Forms]![キーワード取得用フォーム]![商品番号入力コンボボッ クス])); (3) 商品番号入力コンボボックスの設定 「商品番号入力コンボボックス」のプロパティシートから 「商品番号入力コンボボックス」の更新後処理に、 Private Sub 商品番号入力コンボボックス_AfterUpdate() Me!日付X入力テキストボックス.Requery End Sub になるように設定して保存してください。 (4) 日付X入力コンボボックスの設定 プロパティシートで、値集合ソースに「Q日付X」を設定します。 列数 2 列幅 0cm;2cm 連結列 2 を設定します。 以上で、変更の終了です。確認してみてください。

noname#183584
質問者

お礼

ありがとうございました。 できました。 物わかりが悪い上に、クエリでコンボボックスの名前を間違えておりましたためにできなかったようです。 感謝ですm(_ _)m。 この先まだ解けない問題がありそうな気がします。 その節もどうかよろしくお願いいたします。 どうもありがとうございました。

その他の回答 (3)

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.3

前回の続きということで、 (1) クエリの作成 以下のSQL文でクエリを作ります。テーブルが5個あるらしいので 5個のテーブルを取り込んでいます。状況に応じて変更してください。 クエリ名をQ日付Xとします。日付が重複する場合は一つにする 処理をしています。Q日付Xはユニオンクエリで、以下の長いSQL文は 一つのクエリです。エラーが出ないようにコピーし、新しい クエリのSQLビューに貼り付け、保存してください。 Q日付X: SELECT サブ1テーブル.商品番号, サブ1テーブル.日付X FROM サブ1テーブル GROUP BY サブ1テーブル.商品番号, サブ1テーブル.日付X HAVING (((サブ1テーブル.商品番号)=[Forms]![キーワード取得用フォーム]![日付X入力テキストボッ クス])) UNION SELECT サブ2テーブル.商品番号, サブ2テーブル.日付X FROM サブ2テーブル GROUP BY サブ2テーブル.商品番号, サブ2テーブル.日付X HAVING (((サブ2テーブル.商品番号)=[Forms]![キーワード取得用フォーム]![日付X入力テキストボッ クス])) UNION SELECT サブ3テーブル.商品番号, サブ3テーブル.日付X FROM サブ3テーブル GROUP BY サブ3テーブル.商品番号, サブ3テーブル.日付X HAVING (((サブ3テーブル.商品番号)=[Forms]![キーワード取得用フォーム]![日付X入力テキストボッ クス])) UNION SELECT サブ4テーブル.商品番号, サブ4テーブル.日付X FROM サブ4テーブル GROUP BY サブ4テーブル.商品番号, サブ4テーブル.日付X HAVING (((サブ4テーブル.商品番号)=[Forms]![キーワード取得用フォーム]![日付X入力テキストボッ クス])) UNION SELECT サブ5テーブル.商品番号, サブ5テーブル.日付X FROM サブ5テーブル GROUP BY サブ5テーブル.商品番号, サブ5テーブル.日付X HAVING (((サブ5テーブル.商品番号)=[Forms]![キーワード取得用フォーム]![日付X入力テキストボッ クス])); (2) コンボボックスの設定 コンボボックスのプロパティシートを開きます。 値集合ソースにQ日付Xを設定します。 列数を2にします。 列幅を 0cm;2cm にします。 列数を2にします。 保存します。 (3) テキストボックスの設定 テキストボックスのプロパティシートを開きます。 更新後処理の右端のところをクリックして コードビルダを選択してクリックし、コード表を 開きます。 コード表が表示されると、 Private Sub 日付X入力テキストボックス_AfterUpdate() End Sub というコードが表示されます。その中に、 Me!商品番号入力コンボボックス.Requery を入れます。 Private Sub 日付X入力テキストボックス_AfterUpdate() Me!商品番号入力コンボボックス.Requery End Sub のようにします。 保存します。 以上で準備は終了です。 たぶん、大丈夫かなという感じですが。

noname#183584
質問者

お礼

アドバイスありがとうございます。m(_ _)m やってみたのですが、うまくいきませんでした。その理由は、私の説明が間違っていたのだと思いました。 【キーワード取得用フォーム】 [1]商品番号入力コンボボックス→商品番号「001」が選択されたとします [2]日付X入力テキストボックス→日付「2010年6月5日」が選択されたとします [送信ボタン] このように最初と同じように書いてしまいましたが、正しくは、 【キーワード取得用フォーム】 [1]商品番号入力コンボボックス→商品番号「001」が選択されたとします [2]日付X入力コンボボックス→日付「2010年6月5日」が選択されたとします [送信ボタン] であり、商品番号を選択した瞬間に、全てのサブテーブルの、その商品番号がもつ日付Xを日付X入力コンボボックスでリストにしたいので、実際には「日付X入力テキストボックス」というものは存在しないのです。 知識がないために教えていただいたことの応用もできず恥ずかしいのですが、もう一度教えてください。 よろしくお願いいたします。

  • layy
  • ベストアンサー率23% (292/1222)
回答No.2

検証していないですが 変化したいタイミング、更新後処理で対象コンボボックスの値集合ソースを設定し再クエリ、もしくはアイテム追加、VBA記載で対応かと思います。

noname#183584
質問者

お礼

アドバイスありがとうございます。 何となく、こうするとこうなるのか、ということはわかるのですが、ではどうするのかというのがわかりません。 よその人が作ったデータの機能追加を指示されたのですが、スキル不足で困っております。 ありがとうございました。m(_ _)m

  • Saturn5
  • ベストアンサー率45% (2270/4952)
回答No.1

基本的にはできますが、テキストベースでは伝えにくいです。 VBAでコードを書く方法しかわかりませんので、それを お伝えします。 まず、デザインビューでフォームを作り、コンボボックスの名称を コンボ1:商品番号 コンボ2:日付A コンボ3:日付B とします。(実際は何でもいいです) コンボ1を右クリックし、イベントのビルドで、 afterupdateイベントで、コンボ2のソースリストに 目的の日付が入るようにコードを書きます。

noname#183584
質問者

お礼

アドバイスありがとうございます。 AccessのVBAを使ったことがないので、どうすればよいのかわからないのです。 せっかくいただいたアドバイスですのに申し訳ありませんm(_ _)m。

関連するQ&A

  • サブフォームを複数持つフォームを、一つのキーワード取得用フォームから印

    サブフォームを複数持つフォームを、一つのキーワード取得用フォームから印刷できますか。 印刷用フォームを作成しました。 その中には、基本情報とサブ情報1、サブ情報2…というような複数のサブフォームがあります。 基本テーブルは、 商品番号、商品名 内容 というようなフィールドがあります。   サブ1テーブルは、 商品番号、日付A サブ2テーブルは、 商品番号、日付B キーワード取得用フォームに、商品番号と日付を入れてコマンドボタンを押すと、サブフォームを複数持つフォームに、 (1)基本テーブルの内容と、 (2)それぞれのサブフォームには取得した日付の日付情報(複数レコードもあり) を入れて印刷したいのです。 こんなことは可能でしょうか。 コマンドボタンにクリック時のイベントを書けばいいような気もするのですが、方法がわかりません。 教えてください。よろしくお願いいたします。

  • Accessコンボボックス

    Access2000でコンボボックスで日付を選択できるように したいとおもっています。 リストは、予め1999年~2010年をセットするなどして 月・日についてもコンボボックスを作成しています。 規定値ではformat(year(date()),"0000")などとして 現在日時から年・月・日を取得しています。 コンボボックス選択後、一つのデータとして入れ込んでいます。 次からは前のデータを参照し、コンボボックスは 予めその行が選択されているようにしたいのですが、 うまくいきません。 レコードから年・月・日などを取って コントロールソースに =format( year([tx_date]), "0000" ) ※tx_dateには"2002/12/18"という形で入っています。 を入力すると、コンボボックスを選択することが できません。 上記のような状況を打開する策をお教えいただけませんでしょうか? よろしくお願いいたします。 わかりにくくてすみません。

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

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

  • Access抽出クエリの基本的なこと

    お世話になります。 初心者で苦労しながらもAccess2000でデータベースを作成しています。 非常に基本的な質問だと思うのですが、どなたかご教授願います。 日付を含むフィールドがあるテーブルがあり、クエリにてその日付から 年と月を拾っています。 ID   入力日   年:Year([入力日])   月:Month([入力日]) 1   2001/07/06    2001          6 2   2002/06/07    2002          6 3   2002/07/19    2002          7 別に作成したフォームに年と月を絞り込むためのコンボボックスをそれぞれ配置し、 入力された値によって上記クエリの抽出条件に反映させたいのですが、コンボに何も 入力されていないときは全てのデータを表示したいんです。 「コンボ月=2002」&「コンボ月=6」でID=2のデータのみを、 「コンボ月=(Null)」&「コンボ月=6」でID=1と2のデータを表示したいんです。 (判りにくくてすみません。。) このような場合、抽出条件に記述する式はどのように設定したら良いのでしょうか? IIfでIsNullの条件式を組んだのですが、Nullの時に返す値が判りません。 どうかよろしくお願いします。

  • Accessで家計簿を作っているのですが・・・(再

    いつもおせわになっております。 現在、Accessで家計簿なるものを作っているのですが・・・ まずマスタテーブルから入力データが存在する日付をクエリで抽出し、それをフォームのテキストボックス1のコントロールソースに指定して、そのテキストボックス1に表示されている日付を元にフィルタ機能を使ってその日に入力されたデータ一覧をサブフォームで表示するという方式を取っているのですが・・・(解かり難くてすみません この方式だとクエリのレコードを移動するとサブフォームの表示内容も対応してその日のが抽出されます。 しかし、データがたくさん蓄積されてくると一日ずつ(1レコードずつ)移動すると手間がかかってイライラしそうです。 で、同じフォームにコンボボックス1を追加し、上記にもあるマスタテーブルから入力されている日付を抜き出した日付一覧を取得してあるクエリを値集合ソースに指定してみました。 クリック時のイベント等もちゃんと設定したのですが、うまく動作してくれません。 コンボボックス1をクリックして選択したら、クエリをコントロールソースとするテキストボックス1の表示内容がコンボボックス1で選択されたものに変更される、みたいなことって出来ないのでしょうか? コンボボックス1だけにしてテキストボックス1を消すとコンボボックス1で選択した日付の内容をサブフォームで表示することは出来たのですが、それだとコマンドボタンを押して次のフィールドに移動し、かつコンボボックス1の表示内容も自動変更というのが出来なかったので・・・ 長文でスミマセンが、どなたかお知恵の拝借お願いします。

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

    質問があります。下記のようなテーブルがあります。 ▼商品情報テーブル  ・商品ID (番号はオート。キー)  ・商品番号(自社で設定している商品ごとの番号)  ・商品名 これを「受注伝票」フォームに使用します。 商品番号をコンボボックスで指定すると 商品名が別のテキストボックスに自動で表示。 もし登録されていない商品の場合には 商品番号と商品名をその場で登録して商品情報テーブルに反映させたい。 コンボボックスで選択する際はID順ではなく、 商品番号の昇順で並び替えたいと思います。 商品番号は数値ではなくテキストになっています。 弊社では「i0001、i0002...」のように、商品番号の頭に「i」が付くからです。 ACCESSのバージョンは2002です。 どうぞよろしくお願いいたします。

  • Accessのフォーム その2

    すいません、以前にも同じ質問をしたのですが、私の質問の仕方が悪くてうまくいきませんでした。 回答してくださった方、ありがとうございました! もう一度、詳しく質問しなおします。 顧客データを登録しているのですが、テーブルを元に登録フォームを作成しました。 商品がたくさんあって、4つのコードに分かれています。フォームの中に[A][B][C][D]と4つのコンボボックスを作成し、絞込み検索ができるようにはしました。 しかし、選んだデータの[A]しかテーブルに表示されません。例えば[A]のコンボボックスの中から[1010]を選択、[B]のコンボボックスから選択しようとしても空っぽです。 テーブルを見ると、[A]で選んだ[1010]だけが表示されています。 非連結のときはうまく出てたんですが・・。 もしかして連結列が間違ってるのでしょうか?? 元になるテーブルは Aコード A  Bコード B Aコード Cコード C Bコード Dコード D Cコード この2列目を表示したいのです。(2列目が[1010]など表示したいデータ) 列数はそれぞれ「2」で連結列は「2」です。 更新後処理は以下の通りです。 Private Sub コンボ0_AfterUpdate() Me!コンボ2.Requery End Sub Private Sub コンボ2_AfterUpdate() Me!コンボ4.Requery End Sub Private Sub コンボ4_AfterUpdate() Me!コンボ6.Requery End Sub ぜひよろしくお願いします。

  • ACCESSで質問です

    ACCESSで質問です。 利用するのは  フォームZ  フォームZ内にコンボボックスA、コンボボックスB  商品テーブル  部門テーブル  振分テーブル  詳細テーブル になります。 やりたいこと (1)コンボボックスA、コンボボックスBがあるフォームZで、コンボボックスAで選択した値を元にコンボボックスBの値を絞りたいです。 (2)変更した値がフォームZを開いた時に表示されるようにしたいです。 現在の設定 フォームZはデータを更新する画面で、コントロールソースで商品テーブルの各項目に値を読み込ませています。 この時、コンボボックスAは商品テーブルに登録済みの部門テーブルの区分を、 コンボボックスBは商品テーブルに登録済みの詳細テーブルの保障を表示させるようにしたいです。 現在うまくいかない点 コンボボックスBに登録済みの初期値が反映されません。 各テーブルの中身は以下の様な感じで、部門テーブルのIDが振分テーブルのIDとリンクし、 振分テーブルのNoが詳細テーブルのNoとリンクしています。 部門テーブル(コンボボックスA)  ID(1カラム目):区分(2カラム目)  1:テーブル  2:チェア  3:ソファ  4:テレビ台  5:本棚 振分テーブル  ID(1カラム目):区分(2カラム目):保障(3カラム目):No(4カラム目)  1:テーブル:1年:1  1:テーブル:2年:2  1:テーブル:3年:3  1:テーブル:5年:4  1:テーブル:10年:5  2:チェア:1年:1  2:チェア:2年:2  2:チェア:3年:3  2:チェア:5年:4  2:チェア:10年:5  3:ソファ:1年:1  3:ソファ:2年:2  3:ソファ:3年:3  4:テレビ台:1年:1  4:テレビ台:3年:3  4:テレビ台:5年:4  5:本棚:1年:1  5:本棚:5年:4  5:本棚:10年:5 詳細テーブル(コンボボックスB)  No(1カラム目):保障(2カラム目):金額(3カラム目)  1:1年:10,000  2:2年:19,000  3:3年:24,000  4:5年:35,000  5:10年:50,000 コンボボックスA  コントロールソース:区分  値集合タイプ:テーブル/クエリ  値集合ソース:SELECT 区分,ID FROM 部門テーブル  列数:2  列幅:2;0 コンボボックスB  コントロールソース:保障  値集合タイプ:テーブル/クエリ  値集合ソース:SELECT 保障,金額,No FROM 詳細テーブル  列数:3  列幅:1;3;0 どなたかご教示頂けないでしょうか。 宜しくお願い致します。

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

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

  • アクセスのフォームのコンボボックスに表示させる対象をユーザーNo. で絞りたいのですが、どうすればよいでしょうか?

    Access2003を使用しています。 フォームに配したコンボボックスのことで教えてください。 フォームには、ユーザーNoを入れるテキストボックスがあります。 その下にはユーザーが所有している商品番号を入れるコンボボックスがあります。 ユーザーナンバーを手打ちで入力すると、商品番号のコンボボックスにはそのユーザーが所有している番号だけが表示されるようにしたいのです(商品番号は1000個ぐらいあります)。 ユーザーが所有している商品番号は、商品リストと顧客名簿というテーブルを連結させたクエリで出来上がっています。 どのようにしたらよいのでしょうか? ご教示をお願いいたします。

専門家に質問してみよう