如何在列中搜索位置不同的单词

时间:2019-07-11 02:34:24

标签: vba ms-access

我正在尝试更新名称包含用户键入内容的字段。我使用通配符,它​​适用于大多数名称。它不适用于某些名称,因为在该列中姓氏排在第一位,其次是中间名,然后是姓氏。因此,当用户键入名字和姓氏时,查询将找不到该名字,因为输入的名字顺序不正确。如何以这样的方式进行操作:在表单中键入名称的顺序无关紧要,并且无论如何用户仍然可以查找该字段并进行更新。

Private Sub btnUpdate_Click()
     Dim db As DAO.Database
     Dim qdf As QueryDef
     Dim sql As String

     Set db = CurrentDb()
     Set qdf = db.QueryDefs("UpdateSM")

     sqlString = "UPDATE KissFlowtbl SET SM = '" & Me.txtSM & "' WHERE AM Like  '*" & Me.txtAM & "*'  "
     qdf.sql = sqlString

      If Nz(Me.txtSM, "") = "" Then
        MsgBox "Please enter SM name"
        Resume Exit_Update
      ElseIf Nz(Me.txtAM, "") = "" Then
        MsgBox "Please enter AM name"
        Resume Exit_Update
      End If

     DoCmd.OpenQuery "UpdateSM"

      qdf.Close
      CurrentDb.Close

Exit_Update:
Exit Sub

Exit_UpdateEmail:
If Err.Number = 2501 Then
    Resume Exit_Update
Else
    MsgBox Err.Description
    Resume Exit_Update
End If
End Sub

1 个答案:

答案 0 :(得分:0)

这只是一个示例。

您应该使用空格将Me.txtAM中的字符串值吐出。

    name = Split(Me.txtAM, " ")

根据您的需要重新排列值并将其存储到变量中。您需要先检查数组的长度。

    name1 = name(0)
    name2 = name(1)
    name3 = name(2)

    sqlString = "UPDATE KissFlowtbl SET SM = '" & Me.txtSM & "' WHERE AM Like  '*" & name1 & "*'  " AND AM Like  '*" & name2 & "*'  " AND AM Like  '*" & name3 & "*'  "