Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


2244 / 2272 ツリー ←次へ | 前へ→

【3260】コンボボックスのリスト saikoro 04/8/18(水) 16:54 質問[未読]
【3261】Re:コンボボックスのリスト phoo 04/8/18(水) 17:06 回答[未読]
【3263】Re:コンボボックスのリスト saikoro 04/8/18(水) 20:45 質問[未読]
【3265】Re:コンボボックスのリスト こもれび 04/8/18(水) 22:40 発言[未読]
【3269】Re:コンボボックスのリスト saikoro 04/8/19(木) 9:18 質問[未読]
【3271】Re:コンボボックスのリスト saikoro 04/8/19(木) 10:21 質問[未読]
【3272】Re:コンボボックスのリスト phoo 04/8/19(木) 11:16 回答[未読]
【3273】Re:コンボボックスのリスト saikoro 04/8/19(木) 11:30 発言[未読]
【3274】Re:コンボボックスのリスト こもれび 04/8/19(木) 11:49 発言[未読]
【3278】Re:コンボボックスのリスト saikoro 04/8/19(木) 13:12 お礼[未読]

【3260】コンボボックスのリスト
質問  saikoro  - 04/8/18(水) 16:54 -

引用なし
パスワード
   コンボボックスのリストにクエリで作った内容を表示させようと思うのですが、
1つのクエリの場合は、プロパティで値集合ソースにそのクエリを書きますが、
その際に、2つクエリを用いて使い分けるといった事は、できるのでしょうか?

他のテキストボックスの内容を見て、コンボボックスに二つのクエリを使い分ける
と、いったことをやろうとおもうのですが。その処理は、どこに書けばよろしいのでしょうか?

初めての質問でわかりにくい文章かと思いますが、よろしくおねがいします。

【3261】Re:コンボボックスのリスト
回答  phoo  - 04/8/18(水) 17:06 -

引用なし
パスワード
   まとを外していたらゴメンナサイ。

クエリ1のb とクエリ2のbをコンボボックスに表示させるには、
集合値ソースに、
SELECT [クエリ1].[b], [クエリ2].[b] FROM クエリ1, クエリ2;
とすればいいかと思います。

【3263】Re:コンボボックスのリスト
質問  saikoro  - 04/8/18(水) 20:45 -

引用なし
パスワード
   phoo 様:
レスして頂きありがとうございます。
聞いて貰えるとうれしいですm(_ _)m。

>まとを外していたらゴメンナサイ。
>
>クエリ1のb とクエリ2のbをコンボボックスに表示させるには、
>集合値ソースに、
>SELECT [クエリ1].[b], [クエリ2].[b] FROM クエリ1, クエリ2;
>とすればいいかと思います。

申し訳ございません。自分の質問が悪すぎですね。。
えーと、上記だと、コンボボックスに、クエリ1とクエリ2の両方が
一度に表示されてしまう?ような感じです。

やりたい事として、
他のテキストボックスなどで1か2を決定して、その値を見て
1だったらコンボボックスリストにクエリ1を表示させ、
2だったらコンボボックスリストにクエリ2を表示させたいのです。
(同じコンボボックスにて)
このような事をしようとするとどのような処理にすればよろしいのでしょうか?
もうしわけありません。

【3265】Re:コンボボックスのリスト
発言  こもれび  - 04/8/18(水) 22:40 -

引用なし
パスワード
   こもれびです

横レスごめんなさい。

イメージは次のような感じですか?

次のA、Bの内から一つを選び入力する
A:野菜
B:果物

Aが入力されたら次をコンボボックスにリストアップ
 じゃがいも
 ぴーまん
 きゅうり
 とまと
 きゃべつ
Bが入力されたら次をコンボボックスにリストアップ
 すいか
 グレープフルーツ
 りんご
 なし
 ぶどう

saikoroさんの本文からですと、AとBが同じレコードセット
若しくはテーブルなのか違うレコードセット若しくはテーブルなのか
そのあたりが読めないです。

いずれにしても選ばれたデータを元に「Select case文」で分岐して
それぞれ用のレコードセットをSQLでつくり、コンボボックスの
ソースとしてしまわれてはいかがでしょうか。

【3269】Re:コンボボックスのリスト
質問  saikoro  - 04/8/19(木) 9:18 -

引用なし
パスワード
   こもれび様、レスありがとうございます。

>イメージは次のような感じですか?
>
>次のA、Bの内から一つを選び入力する
>A:野菜
>B:果物
>
>Aが入力されたら次をコンボボックスにリストアップ
> じゃがいも
> ぴーまん
> きゅうり
> とまと
> きゃべつ
>Bが入力されたら次をコンボボックスにリストアップ
> すいか
> グレープフルーツ
> りんご
> なし
> ぶどう

はい。ここまでして頂きありがとうございます。
全て同じテーブル内で、野菜と、果物が同じ行。
コンボボックスにリストアップされるものも全て同じ行に入ります。
なので、自分としては、
クエリ1に野菜を条件にして
 じゃがいも
 ぴーまん
 きゅうり
 とまと
 きゃべつ
クエリ2に果物を条件にして
 すいか
 グレープフルーツ
 りんご
 なし
 ぶどう
を設定しています。下手な説明で申し訳ないです。

>
>saikoroさんの本文からですと、AとBが同じレコードセット
>若しくはテーブルなのか違うレコードセット若しくはテーブルなのか
>そのあたりが読めないです。

基本的なことで恐縮ですが、同じレコードセットとは、同じ列に入っているって
ことでよろしいでしょうか?上記Aの野菜とBの果物は、種類という行で同じ所に入ってます。答えになってなかったら申し訳ありません。勉強不足が否めないです。。。

>いずれにしても選ばれたデータを元に「Select case文」で分岐して
>それぞれ用のレコードセットをSQLでつくり、コンボボックスの
>ソースとしてしまわれてはいかがでしょうか。

やはり、こういった条件を書くことになるとおもいますよね。。
コンボボックスのソースとしてしまう場合は、どこに書けばよろしいのでしょうか?
この質問は、自分がアクセスの勉強不足なので、恐縮ですが。。。

他としては、自分では、クエリ3という物を作り、IIF関数を用いて、
パラメータを用いて、クエリ1とクエリ2を表示させるという事でも実現可能でした。

長文で申し訳ないのですが、コンボボックスのソースとしてしまう場合は
どこに書けばよろしいのでしょうか?

【3271】Re:コンボボックスのリスト
質問  saikoro  - 04/8/19(木) 10:21 -

引用なし
パスワード
   わかりにくかったと思うので、

イメージとしてこんな感じになっています。

テーブル名:食べ物

No   種類    名称
--------------------------
1    野菜    じゃがいも
2    野菜    ぴーまん
3    野菜    きゅうり
4    野菜    とまと
5    野菜    きゃべつ
6    果物    すいか
7    果物    りんご
8    果物    なし 
9    果物     ぶどう
10   果物    グレープフルーツ

こんな感じのテーブルです。

それでクエリ1に
SELECT [名称] from 食べ物 WHERE [種類]='野菜'

クエリ2に
SELECT [名称] from 食べ物 WHERE [種類]='果物'

と、しています。

これを、テキストボックスに、野菜か、果物を入れるようにして、
コンボボックスリストに、野菜がはいったら、クエリ1を表示させ、
コンボボックスリストに、果物がはいったら、クエリ2を表示させようと思うのです。
(コンボボックスは同じ所です。)

以上、よろしくおねがいいたします。

【3272】Re:コンボボックスのリスト
回答  phoo  - 04/8/19(木) 11:16 -

引用なし
パスワード
   >これを、テキストボックスに、野菜か、果物を入れるようにして、
>コンボボックスリストに、野菜がはいったら、クエリ1を表示させ、
>コンボボックスリストに、果物がはいったら、クエリ2を表示させようと思うのです。
>(コンボボックスは同じ所です。)
>
>以上、よろしくおねがいいたします。

コンボボックスに直接指定する方法はわかりませんでしたので、
VBAでの対象方法です。
--------------------------------------------------------------------------
Private Sub cmb_種類_Click()

  Dim CN As New ADODB.Connection
  Dim rs As New ADODB.Recordset
  Dim SQL As String
  Dim WK As String
  
  Set CN = CurrentProject.Connection
  
  If IsNull(Me!cmb_種類) Or Me!cmb_種類 = vbNullString Then
    Exit Sub
  End If
  
  SQL = "SELECT 食べ物.名称 FROM 食べ物 WHERE (((食べ物.種類)='" & Me!cmb_種類 & "'));"
  rs.Open SQL, CN, adOpenKeyset, adLockReadOnly
  
  If rs.EOF Then
    Exit Sub
  End If
  
  WK = ""
  rs.MoveFirst
  Do While Not rs.EOF
    WK = WK & rs.Fields(0)
    rs.MoveNext
    If Not rs.EOF Then
      WK = WK & ","
    End If
  Loop
  Me!cmb_名称.RowSource = WK
  Me.Repaint
  
  rs.Close: Set rs = Nothing
  CN.Close: Set CN = Nothing

End Sub
--------------------------------------------------------------------------
野菜か果物を選択するコンボボックスで、
クリック時のイベント プロシージャを
指定して上記のソースを記述します。
あとは、選択した野菜か果物の種類が自動で選択されます。

【3273】Re:コンボボックスのリスト
発言  saikoro  - 04/8/19(木) 11:30 -

引用なし
パスワード
   phoo様、ありがとうございます。

今現在、確認できる環境がないので、夜にでもまた正式な礼言いたいと思います。
なんか、すごそうなプログラムですが、ありがとうございます〜。

【3274】Re:コンボボックスのリスト
発言  こもれび  - 04/8/19(木) 11:49 -

引用なし
パスワード
   >  SQL = "SELECT 食べ物.名称 FROM 食べ物 WHERE (((食べ物.種類)='" & Me!cmb_種類 & "'));"

このあとは、

  Me!cmb_名称.RowSource = SQL
  Me!cmb_名称.Requery

で済みますけど・・・ (^^;;

>  rs.Close: Set rs = Nothing
>  CN.Close: Set CN = Nothing

レコードセットは使わないので、rsは不要になります。

【3278】Re:コンボボックスのリスト
お礼  saikoro  - 04/8/19(木) 13:12 -

引用なし
パスワード
   phoo様、こもれび様、本当にありがとうございます。

お二人が提示して下さったソースを使った結果無事解決できました。

単純?な事かもしれませんが、自分としては感動しました^^

これから勉強していきたいと思います。
誠にありがとうございました。m(_ _)m

2244 / 2272 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
1078325
(SS)C-BOARD v3.8 is Free