Access VBA質問箱 IV

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

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


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

【7653】リストボックスでデータを抽出 chubuchubu 06/4/6(木) 10:07 質問[未読]
【7654】Re:リストボックスでデータを抽出 まさ7251 06/4/6(木) 12:27 回答[未読]
【7656】Re:リストボックスでデータを抽出 chubuchubu 06/4/6(木) 13:43 お礼[未読]
【7657】Re:リストボックスでデータを抽出 まさ7251 06/4/6(木) 16:11 回答[未読]
【7661】Re:リストボックスでデータを抽出 chubuchubu 06/4/6(木) 17:48 お礼[未読]
【7662】Re:リストボックスでデータを抽出 たぬき 06/4/6(木) 18:27 発言[未読]
【7663】Re:リストボックスでデータを抽出 chubuchubu 06/4/6(木) 22:28 お礼[未読]

【7653】リストボックスでデータを抽出
質問  chubuchubu  - 06/4/6(木) 10:07 -

引用なし
パスワード
   Access超初心者ですのでよろしくお願いします。
Access2000を使っています。
フォームの中に「都道府県」のリストボックスをつくりました。
まず、リストボックスのプロパティの「複数選択」を「拡張」にして、複数の都道府県を選べるようにしました。そして、「更新後の処理」で再クエリを実行させて、ユーザー名をサブフォームに抽出できるようにしたいのですが、抽出ができません。「更新後の処理」でも「クリック時」でも、また「フォーカス喪失時」でも同様です。都道府県をクリックすると、下の「フォームビュー」の部分で「計算しています」というメッセージは出ます。
コンボボックスでは問題なく抽出できるのですが、コンボボックスでは複数の都道府県で選択できないためにリストボックスを使いたいのです。
そもそも、リストボックスではフォームを開いたときに、『リストを表示』という意味になっていて、そこからデータを選択するという意味ではないのでしょうか?
複数の都道府県を選択して、抽出することは不可能なのでしょうか?
ちなみに、再クエリでの抽出条件は、
[forms]![都道府県別検索]![都道府県]
としてあります。
[都道府県別検索]はリストボックスのあるフォーム名です。
また、クエリのみを実行すると「都道府県」聞いてきますが、その時に都道府県名を入力して、OKボタンを押すと正常にユーザー名を抽出することができます。

【7654】Re:リストボックスでデータを抽出
回答  まさ7251  - 06/4/6(木) 12:27 -

引用なし
パスワード
   処理を行うイベントは、適当なイベントでやってみてください。
どのような操作をしたときに、どのようなイベントが動いているのかを
確認すれば、どれが適しているのかはわかるかと思います。

>複数の都道府県を選択して、抽出することは不可能なのでしょうか?
>ちなみに、再クエリでの抽出条件は、
>[forms]![都道府県別検索]![都道府県]
>としてあります。

複数選択できるようにした場合、これでは出来ません。
どのような値が入っているか確認してみればわかるでしょう。

複数選択されている値を取得するには、
ItemsSelected、ItemData辺りを見る必要があります。
この辺を、ヘルプ等で確認して見てください。
VBAは必須になるかと思います。

【7656】Re:リストボックスでデータを抽出
お礼  chubuchubu  - 06/4/6(木) 13:43 -

引用なし
パスワード
   >複数選択できるようにした場合、これでは出来ません。
>どのような値が入っているか確認してみればわかるでしょう。

やはりそうですか。
クエリを開いて、手入力で試したときに、「北海道」だけなら抽出できるのですが、複数入力するとだめでしたので…。
";"や","等の区切りでもだめでしたので、複数選択した場合はどういう文字配列になっているのかなぁと思っていたのです。
ありがとうございました。

【7657】Re:リストボックスでデータを抽出
回答  まさ7251  - 06/4/6(木) 16:11 -

引用なし
パスワード
   >クエリを開いて、手入力で試したときに、「北海道」だけなら抽出できるのですが、複数入力するとだめでしたので…。
>";"や","等の区切りでもだめでしたので、複数選択した場合はどういう文字配列になっているのかなぁと思っていたのです。

SQL文のWHERE句が、以下のような感じになる必要があります。

項目名 = "北海道" Or 項目名 = "東北"

または、

項目名 In ("北海道","東北")

【7661】Re:リストボックスでデータを抽出
お礼  chubuchubu  - 06/4/6(木) 17:48 -

引用なし
パスワード
   やっぱりクエリの抽出の部分に式を入れただけではできないのですね。
VBAは確かに色々と作ったりしてはいるのですが、VBAのコマンドが多すぎて意味が分からないのです。
残念ですが、あきらめるしかなさそうです。
ありがとうございました。

【7662】Re:リストボックスでデータを抽出
発言  たぬき  - 06/4/6(木) 18:27 -

引用なし
パスワード
   ▼chubuchubu さん:

こんな感じではだめですか?

  Dim ListIdx As Variant
  Dim ken As String
  

  For Each ListIdx In Me.リスト0.ItemsSelected
    ken = ken & Me.リスト0.Column(0, ListIdx) & "','"
  Next ListIdx
  
  ken = Left(ken, Len(ken) - 2)

  xxx.RowSource = "SELECT * FROM T_都道府県 WHERE 都道府県名 IN('" & ken & ");"
  xxx.Requery

【7663】Re:リストボックスでデータを抽出
お礼  chubuchubu E-MAIL  - 06/4/6(木) 22:28 -

引用なし
パスワード
   ▼たぬき さん:
ありがとうございます。
来週、ちょっと試してみます。
でも、意味が分からないのですが、"リスト0"って何ですか?
ここには、リストボックスの名前が入るとか・・・?
あと、"xxx"って言うのと、
"ken"っていわゆる県のことでしょうけれど、
私の作ってある都道府県テーブルには「県」付きでデータがあります。
つまり、IDと北海道、青森県、秋田県・・・という感じなので、都道府県データと言っても一般の文字列と同様です。
このままVBAに入力してもきっとダメなんでしょうね。
もし上手くいかなかった時は、詳細をご説明しますのでよろしくお願いします。

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