【问题标题】:MS Access: How can filter multiple fields in a filtered search (text box)MS Access:如何在过滤搜索中过滤多个字段(文本框)
【发布时间】:2016-07-24 16:53:44
【问题描述】:

我今天太困在 VBA 上了,我不妨提出这个问题。 希望有人可以帮助我,因为我迷路了。 具体是以下一行:

strFilter = "orderstatus Like '*" & _.

Orderstatus 是我正在搜索的字段(向下过滤)。 它工作正常,但我也想要那里的其他字段!

strFilter = "orderstatus And ordersales Like '*" & _.

我试过了????我尝试了很多东西,但没有任何效果

完整代码如下:

Private Sub txtFilter_AfterUpdate() Dim strFilter As String
If Len(Trim(Me.txtfilter.Value & vbNullString)) > 0 Then
strFilter = "orderstatus Like '*" & _
Replace(Me.txtfilter.Value, "'", "''") & _
"*'"
Me.Filter = strFilter
Me.FilterOn = True
Else
Me.FilterOn = False
End If
End Sub

请帮忙!!!!我已经卡了 4 天了:S

【问题讨论】:

  • 你的 strFilter 设置在哪里?有什么问题 - 语法错误或过滤器不起作用?看起来你没有使用你的例子中说你想要你的 ordersales 字段的 orderstatus 字段。但我们不确定您要过滤什么以及字段类型是什么。你想要两个字段都使用通配符吗?
  • 它工作得很好。它给了我结果。问题是我在我的表单中搜索单个字段。 (如 1 列)在这种情况下,我在 orderstatus 字段中进行搜索,但我想在其中添加另一个:S 为什么 Access 总是充满问题和复杂性?
  • Access 没有问题。就像任何新的应用程序一样——你需要花时间学习语言——或者在这种情况下,两种语言 VBA 和 SQL。您将在哪里获取第二个字段的过滤器值?听起来您需要多个过滤器文本字段和一个单独的“应用过滤器”按钮来收集和连接您的过滤器字段。
  • 我知道。我现在进入 C#,我会在某个时候到达那里。感谢您的回复!无论如何,我想从同一个领域获得的价值。哪个是搜索字段(文本框)对?我在 txtFilter 中输入我想要搜索的值,我希望它在“orderstatus”和“ordersales”字段中查找并返回包含我正在寻找的值的任何内容。所以是的,它应该适用于这两个领域

标签: ms-access search filter field


【解决方案1】:

如果您想在两个字段上使用通配符,则需要将条件分别应用于两个字段

类似这样的:

Private Sub txtFilter_AfterUpdate()  

     Dim strFilter As String
     Dim strWildcard As String
     If Len(Trim(Me.txtfilter.Value & vbNullString)) > 0 Then
        strWildcard = " Like '*" & Replace(Me.txtfilter.Value, "'", "''") & "*'"
        strFilter = "orderstatus" & strWildcard  & " And ordersales"  & strWildcard 
        Me.Filter = strFilter
        Me.FilterOn = True
     Else
        Me.FilterOn = False
     End If

End Sub

【讨论】:

  • 非常感谢你们!生病试试:)
  • 我试过了。感谢您的迅速回复。但它似乎不起作用。现在,当我在字段中输入内容时,按回车键,它实际上并没有做任何事情。在 vba 页面的顶部,我还有这个:Option Compare Database Option Explicit 我猜这没有影响。
  • 你想用过滤器完成什么?您的 txtFilter 中有什么值 - 是否应该将其应用于两个字段?
【解决方案2】:

您必须分别添加要过滤的每个字段:

strFilter = "orderstatus LIKE '*xxx*' OR ordersales LIKE '*xxx*'"

如果您希望其中一个或另一个包含过滤器字符串,请使用 OR,如果您希望它们都包含它,请使用 AND。

【讨论】:

  • 非常感谢你们!生病试试:)
【解决方案3】:

谢谢大家! dbmitch 用正确的完整代码回答,只有我将 AND 设置为 OR,因此它搜索任一字段。谢谢!

私有子 txtFilter_AfterUpdate()

 Dim strFilter As String
 Dim strWildcard As String
 If Len(Trim(Me.txtfilter.Value & vbNullString)) > 0 Then
    strWildcard = " Like '*" & Replace(Me.txtfilter.Value, "'", "''") & "*'"
    strFilter = "orderstatus" & strWildcard  & " And ordersales"  & strWildcard 
    Me.Filter = strFilter
    Me.FilterOn = True
 Else
    Me.FilterOn = False
 End If

结束子

【讨论】:

    猜你喜欢
    • 2015-05-27
    • 1970-01-01
    • 1970-01-01
    • 2020-10-15
    • 2020-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-02
    相关资源
    最近更新 更多