来自Access数据库的Vb.Net预览报告

时间:2014-01-13 07:55:12

标签: vb.net ms-access

我正在使用visual studio 2010来开发我的桌面应用程序和ms访问数据库。我已经在访问数据库中设计了报表,它们运行良好。现在我担心的是,是否可以在我的Vb.Net应用程序中使用这些访问报告?

我需要这个,因为分发软件而不是使用水晶报告会更容易,我需要为水晶报告安装运行时机器。

4 个答案:

答案 0 :(得分:2)

这是可能的,但这是一个可怕的实施。您基本上必须启动Access,在Access中打开数据库文件,然后向下导航并启动报告。无法在应用内“查看”报告。它只会在Access内显示。

如果您不想使用Crystal Reports,我认为您最好选择使用ReportViewer控件。

答案 1 :(得分:0)

我发现了这个:https://support.microsoft.com/kb/317113?wa=wsignin1.0

  

要预览或打印Access报告,请调用DoCmd对象的OpenReport方法。当您调用OpenReport时,您传递的参数之一决定了报表是在屏幕上预览,还是发送到打印机:

' Preview a report named Sales:
oAccess.DoCmd.OpenReport(ReportName:="Sales", View:=Access.AcView.acViewPreview)
' Print a report named Sales:
oAccess.DoCmd.OpenReport(ReportName:="Sales", View:=Access.AcView.acViewNormal)

但是我无法找到有关OpenReport方法或DoCmd对象的更多信息/帮助。

答案 2 :(得分:0)

我不是专业的开发人员,但是经过长时间的研究,它已经为我的项目工作了。

我想直接从MS Access打开我现有的报告,然后从非默认安装文件夹路径(每台PC都不同)打开这些报告。第三个要求是打开多个报告(不是全部)。

设计: Form8.vb [Design]

vb.Net代码:

Imports System.ComponentModel
Imports Microsoft.Office.Interop.Access

Public Class Form8

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Dim oAccess As New Microsoft.Office.Interop.Access.Application()
    Dim CurDir As String = System.AppDomain.CurrentDomain.BaseDirectory
    Dim FPath As String = CurDir & "\YourDatabase.accdb"

    oAccess.Visible = True
    oAccess.OpenCurrentDatabase(FPath)

If ComboBox1.Text = "Your text" Then
        oAccess.DoCmd.OpenReport(ReportName:="Your Report Name", View:=AcView.acViewPreview)
ElseIf ComboBox1.Text = "Your text2" Then
        oAccess.DoCmd.OpenReport(ReportName:="Your Report Name", View:=AcView.acViewPreview)
ElseIf ComboBox1.Text = "Your text3" Then
        oAccess.DoCmd.OpenReport(ReportName:="Your Report Name", View:=AcView.acViewPreview)
End If

End Sub
End Class

用YourDatabaseName替换YourDatabase,用YourText替换您的文本,您的text1,您的text2,您的text3,根据需要用您的报告名称替换您的报告名称。

最后,为了使该解决方案起作用,您需要:

1)您的(Conn.open)连接看起来像这样:

Dim dbsource As String = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source = |DataDirectory|\Your DB.accdb"

2)在解决方案资源管理器中,要与项目一起安装的要包含在项目中或安装项目中的数据库。像这样:

Solution Explorer [image]

SetUp Project link

3)在服务器资源管理器中,“数据连接”(源)数据库文件名必须使用完整路径名,例如:

C:\ Users \ User \ Desktop \ YourDatabase.accdb,以及“属性”中的连接字符串,如下所示:

Provider = Microsoft.ACE.OLEDB.12.0;数据源=“ C:\ Users \ User \ Desktop \ YourDatabase.accdb”。

我希望这会有所帮助!

答案 3 :(得分:-1)

以下代码:

Preview a report named Sales:
oAccess.DoCmd.OpenReport(ReportName:="Sales", View:=Access.AcView.acViewPreview)
Print a report named Sales:
oAccess.DoCmd.OpenReport(ReportName:="Sales", View:=Access.AcView.acViewNormal)

但是我无法找到有关OpenReport方法或DoCmd对象的更多信息/帮助。

仅当您使用VB.Net自动化Access应用程序时,此操作才有效。这将打开Access应用程序,允许您查看或打印报告,就像您直接运行Access一样。但是,您需要在运行VB.Net应用程序的计算机上安装Access应用程序(而不仅仅是.mdb或.accdb文件)。

我没有找到任何方法在运行VB.Net应用程序的计算机上没有Access的情况下使用Access报告。我正在考虑将Crystal Reports用于我正在使用的应用程序。