【補足】DBselect()について
回答では、SQL文はテスト済みってのを伝える為に次のDBSelect()を使っています。それ以上の意味はないのでDBSelect()についての説明は割愛しています。
Public Function DBSelect(ByVal strQuerySQL As String, _
Optional colDelimita As String = ";", _
Optional rowDelimita As String = ";") As String
On Error GoTo Err_DBSelect
Dim R As Integer ' 行インデックス
Dim N As Integer ' 行総数 - 1
Dim cnn As ADODB.Connection
Dim rst As ADODB.Recordset
Dim fld As ADODB.Field
Dim strList As String ' 全てのデータを区切子で連結して格納
Set cnn = CurrentProject.Connection
Set rst = New ADODB.Recordset
With rst
.Open strQuerySQL, _
CurrentProject.Connection, _
adOpenStatic, _
adLockReadOnly
If Not .BOF Then
N = .RecordCount - 1
.MoveFirst
For R = 0 To N
For Each fld In .Fields
With fld
strList = strList & .Value & colDelimita
End With
Next fld
strList = Mid(strList, 1, Len(strList) - 1) & rowDelimita
.MoveNext
Next R
Else
strList = ""
End If
End With
Exit_DBSelect:
On Error Resume Next
rst.Close
Set rst = Nothing
DBSelect = IIf(Len(strList) > 0, Replace(strList & "[END]", rowDelimita & "[END]", ""), "")
Exit Function
Err_DBSelect:
MsgBox "SELECT 文の実行時にエラーが発生しました。(DBSelect)" & Chr(13) & Chr(13) & _
"・Err.Description=" & Err.Description & Chr(13) & _
"・SQL Text=" & strQuerySQL, _
vbExclamation, " 関数エラーメッセージ"
Resume Exit_DBSelect
End Function
このように ADODB を利用した場合には、ワイルドカードが *→%になります。
【補足】AND を使わないについて。(以下は、私のかってのサイトからの引用です。)
パターン照合: LIKE
WHERE節にキーワード LIKE を使って、特定の文字列を含む行を抽出することができます。
WHERE <文字型列> LIKE '<値>'
<文字型列>には、CHAR型の列の名前を記述し<値>には文字列をシングルクォーテーション(’)で囲んで指定します。<値>の文字列には、次のようなワイルドカード文字列を使うことができます。
% 0個以上の文字に対応します。(%→*)
_ 任意の1文字に対応します。
[...] 各カッコ内に指定した文字に対応します。
[^...] 各カッコ内に指定した文字以外に対応します。(^→!)
次に、キーワードLIKEを使った Accessプロジェクトの DBSelect関数の例文を幾つか紹介します。
[イミディエイト]
? DBSelect("名前, 住所1", "得意先一覧", , "名前 LIKE '山%'",,True)
山田 太郎;大川市;
? DBSelect("名前, 住所1", "得意先一覧", , "名前 LIKE '_木%'",,True)
鈴木 一郎;久留米市;
? DBSelect("名前, 住所1", "得意先一覧", , "名前 LIKE '[山,中]%'",,True)
中村 健太;筑後市;山田 太郎;大川市;
? DBSelect("名前, 住所1", "得意先一覧", , "名前 LIKE '[^山,中]%'",,True)
鈴木 一郎;久留米市;日高 進;柳川市;
AND を使わない為には
[...] 各カッコ内に指定した文字に対応します。
[^...] 各カッコ内に指定した文字以外に対応します。
をりようしますが、^はAccessでは!を使います。
回答では、目的通りの結果を得ていますが・・・。書き終えて、「ウン!なぜOKなのだ?」と疑問が・・・。でも、それ以上は追求していません。質問者も考えてください。
お礼
こちらもできました。 ありがとうございました。