单击发票预览上的“确定”按钮时,出现“运行时错误'3615'表达式中的类型不匹配”。
我打开主菜单>>选择工作单ID >>单击发票预览>>接受默认信息>>单击确定。当我这样做时,会出现上述错误。我无法弄清楚为什么会发生这种情况,并且在两个地方都更改了字段类型,并以我编码错误的方式以各种不同的格式重做了VBA代码。
有人可以帮助我找到错误的根源...
链接已删除...
单击该按钮时,这是btnInvoicePreview_Click()行,它将触发错误#3615,“表达式中的类型不匹配”。
DoCmd.OpenReport "Invoice", acPreview
由于发票报表的记录源查询中的此子句而发生错误。
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数据类型。因此,您会收到“类型不匹配”错误,因为查询要求将数字字段与文本字段连接在一起。
解决问题的两种方法...
ON Employee.EmployeeID = CLng([Work Order].EmployeeID)
; 要么ON CStr(Employee.EmployeeID) = [Work Order].EmployeeID
第一种方法可能需要更改其他数据库对象(查询,表单,报表),因此它们不会由于字段数据类型更改而中断。我不知道那会是多么广泛(因此很痛苦)。
第二种方法可行,但是Access查询设计器将不再能够在Design View中显示联接条件。如果您需要转换的值与您强制转换它们的函数不兼容,则会存在更大的问题。例如,所有这些抛出错误:CLng(Null)
; CLng("")
;CLng("foo")
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句