DoCmd.OpenReport 上的错误
Posted
技术标签:
【中文标题】DoCmd.OpenReport 上的错误【英文标题】:Error on DoCmd.OpenReport 【发布时间】:2014-01-15 16:13:33 【问题描述】:单击“发票预览”上的“确定”按钮时,我收到“运行时错误 '3615' 表达式类型不匹配”。
我打开主菜单 >> 选择工作订单 ID >> 单击发票预览 >> 接受默认信息 >> 单击确定。当我这样做时,我收到上述错误。我无法弄清楚为什么会发生这种情况,并且在这两个地方都更改了字段类型,并以各种不同格式重做 VBA 代码,认为我编码错误。
谁能帮我找出错误的根源...
链接已删除...
【问题讨论】:
【参考方案1】:当您单击该按钮时,这是 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
是文本数据类型。因此,您会收到 "type mismatch" 错误,因为查询要求将数字字段与文本字段连接起来。
解决问题的两种方法...
-
更改一个表中的字段类型,使两个字段具有相同的数据类型,或至少兼容的数据类型
转换一个的数据类型以匹配另一个的数据类型... 2个例子:
ON Employee.EmployeeID = CLng([Work Order].EmployeeID)
;或ON CStr(Employee.EmployeeID) = [Work Order].EmployeeID
第一种方法可能需要更改其他数据库对象(查询、表单、报表),这样它们就不会因字段数据类型更改而中断。我不知道那会有多广泛(因此是痛苦的)。
第二种方法可行,但 Access 查询设计器将不再能够在设计视图中显示连接条件。如果您需要转换的值与您需要转换它们的函数不兼容,则会存在更大的问题。例如,所有这些都会抛出错误:CLng(Null)
; CLng("")
; CLng("foo")
【讨论】:
谢谢...现在我可以修复我的报告问题,但至少它会出现。哈哈! :) 谢谢以上是关于DoCmd.OpenReport 上的错误的主要内容,如果未能解决你的问题,请参考以下文章
从 DoCmd.OpenReport 将参数传递给 Access 2010 报告
MS.Access - 在 DoCmd.OpenReport [where 条件] 中使用 2 个过滤条件从表单打印报表