在创建新记录之前检查重复记录的记录

时间:2013-10-15 11:22:00

标签: vba access-vba

我是这个网站的新手,也是vba代码的新手。另一个用户发布了这个问题,答案代码似乎是我正在寻找的代码。我想检查几个字段的重复数据,标记一条消息并转到记录。我希望这段代码可以做到这一点。除非我添加自己的字段来检查我得到错误代码3077 - 语法错误,我不知道如何解决它。任何帮助,将不胜感激。针对此错误设置的线是第3行。我正在使用2010年的访问权限。我不知道如何链接到这个问题,但我被告知我应该问一个关于我的问题的新问题。

Private Sub Form_BeforeUpdate(Cancel As Integer)
    Dim rst As Recordset
    Set rst = Me.RecordsetClone
    rst.FindFirst "[ID] <> " & Me.ID & " AND [TitleText] = " & Me.TitleText & " AND [UnitCode] = " & Me.UnitCode & " AND  [AcademicYear] = " & Me.AcademicYear & " AND    [Titleofchapterjournalarticle] = " & Me.Titleofchapterjournalarticle
    If Not rst.NoMatch Then
        Cancel = True
        If MsgBox("A record matching these fields already exist", vbYesNo) = vbYes Then
            Me.Undo
            DoCmd.SearchForRecord , , acFirst, "[ID] = " & rst("ID")
        End If
    End If
    rst.Close
End Sub

1 个答案:

答案 0 :(得分:2)

我认为你的意思是第四行是突出显示的rst.FindFirst...

如果是这种情况,则FindFirst字符串中会出现语法错误。可能是您的 TitleText Titleofchapterjournalarticle 字段包含空格或逻辑代码(OR,AND)。要防止这种情况,请在字符串中使用'(单引号)包围任何字符串类型字段。

最终结果如下:

rst.FindFirst "[ID] <> " & Me.ID & _
 " AND [TitleText] = '" & Me.TitleText & _
 "' AND [UnitCode] = " & Me.UnitCode & _
 " AND [AcademicYear] = " & Me.AcademicYear & _
 " AND [Titleofchapterjournalarticle] = '" & Me.Titleofchapterjournalarticle & "'"