如何检查Access表中是否存在值

oct*_*sim 6 ms-access vba

我在尝试检查表中是否已存在序列号时收到错误消息(Access 2010).

这是我正在使用的代码:

If CurrentDb.OpenRecordset("Select count(*) from Table_Name where vSerial='" & Forms!Form_Name!vSerial & "';").Fields(0) > 0 Then
MsgBox ("Serial number already in use")
Else
Me.ctrl_register.Pages(1).Enabled = True
Me.ctrl_register.Pages(1).SetFocus
End If
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

我使用相同的代码与2个不同的表,我找不到它们之间的区别.表之间的唯一区别是它们中的数据数量.

有人能指出我正确的方向吗?

我得到的错误是Access中的运行时错误3464 - 条件表达式中的数据类型不匹配.

变量vSerial定义为数字.

提前致谢!

Irf*_*ikh 5

vSerial是整数值,您在查询中使用了'',删除它们.引号用于字符串值.

If CurrentDb.OpenRecordset("Select count(*) from Table_Name where vSerial=" & Forms!Form_Name!vSerial & ";").Fields(0) > 0 Then
    MsgBox ("Serial number already in use")
Else
    Me.ctrl_register.Pages(1).Enabled = True
    Me.ctrl_register.Pages(1).SetFocus
End If
Run Code Online (Sandbox Code Playgroud)