访问VBA帮助过滤

时间:2015-05-19 12:36:15

标签: access-vba

我有一个带搜索框的主窗体,当点击id时,搜索会将监督过滤到名为subfrmSupRes的子窗体中。

我希望将用户结果过滤到另一个名为subfrmUsrRes的子表单中,我得到438运行时错误'对象不支持此属性或方法'

当我调试代码时,我需要的变量可以在strWhere变量中看到。有人可以提一些建议吗?

Private Sub Sup_ID_Click()
Dim strWhere As String
    With Forms!frmSupResults!subfrmSupRes!Sup_ID
        If .Text = vbNullString Then
            strWhere = "(false)"
        Else
            strWhere = "frmsupresults.subfrmSupRes.Sup_ID like """ & .Text      & "*"""
        End If
    End With
    With Forms!frmSupResults!subfrmUsrRes!Sup_ID
        .Filter = strWhere
        .FilterOn = True
    End With
End Sub

2 个答案:

答案 0 :(得分:0)

好的,以下是评论中的所有更改,全部在一个代码块中:

Private Sub Sup_ID_Click()
    Dim strWhere As String
    With Forms.frmSupResults.subfrmSupRes!Sup_ID
        If .Text = vbNullString Then
            strWhere = ""
        Else
            strWhere = "[Sup_ID] like """ & .Text & "*"""
        End If
    End With
    With Forms.frmSupResults.subfrmUsrRes.Form
        If Len(strWhere) > 0 Then
            .Filter = strWhere
            .FilterOn = True
        Else
            .FilterOn = False
        End If
    End With
End Sub

修正摘要:

  1. 修复“无消隐”,无ID值:strWhere = ""
  2. 让Sup_ID引用subfrmUsrRes表单查询或SQL中的字段:strWhere = "[Sup_ID] like """ & .Text & "*"""
  3. 请参阅子表单的.Form属性:With Forms.frmSupResults.subfrmUsrRes.Form
  4. 申请前检查过滤器:If Len(strWhere) > 0 Then
  5. 如果没有过滤器,则关闭过滤器:.FilterOn = False
  6. 这应该让你非常接近。我无法回答的唯一问题是Sup_ID是查询中的有效字段还是subfrmUsrRes.Form的SQL。

答案 1 :(得分:-2)

我需要在子窗体控件之前添加解释。

Private Sub Sup_ID_Click()
Dim strWhere As String
With Forms.frmSupResults.subfrmSupRes!Sup_ID
    If .Text = vbNullString Then
        strWhere = ""
    Else
        strWhere = "[Sup_ID] like """ & .Text & "*"""
    End If
End With
With Forms.frmSupResults.subfrmUsrRes.Form
    If Len(strWhere) > 0 Then
        .Filter = strWhere
        .FilterOn = True
    Else
        .FilterOn = False
    End If
End With
End Sub