访问按钮可根据用户输入打开多个报告

问题描述

我是新来的用户,因此这可能是一件容易的事,或者我只是尝试错误解决它。我有一个包含多个列的报告,样品编号,样品时间,样品类型,干物质,水分。我正在尝试创建一个具有输入框的按钮,供用户选择要对报告进行排序的列。到目前为止,我想到了创建已按每个列排序的各种报告,并按对它们进行排序的列来命名报告,然后尝试使open report操作具有一个参数,该参数用于打开链接到在输入中输入的列的报告框。甚至可能吗?或者有解决方法

PS。我避免创建各种按钮,因为它会填满整个屏幕。

解决方法

好的,这很通用,需要进行一些调整,但它显示了执行此操作的核心。

首先,您需要一个模块(而不是表单/报告代码)。这是为全局变量分配值的地方:

enter image description here

Option Compare Database
Option Explicit

Global rptname As String
Global fldname As String

Sub setRptName(name As String)
    
    rptname = "Report Sorted by: " & name
    fldname = name
End Sub

您将在表单上的命令按钮的Click()事件内调用该代码,然后在此之后打开报告。这将使用一个组合框值,并将该值传递给模块代码,从而创建两个全局变量。

enter image description here

Private Sub cmd_report_Click()
    mdl_Globals.setRptName Me.cmb_fields.Value
    
    DoCmd.OpenReport "Report1",acViewPreview
End Sub

enter image description here

我不确定这是否适用于非预览视图,但是您可能仍然想预览。

最后,在后面的报告代码中,您需要Load()open()事件,也许可以使其在一个或多个内部都可以使用,但我知道这是可行的。 因此设置标题:

Private Sub Report_Load()
    Me.lbl_header.Caption = rptname
End Sub

然后排序:

Private Sub report_open(Cancel As Integer)
    Me.Report.OrderBy = "[" & fldname & "]"
    Me.Report.OrderByOn = True
End Sub

enter image description here

如果表单上的输入框没有与表中字段名称完全匹配的条目,则会弹出一个参数。

enter image description here