【问题标题】:How to clear filtering on selection of a value from the combobox in ms access 2007?如何清除从 ms access 2007 中的组合框中选择值的过滤?
【发布时间】:2012-04-27 17:18:36
【问题描述】:

我有一个组合框,用于在 afterupdate 事件中过滤表单上的数据。 以下是我一直试图用来过滤数据的查询。此代码有效地过滤数据,但我面临的问题是,当我从组合框中选择“”时,没有显示任何数据。可能出了什么问题?我该如何显示选择“”时表格的所有数据

Dim strCriteria As String
strCriteria = "[Jobno]='" & cboPMNO & "'"
Set rst = Me.RecordsetClone
If strCriteria = "<ALL>" Then
Me.FilterOn = False
ElseIf rst.NoMatch Then
MsgBox "No entry found"
Else
Me.FilterOn = False
Me.Filter = strCriteria
Me.FilterOn = True
End If

【问题讨论】:

  • cboPMNO的Row Source是什么?
  • 有一些问题。我在选择 时输入了双引号,而不仅仅是“”。我猜双引号括起来使它成为一个块引用。
  • select distinct '' as Jobno from tblmimain UNION ALL SELECT DISTINCT tblMIMAIN.A_JOBNO AS Jobno FROM tblMIMAIN WHERE (((tblMIMAIN.A_LOCATION)>IIf(GetAsset()="ALL ","a","ZZ") 或 (tblMIMAIN.A_LOCATION)=GetAsset()) AND ((tblMIMAIN.A_SYSTEM)="NEN"));我认为我应该使用 If cboPMNO="" 而不是 If strCriteria=""
  • 另外,而不是行号。 5 在上面的代码中我尝试了这个: Docmd.showallrecords 并且它起作用了。

标签: ms-access ms-access-2007 filtering vba


【解决方案1】:

试试这个:

Dim strCriteria As String
strCriteria = "[Jobno]='" & Nz(cboPMNO, "<ALL>") & "'"
Set rst = Me.RecordsetClone
If strCriteria = "<ALL>" or strCriteria = "" Then
    Me.Filter = ""
    Me.FilterOn = False
ElseIf rst.NoMatch Then
    MsgBox "No entry found"
Else
    Me.Filter = strCriteria
    If Me.FilterOn = False Then Me.FilterOn = True
End If

以下是我通常会如何编写这种过滤器。我非常不喜欢消息框,除非它们是绝对必要的。在我看来,如果没有匹配项,最好只显示一个空白表单或列表框。

Dim strCriteria as String
If Nz(Me.cboPMNO, "<ALL>") <> "<ALL>" Then
    strCriteria = "[Jobno] = '" & Me.cboPMNO & "'"
End If
If strCriteria <> "" Then
    Me.Filter = strCriteria
    If Me.FilterOn = False Then Me.FilterOn = True
Else
    Me.Filter = ""
    Me.FilterOn = False
End If

【讨论】:

  • 这完全取决于组合框的编程方式。您可以允许空白条目。退格所有字符将导致其长度为零的字符串。但你是对的,这可能是对永远不会发生的事情的过度保护。
  • 此外,OP 说:“我面临的问题是,当我从组合框中选择“”时,除非我误解了,否则他似乎对零长度字符串有一些问题(这很有可能)。
  • 在我看来,OP 得到的可能是空字符串,而不是长度为零的字符串,因此我请求行源的 SQL。
  • 是的,我认为你是对的。我现在已经在两个代码示例中计划了这种可能性。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-09-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多