【问题标题】:Vb.Net preview report from access database来自访问数据库的 Vb.Net 预览报告
【发布时间】:2014-01-13 07:55:12
【问题描述】:

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

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

【问题讨论】:

  • 如果您不再使用 Access,那么不会。您当然可以从 .net 启动访问副本,然后从 .net 执行命令以启动 + 加载报告。但是,您不能再获取 FoxPro 报告并将它们与 sql 报告服务一起使用,然后您可以将 Access 报告获取到 sql server 报告服务。 .net 中内置的报表无法移动到 Access。因此,在过去 30 多年的软件行业中,这种方法的工作原理大致相同。但是,如果您可以并且将安装访问副本,那么您当然可以从 .net 启动 Access 并启动报告。

标签: vb.net ms-access


【解决方案1】:

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

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

【讨论】:

  • 现在可以了。我所需要的只是执行此操作的代码,然后看看它是否需要。
  • 我曾尝试使用 microsoft 报表查看器,但我不太了解如何使用它设计报表,因为它非常复杂。
  • 在这里您可以找到有关如何设计报告的完整指南。 msdn.microsoft.com/en-us/library/bb522712.aspx
  • 我设法显示了一份报告,但这并不是我所需要的。它有点不清楚。我会花更多的时间,看看我能降落在哪里。谢谢
【解决方案2】:

我发现了这个: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 对象的信息/帮助。

【讨论】:

    【解决方案3】:

    我不是专业的开发人员,但经过长时间的研究,它适用于我的项目。

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

    设计: 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
    

    将 YourDatabase 替换为 YourDatabaseName,将 Your text,Your text1,Your text2,Your text3 替换为 YourText,将 Your Report Name 替换为您的报告名称,根据需要。

    最后,为了让这个解决方案发挥作用,您需要:

    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;Data Source = "C:\Users\User\Desktop\YourDatabase.accdb"。

    希望对你有帮助!!!

    【讨论】:

      【解决方案4】:

      以下代码:

      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 用于我现在正在开发的应用程序。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-01-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多