アプリ版:「スタンプのみでお礼する」機能のリリースについて

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日
------------------------------

A 回答 (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

を設定します。



以上で、変更の終了です。確認してみてください。
    • good
    • 0
この回答へのお礼

ありがとうございました。
できました。
物わかりが悪い上に、クエリでコンボボックスの名前を間違えておりましたためにできなかったようです。
感謝ですm(_ _)m。

この先まだ解けない問題がありそうな気がします。
その節もどうかよろしくお願いいたします。

どうもありがとうございました。

お礼日時:2010/05/30 10:19

前回の続きということで、



(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

のようにします。
保存します。



以上で準備は終了です。
たぶん、大丈夫かなという感じですが。
    • good
    • 0
この回答へのお礼

アドバイスありがとうございます。m(_ _)m

やってみたのですが、うまくいきませんでした。その理由は、私の説明が間違っていたのだと思いました。

【キーワード取得用フォーム】
[1]商品番号入力コンボボックス→商品番号「001」が選択されたとします
[2]日付X入力テキストボックス→日付「2010年6月5日」が選択されたとします
[送信ボタン]

このように最初と同じように書いてしまいましたが、正しくは、

【キーワード取得用フォーム】
[1]商品番号入力コンボボックス→商品番号「001」が選択されたとします
[2]日付X入力コンボボックス→日付「2010年6月5日」が選択されたとします
[送信ボタン]

であり、商品番号を選択した瞬間に、全てのサブテーブルの、その商品番号がもつ日付Xを日付X入力コンボボックスでリストにしたいので、実際には「日付X入力テキストボックス」というものは存在しないのです。

知識がないために教えていただいたことの応用もできず恥ずかしいのですが、もう一度教えてください。
よろしくお願いいたします。

お礼日時:2010/05/29 19:42

検証していないですが



変化したいタイミング、更新後処理で対象コンボボックスの値集合ソースを設定し再クエリ、もしくはアイテム追加、VBA記載で対応かと思います。
    • good
    • 0
この回答へのお礼

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

お礼日時:2010/05/29 19:54

基本的にはできますが、テキストベースでは伝えにくいです。


VBAでコードを書く方法しかわかりませんので、それを
お伝えします。

まず、デザインビューでフォームを作り、コンボボックスの名称を
コンボ1:商品番号
コンボ2:日付A
コンボ3:日付B
とします。(実際は何でもいいです)

コンボ1を右クリックし、イベントのビルドで、
afterupdateイベントで、コンボ2のソースリストに
目的の日付が入るようにコードを書きます。
    • good
    • 0
この回答へのお礼

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

お礼日時:2010/05/29 19:50

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!