有難うございます。
検索結果を表示するための式が全く作られていませんでした。
Function TakeOut(strName As String, str区切り As String, _
strFieldName As String, g As Integer)
'複数語句を可能にし、いずれかに一致する場合を検索する。
'部分、前方、後方一致をの選択機能も持たせる。
Dim VarSplit As Variant
Dim VarTemp As Variant
Dim a As Integer
Dim b As Integer
Dim c As Integer
Dim i As Integer
VarSplit = Split(strName, str区切り) ' --- A
'str区切りの個数を求める。
a = Len(strName)
For b = 1 To a
If Mid(strName, b, 1) = str区切り Then ' --- B
c = c + 1
End If
Next
VarTemp = Null '初期化
For i = 0 To c
If g = 1 Then
VarTemp = VarTemp & IIf(Not IsNull(VarTemp), " OR " & strFieldName & _
" LIKE ", strFieldName & " LIKE ") & "'*" & VarSplit(i) & "*'"
ElseIf g = 2 Then
VarTemp = VarTemp & IIf(Not IsNull(VarTemp), " OR " & strFieldName & _
" LIKE ", strFieldName & " LIKE ") & "'" & VarSplit(i) & "*'"
ElseIf g = 3 Then
VarTemp = VarTemp & IIf(Not IsNull(VarTemp), " OR " & strFieldName & _
" LIKE ", strFieldName & " LIKE ") & "'*" & VarSplit(i) & "'"
End If
Next
TakeOut = VarTemp
End Function
を貼り付けたら出来ました。
これで出てきた検索結果のひとつを選択して、入力フォームに反映させることって出来ますか?
文字数制限で全部明記できませんでしたので、細くします。わかりにくくて申し訳ありません。
以下の構文を組んでみました(サンプルを元に直しただけなので、細かい意味はよくわかっていません。すみません)。
Private Sub cmd検索_Click()
On Error GoTo エラー
Dim strTableName As String
Dim strFormName As String
Dim strTxtName As String
Dim strSQLWhere As String
strTableName = "M_商品" 'テーブル名を指定します。
strFormName = "検索結果" '検索結果フォーム名を指定します。
If Not IsNull(Me.txt商品名) Then
If Me.一致選択 = 1 Then
strSQLWhere = TakeOut(txt商品名, ",", "商品名", 1)
ElseIf Me.一致選択 = 2 Then
strSQLWhere = TakeOut(txt商品名, ",", "商品名", 2)
ElseIf Me.一致選択 = 3 Then
strSQLWhere = TakeOut(txt商品名, ",", "商品名", 3)
End If
End If
If vbYes = MsgBox("結果を表示しますか?", vbCritical + vbYesNo) Then
DoCmd.OpenForm strFormName, acFormDS, "", strSQLWhere
End If
' Debug.Print strSQLWhere
Exit Sub
エラー:
MsgBox Err.Number & " : " & Err.Description
Exit Sub
End Sub
お分かりになりますでしょうか?
補足
有難うございます。 検索結果を表示するための式が全く作られていませんでした。 Function TakeOut(strName As String, str区切り As String, _ strFieldName As String, g As Integer) '複数語句を可能にし、いずれかに一致する場合を検索する。 '部分、前方、後方一致をの選択機能も持たせる。 Dim VarSplit As Variant Dim VarTemp As Variant Dim a As Integer Dim b As Integer Dim c As Integer Dim i As Integer VarSplit = Split(strName, str区切り) ' --- A 'str区切りの個数を求める。 a = Len(strName) For b = 1 To a If Mid(strName, b, 1) = str区切り Then ' --- B c = c + 1 End If Next VarTemp = Null '初期化 For i = 0 To c If g = 1 Then VarTemp = VarTemp & IIf(Not IsNull(VarTemp), " OR " & strFieldName & _ " LIKE ", strFieldName & " LIKE ") & "'*" & VarSplit(i) & "*'" ElseIf g = 2 Then VarTemp = VarTemp & IIf(Not IsNull(VarTemp), " OR " & strFieldName & _ " LIKE ", strFieldName & " LIKE ") & "'" & VarSplit(i) & "*'" ElseIf g = 3 Then VarTemp = VarTemp & IIf(Not IsNull(VarTemp), " OR " & strFieldName & _ " LIKE ", strFieldName & " LIKE ") & "'*" & VarSplit(i) & "'" End If Next TakeOut = VarTemp End Function を貼り付けたら出来ました。 これで出てきた検索結果のひとつを選択して、入力フォームに反映させることって出来ますか?