我正在使用visual studio 2010来开发我的桌面应用程序和ms访问数据库。我已经在访问数据库中设计了报表,它们运行良好。现在我担心的是,是否可以在我的Vb.Net应用程序中使用这些访问报告?
我需要这个,因为分发软件而不是使用水晶报告会更容易,我需要为水晶报告安装运行时机器。
答案 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都不同)打开这些报告。第三个要求是打开多个报告(不是全部)。
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)在解决方案资源管理器中,要与项目一起安装的要包含在项目中或安装项目中的数据库。像这样:
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用于我正在使用的应用程序。