首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从Visual预览/打印MS访问报告

从Visual预览/打印MS访问报告
EN

Stack Overflow用户
提问于 2014-12-12 20:31:59
回答 1查看 4.7K关注 0票数 2

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

我读过这篇文章:如何从Visual .NET自动化Microsoft

我发现了类似的问题:access数据库中的Vb.Net预览报告,但它们不使用DoCmd.OpenReport方法。

我现在的代码如下:

代码语言:javascript
复制
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调用,就可以将它们转换到接口。

提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-12 23:03:21

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

代码语言:javascript
复制
oAccess.OpenCurrentDatabase("C:\path\to\CLI_CRVM.accdb")

而且,我无法确定|DataDirectory|在这种情况下是否有意义,但我对此深表怀疑。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27451650

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档