【问题标题】:MS Access -- quick filter on a subform, then pass the filter to a reportMS Access - 快速过滤子表单,然后将过滤器传递给报表
【发布时间】:2015-03-20 14:47:05
【问题描述】:

我有一个表单 (frmDocumentList),其中包含一个子表单 (frmDocumentDatasheet) 和一个用于打开报告 (rptDocumentList) 的打印按钮。

我要做的就是在子表单上使用“快速过滤功能”(排序和过滤功能区)。然后将过滤后的数据传递给报表。

目前报告包含所有数据。

我认为这是一个简单的问题,但我的 atm 无法解决它。我有使用vba的经验。 希望有人可以帮助我。 -对不起我的英语不好-

这是我试过的vba:

 Private Sub Command17_Click()

If Not IsNull(Me.Form![Document Datasheet].[Filter]) Then
    DoCmd.OpenReport "RptDocumentList", A_PREVIEW, , Me.Form![Document Datasheet].Filter
Else
    MsgBox "Apply a filter to the form first"
End If
End Sub

我的问题是我在子表单上使用的快速过滤器不适用于报表。

【问题讨论】:

  • 到目前为止你尝试过什么?你能发布一些VBA吗?你到底有什么问题?
  • 我编辑了我的问题。感谢您的帮助

标签: vba ms-access filter report subform


【解决方案1】:

如果您的命令按钮位于主窗体上,那么您需要一个不同的过滤器:您需要位于子窗体上的过滤器。比如:

Option Explicit  ' <- be sure this is at top of module
                 ' ...and run Debug>Compile so it can perform its check

'' And on your button click event:
Private Sub Command17_Click()
    Dim strFilter as String
    strFilter = Me.Form![Document Datasheet].[Filter]
    Debug.Print strFilter
    If strFilter <> "" Then
        DoCmd.OpenReport "RptDocumentList", A_PREVIEW, , strFilter
    Else
        MsgBox "Apply a filter to the form first"
    End If
End Sub

只需引用子窗体的名称——即,它在主窗体上的控件名称。更多here.

使用像strFilter 这样的变量有望给您更多的控制权,这样您就可以看到正在(或没有)发生的事情。

Debug.Print 命令使您的过滤器字符串出现在“立即”窗口中。如果您对此不熟悉,我建议您进行一些研究,因为它无疑会对您有所帮助。一方面,您可以发布输出——也许您的字符串在某种程度上是问题所在。

您会注意到我的代码测试了一个空字符串 ("")。可能您的过滤器是一个空字符串,而 IsNull() 测试无法帮助您检测到这一点。

【讨论】:

  • 我的命令按钮在主窗体上,没错。所以我的子表单的名称是:frmDocumentDatasheet "If Not IsNull(Me.Form!frmDocumentDatasheet.Filter) Then" 但是现在我得到一个错误,它找不到字段 frmDocumentDatasheet...
  • 如果不是 IsNull(Forms.frmDocumentList.frmDocumentDatasheet.Form) 那么 ??这会产生下一个错误:Application-defined or object-defined error
  • 不要使用您在创建表单时提供的名称,即您在导航面板中看到的名称。当你把它变成一个子窗体时,它就变成了主窗体中的一个控件。该控件有一个名称,作为属性找到——这是您必须使用的。我提供的链接应该清楚地说明这一点。
  • 我明白你在说什么,但不知何故它仍然不起作用..我非常感谢你花时间在我身上。我更新了我的问题中的 vba 框。你能再看看吗? filter- 字段/属性是否自行创建?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-06-08
  • 1970-01-01
  • 1970-01-01
  • 2014-05-15
  • 1970-01-01
  • 1970-01-01
  • 2023-03-19
相关资源
最近更新 更多