我有一个Visual Basic 2013程序,可连接到MS Access 2010数据库。程序计算完值并将值写到DB后,我需要打印Access DB中的报告。
我已阅读以下内容:如何从Visual Basic .NET自动进行Microsoft Access
我发现了类似的问题,例如: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
这段代码可以编译,但是运行时会出现以下错误:
CLI CRVM.exe中发生类型为'System.InvalidCastException'的未处理异常
附加信息:无法将类型为“ Microsoft.Office.Interop.Access.ApplicationClass”的COM对象转换为类“ CLI_CRVM.Access.applicationclass”。代表COM组件的类型的实例不能转换为不代表COM组件的类型。但是,只要基础COM组件支持对接口IID的QueryInterface调用,就可以将它们强制转换为接口。
提前致谢。
对象OpenCurrentDatabase()
方法的参数Access.Application
仅是数据库文件的位置,而不是OLEDB连接字符串。您的陈述应该更像
oAccess.OpenCurrentDatabase("C:\path\to\CLI_CRVM.accdb")
此外,我无法确定|DataDirectory|
在这种情况下是否有意义,但我对此表示高度怀疑。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句