プロが教える店舗&オフィスのセキュリティ対策術

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

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

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

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

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

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

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

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

A 回答 (1件)

>クエリーを基にすると先頭のデータしか表示しないのです


(・_・?おかしいですね、できると思いますよ

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

キーワード:
テーブル: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
'~~~~~~~~~~

参考になれば幸いです。頑張りましょう。
    • good
    • 0
この回答へのお礼

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

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

お礼日時:2001/10/16 08:56

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