Vba 如何使用“查找下一个”方法搜索记录

Vba 如何使用“查找下一个”方法搜索记录,vba,ms-access-2010,Vba,Ms Access 2010,我有多条客户编号相同的记录,我使用“查找下一条”方法搜索客户编号相同的下一条记录。我的代码将只搜索第二条记录,而不会搜索同一客户号码的第三条或第四条记录。下面是代码,你能帮忙吗 Private Sub Command114_Click() Dim db As dao.Database Dim rs1 As dao.Recordset Dim pn As Long Set db = CurrentDb() Set rs1 = db.OpenRecordset

我有多条客户编号相同的记录,我使用“查找下一条”方法搜索客户编号相同的下一条记录。我的代码将只搜索第二条记录,而不会搜索同一客户号码的第三条或第四条记录。下面是代码,你能帮忙吗

Private Sub Command114_Click()
    Dim db As dao.Database
    Dim rs1 As dao.Recordset
    Dim pn As Long
    Set db = CurrentDb()
    Set rs1 = db.OpenRecordset("Application", dbOpenDynaset)
    If (Text85 & vbNullString) = vbNullString Then
        MsgBox "Please enter the Account no/CIF"
    Else
        pn = Me.Text85.Value
        rs1.FindNext "[Cus_Number] = " & pn
        If rs1.NoMatch Then
            MsgBox ("Sorry The Accountno/CIF is not found")
        Else
            Me.S_No = rs1.Fields("sno").Value
            Me.Cus_Name = rs1.Fields("Cus_Name").Value
            Me.App_level1 = rs1.Fields("App_level1").Value
            Me.App_level2 = rs1.Fields("App_level2").Value
            Me.App_level3 = rs1.Fields("App_level3").Value
            Me.Dec_level1 = rs1.Fields("Dec_level1").Value
            Me.Dec_level2 = rs1.Fields("Dec_level2").Value
            Me.Dec_level3 = rs1.Fields("Dec_level3").Value
            Me.Com_level1 = rs1.Fields("Com_level1").Value
            Me.Com_level2 = rs1.Fields("Com_level2").Value
            Me.Com_level3 = rs1.Fields("Com_level3").Value
            Me.Date1 = rs1.Fields("Date1").Value
            Me.Date2 = rs1.Fields("Date2").Value
            Me.Date3 = rs1.Fields("Date3").Value
        End If
    End If
        rs1.FindNext "[Cus_Number] = " & pn
        Set rs1 = Nothing
End Sub

我假设您想要的功能是将所有实例(2、3、4等)更改为输入的值。移除此项(靠近末端的一项,如果有):

并将FindNext放入一个循环中,该循环将继续查找和更新您的记录,直到出现NoMatch:

    rs1.FindNext "[Cus_Number] = " & pn

    If rs1.NoMatch Then
        MsgBox ("Sorry The Accountno/CIF is not found")
    Else
        Do Until rs1.NoMatch
            Me.S_No = rs1.Fields("sno").Value
            Me.Cus_Name = rs1.Fields("Cus_Name").Value
            Me.App_level1 = rs1.Fields("App_level1").Value
            Me.App_level2 = rs1.Fields("App_level2").Value
            Me.App_level3 = rs1.Fields("App_level3").Value
            Me.Dec_level1 = rs1.Fields("Dec_level1").Value
            Me.Dec_level2 = rs1.Fields("Dec_level2").Value
            Me.Dec_level3 = rs1.Fields("Dec_level3").Value
            Me.Com_level1 = rs1.Fields("Com_level1").Value
            Me.Com_level2 = rs1.Fields("Com_level2").Value
            Me.Com_level3 = rs1.Fields("Com_level3").Value
            Me.Date1 = rs1.Fields("Date1").Value
            Me.Date2 = rs1.Fields("Date2").Value
            Me.Date3 = rs1.Fields("Date3").Value

            rs1.FindNext "[Cus_Number] = " & pn
        Loop
    End If
不过,总的来说,我不确定你想做什么。您是否希望使用表单上的最新信息更新记录集?您拥有的代码将使用记录集中找到的最后一组值覆盖表单上的当前值。我本以为你想要相反的

    rs1.FindNext "[Cus_Number] = " & pn

    If rs1.NoMatch Then
        MsgBox ("Sorry The Accountno/CIF is not found")
    Else
        Do Until rs1.NoMatch
            Me.S_No = rs1.Fields("sno").Value
            Me.Cus_Name = rs1.Fields("Cus_Name").Value
            Me.App_level1 = rs1.Fields("App_level1").Value
            Me.App_level2 = rs1.Fields("App_level2").Value
            Me.App_level3 = rs1.Fields("App_level3").Value
            Me.Dec_level1 = rs1.Fields("Dec_level1").Value
            Me.Dec_level2 = rs1.Fields("Dec_level2").Value
            Me.Dec_level3 = rs1.Fields("Dec_level3").Value
            Me.Com_level1 = rs1.Fields("Com_level1").Value
            Me.Com_level2 = rs1.Fields("Com_level2").Value
            Me.Com_level3 = rs1.Fields("Com_level3").Value
            Me.Date1 = rs1.Fields("Date1").Value
            Me.Date2 = rs1.Fields("Date2").Value
            Me.Date3 = rs1.Fields("Date3").Value

            rs1.FindNext "[Cus_Number] = " & pn
        Loop
    End If