Vba 用于检查重复项的查询

Vba 用于检查重复项的查询,vba,duplicates,Vba,Duplicates,编写以下内容是为了通知用户是否输入了重复信息 它从未检测到复制品,但它周围的所有东西都能工作 调试(用于格式等)的值为 这就是问题所在 Dim tmpRS As DAO.Recordset Set tmpRS = CurrentDb.OpenRecordset("SELECT TblReview.ReviewID FROM TblReview Where (TblReview.AppID = " & Me.lisAppID & ") And (TblReview.Rev

编写以下内容是为了通知用户是否输入了重复信息

它从未检测到复制品,但它周围的所有东西都能工作

调试(用于格式等)的值为

这就是问题所在

Dim tmpRS As DAO.Recordset

    Set tmpRS = CurrentDb.OpenRecordset("SELECT TblReview.ReviewID FROM TblReview Where (TblReview.AppID = " & Me.lisAppID & ") And (TblReview.RevDateTime)= #" & Me.dtReviewDate _
    & "# And (TblReview.RevUserID)= '" & Me.txtReviewerName & "'")

    If tmpRS.RecordCount > 0 Then
        MsgBox "Record is a duplicate, it will not be saved", vbOKOnly
        Cancel = 1
        Exit Sub
    End If

    Set tmpRS = Nothing

这里有一些东西可以尝试

  • 在生成sql字符串时显式格式化日期变量:

    Set tmpRS = CurrentDb.OpenRecordset("SELECT TblReview.ReviewID FROM TblReview Where (TblReview.AppID = " & Me.lisAppID _
        & ") And (TblReview.RevDateTime)= #" & Format(Me.dtReviewDate,"mm/dd/yyyy") _
        & "# And (TblReview.RevUserID)= '" & Me.txtReviewerName & "'")
    
  • 考虑使用
    OpenRecordset
    方法中的可选参数。某些类型的连接实际上不返回
    Recordset.RecordCount
    属性的值。发件人:

  • RecordCount属性不会指示一个dynaset–、snapshot–或forward–only–类型的记录集对象中包含多少条记录,直到访问了所有记录


    只是检查:您是否通过手动查询验证了记录的真实存在?嗨,Kenny,我已经检查了,由于应用程序内测试,现在有10条匹配记录。好的,谢谢您的检查。这令人费解。感谢Chipsleten,显式格式(选项一)工作得很好。
    Set tmpRS = CurrentDb.OpenRecordset("SELECT TblReview.ReviewID FROM TblReview Where (TblReview.AppID = " & Me.lisAppID _
        & ") And (TblReview.RevDateTime)= #" & Format(Me.dtReviewDate,"mm/dd/yyyy") _
        & "# And (TblReview.RevUserID)= '" & Me.txtReviewerName & "'")