こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

アクセス(ACCESS)のリストボックスについて

アクセスでフォームにテキストボックスとリストボックスを配置して、
テキストボックスに入力した文字列により、リストボックスに表示される
データを変えたいのですが(フィルタをかけるというのでしょうか??)

そこで、vbaを用い、リストボックスのプロパティの値集合ソースに

SELECT * FROM aaa where aaa.bbb like "*あ*";
'あ と言う文字のあいまい検索のつもり ”あ”はテキストボックス
   に入力されている。

と入るような事を考えたのですが、ここで、aaaの部分がテーブルを基にした
場合は、該当するデータすべてが表示されますが、クエリーを基にすると
先頭のデータしか表示しないのです。

たぶん、素人の考えなのでしょうが、どうしてそうなるのかが分かりません。
教えていただけないでしょうか?

できたら、クエリーを基にしても、該当データが表示できる方法も
教えてください。お願いします。

VBAは(?)かなりの初心者です。上記の方法も本に書いてあった物を
やっと流用しました。猿にも解るくらいでお願いします。

ちなみに、アクセスは2000を使用しています。

投稿日時 - 2001-10-15 19:45:06

QNo.151673

すぐに回答ほしいです

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

>クエリーを基にすると先頭のデータしか表示しないのです
(・_・?おかしいですね、できると思いますよ

とりあえず、テキストボックスを使用したリストボックスの表示更新サンプルを記します

キーワード:
テーブル:AAA
AAAテーブルに含まれるフィールド:BBB
テキストボックス:TxtABC
リストボックス:LstDEF

'~~~~~~~~~~
'検索テキストボックスの変更時イベントプロシージャ
Private Sub TxtABC_Change()
Dim stSQL As String

'リストボックスのソースとなるSQL記述
stSQL = "SELECT AAA.* FROM AAA "

'検索値は入力されているか?
If IsNull(Me![TxtABC].Text) = False Then

'条件式付与
stSQL = stSQL & "WHERE ((AAA.BBB) "

'検索文字列に「*」または「?」が入力されているか?
If InStr(1, Me![TxtABC].Text, "*") Or InStr(1, Me![TxtABC].Text, "?") Then
stSQL = stSQL & "Like"
Else
stSQL = stSQL & "="
End If

'検索条件値付与
stSQL = stSQL & " '" & Me![TxtABC].Text & "') "

End If

'並べ替え付与
stSQL = stSQL & "ORDER BY AAA.BBB;"

'リストボックスのソース更新
Me![LstDEF].RowSource = stSQL

End Sub
'~~~~~~~~~~

参考になれば幸いです。頑張りましょう。

投稿日時 - 2001-10-15 20:29:34

お礼

素早い回答ありがとうございました。感謝・感激!です。
早速、頑張ってみます。

でも、検索文字列の配慮とか(?)並べ替えとか(?)
初心者には気がつかない点まで、御指導下さいまして、
ありがとうございました。
今後ともよろしくお願いします。

投稿日時 - 2001-10-16 08:56:34

ANo.1

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問