从Visual Basic预览/打印MS Access报告

时间:2014-12-12 20:31:59

标签: vb.net ms-access reporting

我有一个连接到MS Access 2010数据库的Visual Basic 2013程序。程序计算并将值写入DB后,我需要打印Access DB中的报告。

我已经读完了这个:How To Automate Microsoft Access From Visual Basic .NET

我发现了类似的问题:Vb.Net preview report from access database但他们没有使用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调用,它们就可以转换为接口。

提前致谢。

1 个答案:

答案 0 :(得分:1)

OpenCurrentDatabase()对象的Access.Application方法的参数只是数据库文件的位置,而不是OLEDB连接字符串。你的陈述应该更像是

oAccess.OpenCurrentDatabase("C:\path\to\CLI_CRVM.accdb")

此外,我无法确定|DataDirectory|在这种情况下是否有意义,但我对此表示高度怀疑。