- 締切済み
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 これだと完全に一致しなければ抽出してくれません。 どの様に変更すればよいでしょうか? よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
If Len(Me.テキストボックス & "") Then stDocName = "クエリ1"
stLinkCriteria = "[クエリデータ] Like '" & Me![テキストボックス] & "*'" としてみては? あと、 Filter OnとRequery を実行しないといけないのでは...
お礼
連絡遅くなりました。 Likeを使うことによって解決出来ました。 ありがとうございます!
クエリ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*' 列と定数との比較条件である関係演算子'='ではチト目的を達成するのはムリなケースです。
お礼
連絡遅くなりました。 上記方法に少し変化を加えることで 目的を達成できました。ありがとうございます。
お礼
ありがとうございます! Likeを使う事によって出来ました。