在对话框中显示访问报告
Show Access Report in dialog
我想显示 Access 报告而不显示 Access 的 MainForm。我想在对话框或类似的东西中显示它。我可以显示报告,但打开 Access 的 Main Window:
_access.DoCmd.OpenReport(
"myReport", //ReportName
AcView.acViewReport, //View
System.Reflection.Missing.Value,
"my Where Condition"
);
但这会一直打开 Access。我只想在对话框中查看我的报告。即使我设置 AcWindowMode.acDialog
属性 它也会在它后面打开 Access。
我也知道我可以将它保存为 PDF 并打开它。但这对我来说是不可能的。
有没有办法在对话框中显示访问报告而不显示(或隐藏)后面的访问主 Window?
你可以这样做:
首先,在访问应用程序中,将界面设置为标签式。和 un-check 显示标签。
现在在 Access 的标准代码模块中编写代码存根。
这样说:
Sub RunMyReport(s As String)
DoCmd.ShowToolbar "Ribbon", acToolbarNo
' now launch report
DoCmd.OpenReport "qryHotels", acViewReport
End Sub
现在,您的 .net 代码将如下所示
(我什至不关心互操作——它没有多大帮助)。
您有此 .net 代码:
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim objAccess As Object = CreateObject("Access.Application")
objAccess.OpenCurrentDatabase("C:\test\test44.accdb")
objAccess.Run("RunMyReport", "qryHotels")
objAccess.Visible = True
End Sub
结果现在将如下所示:
note the vb form that launched the form.
Note the Access report,
it shows no ribbon or background interface.
请注意,我们将报告名称传递给给定的例程。
现在您可能可以移动此 VBA 代码:
DoCmd.ShowToolbar "Ribbon", acToolbarNo
' now launch report
DoCmd.OpenReport "qryHotels", acViewReport
到 .net 端,甚至不必调用 VBA 例程。
Dim objAccess As Object = CreateObject("Access.Application")
objAccess.OpenCurrentDatabase("C:\test\test44.accdb")
objAccess.DoCmd.ShowToolbar("Ribbon", 2) ' acToolbarNo = 2
objAccess.DoCmd.OpenReport("qryHotels", 5) ' acViewReport = 5
objAccess.Visible = True
所以,实际上我们不需要VBA辅助函数,我们可以打开任何报表。隐藏功能区的命令有效,其他设置(隐藏导航窗格,标签式界面要在访问应用程序中设置)。
所以上面应该有效。只要几行vb.net代码,那么作为c#,应该很容易转换。例如,这应该有效:
{
var objAccess = Interaction.CreateObject("Access.Application");
objAccess.OpenCurrentDatabase(@"C:\test\test44.accdb");
objAccess.DoCmd.ShowToolbar("Ribbon", 2); // acToolbarNo = 2
objAccess.DoCmd.OpenReport("qryHotels", 5); // acViewReport = 5
objAccess.Visible = true;
}
您可以考虑 inter-op 程序集,因为它对 intel-sense 有帮助,但以上内容没有任何参考办公室或使用 inter-op 程序集。
我想显示 Access 报告而不显示 Access 的 MainForm。我想在对话框或类似的东西中显示它。我可以显示报告,但打开 Access 的 Main Window:
_access.DoCmd.OpenReport(
"myReport", //ReportName
AcView.acViewReport, //View
System.Reflection.Missing.Value,
"my Where Condition"
);
但这会一直打开 Access。我只想在对话框中查看我的报告。即使我设置 AcWindowMode.acDialog
属性 它也会在它后面打开 Access。
我也知道我可以将它保存为 PDF 并打开它。但这对我来说是不可能的。
有没有办法在对话框中显示访问报告而不显示(或隐藏)后面的访问主 Window?
你可以这样做:
首先,在访问应用程序中,将界面设置为标签式。和 un-check 显示标签。
现在在 Access 的标准代码模块中编写代码存根。
这样说:
Sub RunMyReport(s As String)
DoCmd.ShowToolbar "Ribbon", acToolbarNo
' now launch report
DoCmd.OpenReport "qryHotels", acViewReport
End Sub
现在,您的 .net 代码将如下所示 (我什至不关心互操作——它没有多大帮助)。 您有此 .net 代码:
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim objAccess As Object = CreateObject("Access.Application")
objAccess.OpenCurrentDatabase("C:\test\test44.accdb")
objAccess.Run("RunMyReport", "qryHotels")
objAccess.Visible = True
End Sub
结果现在将如下所示:
note the vb form that launched the form.
Note the Access report,
it shows no ribbon or background interface.
请注意,我们将报告名称传递给给定的例程。 现在您可能可以移动此 VBA 代码:
DoCmd.ShowToolbar "Ribbon", acToolbarNo
' now launch report
DoCmd.OpenReport "qryHotels", acViewReport
到 .net 端,甚至不必调用 VBA 例程。
Dim objAccess As Object = CreateObject("Access.Application")
objAccess.OpenCurrentDatabase("C:\test\test44.accdb")
objAccess.DoCmd.ShowToolbar("Ribbon", 2) ' acToolbarNo = 2
objAccess.DoCmd.OpenReport("qryHotels", 5) ' acViewReport = 5
objAccess.Visible = True
所以,实际上我们不需要VBA辅助函数,我们可以打开任何报表。隐藏功能区的命令有效,其他设置(隐藏导航窗格,标签式界面要在访问应用程序中设置)。
所以上面应该有效。只要几行vb.net代码,那么作为c#,应该很容易转换。例如,这应该有效:
{
var objAccess = Interaction.CreateObject("Access.Application");
objAccess.OpenCurrentDatabase(@"C:\test\test44.accdb");
objAccess.DoCmd.ShowToolbar("Ribbon", 2); // acToolbarNo = 2
objAccess.DoCmd.OpenReport("qryHotels", 5); // acViewReport = 5
objAccess.Visible = true;
}
您可以考虑 inter-op 程序集,因为它对 intel-sense 有帮助,但以上内容没有任何参考办公室或使用 inter-op 程序集。