1

我是这个网站的新手,也是 vba 代码的新手。另一个用户发布了这个问题,答案代码似乎是我正在寻找的代码。我想检查几个字段是否有重复数据,标记一条消息并转到记录。我希望这段代码能做到这一点。除非我添加自己的字段来检查我得到错误代码 3077 - 语法错误,我不知道如何修复它。任何帮助,将不胜感激。出现此错误的最高行是向下的第 3 行。我正在使用 access 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
4

1 回答 1

2

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

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

最终结果将如下所示:

rst.FindFirst "[ID] <> " & Me.ID & _
 " AND [TitleText] = '" & Me.TitleText & _
 "' AND [UnitCode] = " & Me.UnitCode & _
 " AND [AcademicYear] = " & Me.AcademicYear & _
 " AND [Titleofchapterjournalarticle] = '" & Me.Titleofchapterjournalarticle & "'"
于 2013-10-15T12:04:27.783 回答