【问题标题】:Using "Or" in Filter在过滤器中使用“或”
【发布时间】:2016-01-14 17:50:57
【问题描述】:

我有一个搜索按钮,单击该按钮会在子表单中显示与父表单中文本框中的值匹配的记录。我有一个单选按钮可以在“和搜索”(如果匹配所有条件)和“或搜索”(如果匹配任何一个条件)之间进行选择。我正在使用过滤器来显示结果。这非常适用于“和搜索”,但不适用于“或搜索”。在“或搜索”期间显示所有记录,尽管文本框中有任何值。 我的代码如下。 希望能在这里找到解决办法。谢谢。

    Private Sub Form_Open(Cancel As Integer)

    Dim StrId, StrName, FilterId, FilterName, AndOr As String
    Dim IntRadio as Integer

    If Not IsNull(Forms!ParentForm!TxId.Value) Then
        StrId = Forms!ParentForm!TxId.Value
    End If

    FilterId = "[BookID] Like '*" & StrId & "*'"
    FilterName = "[BookName] Like '*" & StrName & "*'"

    If IntRadio = 1 Then
        AndOr = " and "
    Else
        AndOr = " or "
    End If

    Me.Filter = FilterId & AndOr & FilterName 
    Me.FilterOn = True
        Me.Requery

    If Me.RecordsetClone.RecordCount = 0 Then
        Cancel = True
        MsgBox "No Records", vbOKOnly + vbInformation, "No Data"
    End If

End Sub

【问题讨论】:

  • 查看FltrName 的内容——看看Debug.Print FltrName 向您展示了什么。因为你没有给StrName 一个值,我怀疑FltrName 包含这个:[BookName] Like '**'
  • 非常感谢!!空字符串是问题!

标签: vba ms-access search filter subform


【解决方案1】:
Private Sub Form_Open(Cancel As Integer)

Dim StrId, StrName, StrFilter, AndOr As String
Dim IntRadio as Integer

If IntRadio = 1 Then
    AndOr = " and "
Else
    AndOr = " or "
End If

If Not IsNull(Forms!ParentForm!TxId.Value) Then
    StrId = Forms!ParentForm!TxId.Value
    StrFilter = StrFilter & "[BookID] Like '*" & StrId & "*'" & AndOr
End If

If Not IsNull(Forms!ParentForm!TxName.Value) Then
    StrId = Forms!ParentForm!TxName.Value
    StrFilter = StrFilter & "[BookName] Like '*" & StrName & "*'" & AndOr
End If  

StrFilter = Left(StrFilter, Len(StrFilter) - 4)

Me.Filter = StrFilter

Me.FilterOn = True
Me.Requery

If Me.RecordsetClone.RecordCount = 0 Then
    Cancel = True
    MsgBox "No Records", vbOKOnly + vbInformation, "No Data"
End If
End Sub

【讨论】:

    【解决方案2】:

    您在两个不同的场合拼写不同的filtername。一个是filter,一个是fltr。我将更改为以下实例,注意我将 I 和 E 放入。

    FilterName = "[BookName] Like '*" & StrName & "*'"
    

    【讨论】:

      猜你喜欢
      • 2013-12-16
      • 2017-09-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-02
      • 2017-08-19
      • 1970-01-01
      相关资源
      最近更新 更多