我创建了一个将数据插入Access表的用户窗体。在插入数据时,我要确保插入的ID必须在Access表中存在。我已经使用DCOUNT函数来做到这一点,但这正在呈现“类型不匹配”错误。我已经尝试了在互联网上找到的所有解决方案,但是这里没有任何工作。请帮忙!
我已经修改了DCOUNT表达式以将表单变量名放入'',]中,创建了一个引用DCOUNT函数但没有任何作用的外部变量
Set conn = createobject("ADODB.connection")
set rs = createobject("ADODB.recordset")
strconn = "Provider=Microsoft.ACE.OLEDB.12.0;" & "Data source = C:\MyPathMyDB.accdb"
qry = "select * from employee"
with rs
.adnew
if isnumeric(ManagerID) = false then
msgbox "Invalid Manager ID"
exit sub
elseif application.worksheetfunction.dcount("Employee_ID","Employee","activ='Yes' and Employee_ID='" & [EmployeeForm.ManagerID] & "'") = 0 then
msgbox "Manager does not exist"
exit sub
else
. fields("Manager_ID").value = ManagerID
end if
end with
我希望函数确定Employee_ID中是否存在Employeeform.ManagerID。如果是,则继续,否则显示错误消息
答案 0 :(得分:1)
由于您检查了 ManagerID 为数字,所以我猜它的值不是文本,并且 active 可能是布尔值,您可以访问 ManagerID 本身,按原样使用 ,条件应为:
"activ=True and Employee_ID=" & ManagerID & ""
答案 1 :(得分:0)
Dcount(您要使用的那个)是一种Access功能:Excel的一个是用于查询工作表范围的。您将需要查询您的访问数据库以查看是否有记录:
例如:
sql = "select * from employee where activ='Yes' and Employee_ID='" & _
[EmployeeForm.ManagerID] & "'"
rs.open sql, conn
If not rs.eof then
'got a match: add the new record and update to database
else
msgbox "Manager not found!"
end if