【问题标题】:Is there a way to allow the end user to sort a report when loaded in MS Access?有没有办法让最终用户在 MS Access 中加载报告时对报告进行排序?
【发布时间】:2015-10-17 23:10:00
【问题描述】:

我在 Access 中使用 2 种排序方式(按日期和 FG 编号)进行了报告。我想将默认排序保留为按日期,但仍允许用户在 2 之间切换。有没有办法在报告本身上这样做?我不希望用户必须打开两个不同的报告,而且我认为让用户选择切换会更好看。

按照以下建议尝试的方法

Private Sub Report_Load()

    Me.OrderBy = "job_date"
    Me.Frame360 = 1

End Sub

Private Sub Frame360_Click()

    If Me.Frame360 = 1 Then
        Me.OrderBy = "job_date"
    Else
        Me.OrderBy = "FGNumber"
    End If

End Sub

【问题讨论】:

    标签: vba sorting ms-access report ms-access-2010


    【解决方案1】:

    肯定有!

    在表单的标题中创建一个选项组。您可以为此使用向导,这更容易。提供两个(或更多)可能的字段作为标签名称进行排序。您可以设置一个默认选项,但这有时不适用于报表,就像它在表单上一样(别担心,我们稍后会解决这个问题)。在下一个屏幕上,将值保留为默认值 (1, 2, ...)。然后选择“保存值以备后用”。我将样式保留在单选按钮上,但这取决于您。我的叫optSortBy

    然后,在Report_Load() 事件中:

    Private Sub Report_Load()
    
        Me.OrderBy = "Field1"
        Me.optSortBy = 1
    
    End Sub
    

    这会设置默认值,并按其排序。

    然后,在按钮周围框架的On Click 事件中:

    Private Sub optSortBy_Click()
    
        If Me.optSortBy = 1 Then
            Me.OrderBy = "Field1"
        Else
            Me.OrderBy = "Field2"
        End If
    
    End Sub
    

    最后一步是将框架的Display When设置为Screen Only,这样就不会和报告一起打印了。

    【讨论】:

    • Display When?不,它在报告属性中,在Format 下(在底部)。此解决方案对您有用吗?
    • 如果你指的是两个代码块,那么是的,它们是在 VBA 中完成的。在报告属性上,转到Event 并为On Load 事件创建Event Procedure。把代码放在那里。第二个进入框架的On Click 事件。
    • 我试过你的代码,但没有用。我通过单击两个选项周围的实际框架并在属性中找到“单击时”来为 OnClick 构建事件过程。然后我粘贴了代码并将其更改为我的选项组名称(Frame360)。当我尝试在报告视图中查看此内容时,它会提示我输入一个参数,要求我填写“Field2”的值
    • Field1 和 Field2 是我表中两个字段的名称。您必须将代码中的那些更改为您想要排序的字段的名称。 (如果字段名称中有空格,请将其括在[方括号]中)。
    • 所以现在看起来它正在工作,但是 Access 不断崩溃。每当我按 F5 刷新报表视图中的报表时,似乎都会发生这种情况
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多