我在尝试检查表格中是否已存在序列号时收到错误消息(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
我做错了什么?
我在2个不同的表中使用相同的代码,但我找不到它们之间的区别。表之间的唯一区别是它们中的数据数量。
有人能指出我正确的方向吗?
我得到的错误是Access中的运行时错误3464 - 条件表达式中的数据类型不匹配。
变量vSerial定义为数字。
提前致谢!
答案 0 :(得分: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
答案 1 :(得分:2)
您也可以使用该方法:
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