• 締切済み

Access VBAでのフィルタ処理

アクセス2003を使用しています。 今VBAを使用して、フォームのテキストボックスに記入された文字列を検索条件に、 クエリからデータ抽出したいのですが、 うまくいきません。 解決したい事は、 「abc*」といったように、前方が一致している文字列データを すべて抽出するといった処理です。 今は下記のようなプログラムを組んでいます。 Private Sub コマンド1_Click() On Error GoTo Err_コマンド1_Click Dim stDocName As String Dim stLinkCriteria As String stDocName = "クエリ1" DoCmd.OpenQuery stDocName, acNormal, acEdit If IsNull(テキストボックス) Then Else stLinkCriteria = "[クエリデータ]=" & "'" & Me![テキストボックス] & "'" End If DoCmd.ApplyFilter stDocName, stLinkCriteria Exit_コマンド1_Click: Exit Sub Err_コマンド1_Click: MsgBox Err.Description Resume Exit_コマンド1_Click End Sub これだと完全に一致しなければ抽出してくれません。 どの様に変更すればよいでしょうか? よろしくお願いします。

みんなの回答

noname#140971
noname#140971
回答No.3

  If Len(Me.テキストボックス & "") Then     stDocName = "クエリ1"

i00323
質問者

お礼

ありがとうございます! Likeを使う事によって出来ました。

noname#79209
noname#79209
回答No.2

stLinkCriteria = "[クエリデータ] Like '" & Me![テキストボックス] & "*'" としてみては? あと、 Filter OnとRequery を実行しないといけないのでは...

i00323
質問者

お礼

連絡遅くなりました。 Likeを使うことによって解決出来ました。 ありがとうございます!

noname#140971
noname#140971
回答No.1

クエリ1: GNumber__ID__fld_1 ______1___1__A ______1___2__B ______1___3__C ______2___4__D ______2___5__E ______2___6__F ______3___7__G DoCmd は一度も使ったことはありませんが・・・。 Private Sub コマンド0_Click() On Error GoTo Err_コマンド1_Click   Dim stDocName   As String   Dim stLinkCriteria As String   stDocName = "クエリ1"   If Len(Me.テキストボックス & "") Then     stLinkCriteria = "fld_1 LIKE '" & Me.テキストボックス & "*'"     DoCmd.OpenQuery stDocName, acNormal, acEdit     DoCmd.ApplyFilter stDocName, stLinkCriteria   End If Exit_コマンド1_Click:   Exit Sub Err_コマンド1_Click:   MsgBox Err.Description   Resume Exit_コマンド1_Click End Sub 要は、SQL文の WHERE節での検索文の書き方の問題かと思います。 1、列と定数との比較条件: 関係演算子。 2、複数の検索条件の設定: AND と OR 3、範囲: BETWEEN と AND 4、集合: IN 5、パターン照合: LIKE 特定の文字列を含む行を抽出する場合にはキーワード LIKE を使います。 LIKE 'A*' LIKE '[A,B]*' LIKE 'A?1*' 列と定数との比較条件である関係演算子'='ではチト目的を達成するのはムリなケースです。

i00323
質問者

お礼

連絡遅くなりました。 上記方法に少し変化を加えることで 目的を達成できました。ありがとうございます。

関連するQ&A