将搜索creteria应用于子表单.Filter属性来自另一个表单

时间:2017-05-21 21:38:51

标签: forms ms-access access-vba

基本上,我的表单MENU有一个子表单Tabella1 我想要做的是搜索查询,它在Tabella1的4个不同字段上运行。

查询实际上有效,但它不会更新MENU内的子表单,而是打开一个包含搜索结果的新数据表。

修改
好的,现在我按照@ June7建议,特别是我使用了this guide,基本上我删除了之前的查询 现在的问题是,一切正常,除了在执行cmdFiltra_Click() 之后 - 按钮CERCA - ,它什么都没有显示。
另外,如果我使用日期标准而不是其他4个标准,它会显示所有记录,尽管在表单底部显示了消息" Filtered"出现。

这是重新调整的代码 - 对于我的情况 - 形式Cerca

Private Sub cmdFiltra_Click()

Dim strWhere As String                  
Dim lngLen As Long                      
Const conJetDate = "\#mm\/dd\/yyyy\#"   

If Not IsNull(Me.regioneRicerca) Then
    strWhere = strWhere & "([Forms]![MENU]![Tabella1].[Form].[REGIONE SOCIALE] Like ""*" & Me.regioneRicerca & "*"") AND "
End If

If Not IsNull(Me.localitaRicerca) Then
    strWhere = strWhere & "([Forms]![MENU]![Tabella1].[Form].[LOCALITA] Like ""*" & Me.localitaRicerca & "*"") AND "
End If

If Not IsNull(Me.fiscaleRicerca) Then
    strWhere = strWhere & "([Forms]![MENU]![Tabella1].[Form].[CODICE FISCALE] Like ""*" & Me.fiscaleRicerca & "*"") AND "
End If


If Not IsNull(Me.stallaRicerca) Then
    strWhere = strWhere & "([Forms]![MENU]![Tabella1].[Form].[CODICE STALLA] Like ""*" & Me.stallaRicerca & "*"") AND "
End If

If Not IsNull(Me.txtStartDate) Then
    strWhere = strWhere & "([Forms]![MENU]![Tabella1].[Form].[EnteredOn] >= " & Format(Me.txtStartDate, conJetDate) & ") AND "
End If


If Not IsNull(Me.txtEndDate) Then  
    strWhere = strWhere & "([Forms]![MENU]![Tabella1].[Form].[EnteredOn] < " & Format(Me.txtEndDate + 1, conJetDate) & ") AND "
End If

lngLen = Len(strWhere) - 5
If lngLen <= 0 Then    
    MsgBox "Inserisci almeno un criterio.", vbInformation, "Nessun criterio inserito"
Else                    
    strWhere = Left$(strWhere, lngLen)

    Forms!MENU!Tabella1.Form.Filter = strWhere
    Forms!MENU!Tabella1.Form.FilterOn = True
End If

End Sub

Private Sub cmdReset_Click()

Dim ctl As Control

For Each ctl In Me.Section(acDetail).Controls
    Select Case ctl.ControlType
    Case acTextBox, acComboBox
        ctl.Value = Null
    Case acCheckBox
        ctl.Value = False
    End Select
Next

Forms!MENU!Tabella1.Form.FilterOn = False

End Sub

如果您还需要其他信息,请告诉我,如果我不够清楚,请提前抱歉。

屏幕截图

表格菜单:
form MENU before

表格菜单:form MENU after

1 个答案:

答案 0 :(得分:0)

<强>解决
我的错误在于引用表格fields。例如,我将[Forms]![MENU]![Tabella1].[Form].[REGIONE SOCIALE]更改为[REGIONE SOCIALE],将[Forms]![MENU]![Tabella1].[Form].[EnteredOn]更改为[INSERITO IL],依此类推。
感谢@ June7无论如何都要珍贵的指南!