当我点击发票预览中的确定按钮时,我收到“运行时错误'3615'表达式中的类型不匹配”。
我打开主菜单>>选择工作订单ID>>点击发票预览>>接受默认信息>>单击确定。当我这样做时,我得到上述错误。我无法弄清楚它为什么会发生并在两个地方都改变了字段类型,并以各种不同的格式重做VBA代码,以为我编码错误。
有人可以帮助我找到错误的底部...
取消链接......
答案 0 :(得分:0)
当您单击该按钮时,这是 btnInvoicePreview_Click()行,它会触发错误#3615,&#34;在表达式中键入不匹配。&#34; < / p>
DoCmd.OpenReport "Invoice", acPreview
由于 Invoice 报告的记录来源查询中的此子句而发生错误。
FROM
Employee
RIGHT JOIN
(
Client
INNER JOIN [Work Order]
ON Client.ClientID = [Work Order].ClientID
)
ON Employee.EmployeeID = [Work Order].EmployeeID
Employee.EmployeeID
是AutoNumber,这意味着它的基本数据类型是Long Integer。但是[Work Order].EmployeeID
是Text数据类型。因此,您会收到&#34;类型不匹配&#34; 错误,因为查询要求使用文本字段加入数字字段。
解决问题的两种方法......
ON Employee.EmployeeID = CLng([Work Order].EmployeeID)
;或ON CStr(Employee.EmployeeID) = [Work Order].EmployeeID
第一种方法可能需要更改其他数据库对象(查询,表单,报告),以便它们不会因字段数据类型更改而中断。我不知道会有多广泛(因此也很痛苦)。
第二种方法可行,但Access查询设计器将无法再在“设计视图”中显示连接条件。如果您需要转换的值与您需要转换它们的函数不兼容,则会出现更大的问题。例如,所有这些抛出错误:CLng(Null)
; CLng("")
; CLng("foo")