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

Vba 如何检查Access表中是否存在值,vba,ms-access,Vba,Ms Access,我在尝试检查我的表(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_regis

我在尝试检查我的表(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
我做错了什么

我对两个不同的表使用相同的代码,但我找不到它们之间的差异。这些表之间的唯一区别是它们中的数据数量

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

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

变量vSerial定义为一个数字


提前谢谢

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

您也可以使用该方法:

If DCount("vSerial", "from Table_Name", "vSerial=" & Forms!Form_Name!vSerial)  > 0 Then
    MsgBox ("Serial number already in use")
Else
    Me.ctrl_register.Pages(1).Enabled = True
    Me.ctrl_register.Pages(1).SetFocus
End If