I am getting frustrated at not being able to sort what looks like a simple problem. I am reading through a table looking for duplicate values in the FullName text field. I want to store in a new table the duplicate records I find, storing just the MemberNumber and the FullName. When the VBA code runs and finds duplicates, the SQL statement to insert a new record into the Duplicates table asks for the value of LastMemberNumber and LastFullName when it already has the values and has displayed them in the message boxes! What am I doing wrong?????
The code is:
Private Sub Command0_Click()
Dim rs As DAO.Recordset
Dim dbs As Database
Dim LastMemberNumber As Integer
Dim LastFullName As String
Dim SQLStr1 As String
Dim SQLStr2 As String
Dim SQLStr3 As String
Set dbs = CurrentDb
DoCmd.RunSQL "Delete * from DuplicateNames"
SQLStr3 = "select MemberNumber, FullName from Members Order By FullName"
Set rs = dbs.OpenRecordset(SQLStr3)
LastMemberNumber = 0
LastFullName = " "
rs.MoveFirst
Do While Not rs.EOF
If rs!FullName = LastFullName Then
MsgBox "Duplicate" & vbCrLf & "Member name: " & LastFullName
MsgBox "Duplicate" & vbCrLf & "Member number: " & LastMemberNumber
SQLStr1 = "INSERT INTO DuplicateNames ([MemberNumber], [FullName]) VALUES (LastMemberNumber, LastFullName)"
DoCmd.RunSQL SQLStr1
SQLStr2 = "INSERT INTO DuplicateNames ([MemberNumber], [FullName]) VALUES (rs!MemberNumber, rs!FullName)"
DoCmd.RunSQL SQLStr2
End If
LastFullName = rs!FullName
LastMemberNumber = rs!MemberNumber
rs.MoveNext
Loop
MsgBox "End"
Set rs = Nothing
dbs.Close
End Sub
The code is:
Private Sub Command0_Click()
Dim rs As DAO.Recordset
Dim dbs As Database
Dim LastMemberNumber As Integer
Dim LastFullName As String
Dim SQLStr1 As String
Dim SQLStr2 As String
Dim SQLStr3 As String
Set dbs = CurrentDb
DoCmd.RunSQL "Delete * from DuplicateNames"
SQLStr3 = "select MemberNumber, FullName from Members Order By FullName"
Set rs = dbs.OpenRecordset(SQLStr3)
LastMemberNumber = 0
LastFullName = " "
rs.MoveFirst
Do While Not rs.EOF
If rs!FullName = LastFullName Then
MsgBox "Duplicate" & vbCrLf & "Member name: " & LastFullName
MsgBox "Duplicate" & vbCrLf & "Member number: " & LastMemberNumber
SQLStr1 = "INSERT INTO DuplicateNames ([MemberNumber], [FullName]) VALUES (LastMemberNumber, LastFullName)"
DoCmd.RunSQL SQLStr1
SQLStr2 = "INSERT INTO DuplicateNames ([MemberNumber], [FullName]) VALUES (rs!MemberNumber, rs!FullName)"
DoCmd.RunSQL SQLStr2
End If
LastFullName = rs!FullName
LastMemberNumber = rs!MemberNumber
rs.MoveNext
Loop
MsgBox "End"
Set rs = Nothing
dbs.Close
End Sub