我有一个Visual 2013程序,它连接到MS 2010数据库。在程序计算并将值写入DB之后,我需要打印Access DB中的报表。
我读过这篇文章:如何从Visual .NET自动化Microsoft
我发现了类似的问题:access数据库中的Vb.Net预览报告,但它们不使用DoCmd.OpenReport方法。
我现在的代码如下:
Imports Access = Microsoft.Office.Interop.Access
Public Class FrmReports
Dim oAccess As Access.application
Private Sub btnSumByPlan_Click(sender As Object, e As EventArgs) Handles btnSumByPlan.Click
oAccess = CreateObject("Access.Application")
oAccess.visible = True
oAccess.opencurrentdatabase ("Provider=Microsoft.ACE.OLEDB.12.0;DataSource=|DataDirectory|\CLI_CRVM.accdb")
oAccess.docmd.openreport(ReportName:="SumByPlan", View:=Access.AcView.acViewPreview)
End Sub
End Class此代码编译,但在运行时给出以下错误:
“System.InvalidCastException”类型的未处理异常发生在CLI CRVM.exe中 其他信息:无法将类型为'Microsoft.Office.Interop.Access.ApplicationClass‘的COM对象转换为ype 'CLI_CRVM.Access.applicationclass’类。表示COM组件的类型的实例不能转换为不表示COM组件的类型;但是,只要底层COM组件支持对接口的IID的QueryInterface调用,就可以将它们转换到接口。
提前谢谢。
发布于 2014-12-12 23:03:21
OpenCurrentDatabase()对象的Access.Application方法的参数只是数据库文件的位置,而不是OLEDB连接字符串。你的陈述应该更像是
oAccess.OpenCurrentDatabase("C:\path\to\CLI_CRVM.accdb")而且,我无法确定|DataDirectory|在这种情况下是否有意义,但我对此深表怀疑。
https://stackoverflow.com/questions/27451650
复制相似问题