- ベストアンサー
Access2003で2種類のキーワードを取得する方法
- Access2003で、2種類のキーワードを取得する方法について教えてください。
- 具体的には、キーワード取得用フォームで商品番号を選択した際に、日付Xを動的にリストに表示したいです。
- テーブル構造やフォームの設定についても教えてください。
- みんなの回答 (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 を設定します。 以上で、変更の終了です。確認してみてください。
その他の回答 (3)
- piroin654
- ベストアンサー率75% (692/917)
前回の続きということで、 (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 のようにします。 保存します。 以上で準備は終了です。 たぶん、大丈夫かなという感じですが。
お礼
アドバイスありがとうございます。m(_ _)m やってみたのですが、うまくいきませんでした。その理由は、私の説明が間違っていたのだと思いました。 【キーワード取得用フォーム】 [1]商品番号入力コンボボックス→商品番号「001」が選択されたとします [2]日付X入力テキストボックス→日付「2010年6月5日」が選択されたとします [送信ボタン] このように最初と同じように書いてしまいましたが、正しくは、 【キーワード取得用フォーム】 [1]商品番号入力コンボボックス→商品番号「001」が選択されたとします [2]日付X入力コンボボックス→日付「2010年6月5日」が選択されたとします [送信ボタン] であり、商品番号を選択した瞬間に、全てのサブテーブルの、その商品番号がもつ日付Xを日付X入力コンボボックスでリストにしたいので、実際には「日付X入力テキストボックス」というものは存在しないのです。 知識がないために教えていただいたことの応用もできず恥ずかしいのですが、もう一度教えてください。 よろしくお願いいたします。
- layy
- ベストアンサー率23% (292/1222)
検証していないですが 変化したいタイミング、更新後処理で対象コンボボックスの値集合ソースを設定し再クエリ、もしくはアイテム追加、VBA記載で対応かと思います。
お礼
アドバイスありがとうございます。 何となく、こうするとこうなるのか、ということはわかるのですが、ではどうするのかというのがわかりません。 よその人が作ったデータの機能追加を指示されたのですが、スキル不足で困っております。 ありがとうございました。m(_ _)m
- Saturn5
- ベストアンサー率45% (2270/4952)
基本的にはできますが、テキストベースでは伝えにくいです。 VBAでコードを書く方法しかわかりませんので、それを お伝えします。 まず、デザインビューでフォームを作り、コンボボックスの名称を コンボ1:商品番号 コンボ2:日付A コンボ3:日付B とします。(実際は何でもいいです) コンボ1を右クリックし、イベントのビルドで、 afterupdateイベントで、コンボ2のソースリストに 目的の日付が入るようにコードを書きます。
お礼
アドバイスありがとうございます。 AccessのVBAを使ったことがないので、どうすればよいのかわからないのです。 せっかくいただいたアドバイスですのに申し訳ありませんm(_ _)m。
お礼
ありがとうございました。 できました。 物わかりが悪い上に、クエリでコンボボックスの名前を間違えておりましたためにできなかったようです。 感謝ですm(_ _)m。 この先まだ解けない問題がありそうな気がします。 その節もどうかよろしくお願いいたします。 どうもありがとうございました。