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

締切り済みの質問

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

これだと完全に一致しなければ抽出してくれません。
どの様に変更すればよいでしょうか?
よろしくお願いします。

投稿日時 - 2008-04-10 16:42:37

QNo.3937766

困ってます

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

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

回答(3)

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

投稿日時 - 2008-04-10 17:15:15

お礼

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

投稿日時 - 2008-04-12 17:08:57

ANo.2

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

投稿日時 - 2008-04-10 17:09:07

お礼

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

投稿日時 - 2008-04-12 17:08:24

クエリ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*'

列と定数との比較条件である関係演算子'='ではチト目的を達成するのはムリなケースです。

投稿日時 - 2008-04-10 17:06:38

お礼

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

投稿日時 - 2008-04-12 17:06:38

あなたにオススメの質問