Tranquilo Ivan. Muito obrigado!
Fiz as modificações sugeridas, no entanto estão ocorrendo esses 2 problemas:
1) O filtro na TXTBOX está OK, mas quando digito, por exemplo, o nome de um militar, ou matrícula, ou CPF inexistente no SUBFORMULÁRIO, os objetos mostrados pelas SETAS AMARELAS na FIGURA ABAIXO (que são programados para ficar na cor rosa em caso do filtro estar ATIVO) não ficam. Até ficam, mas só enquanto se vai digitando e o filtro vai ocorrendo e encontrando resultados existentes, depois que o termo digitado passa a não existir no SUBFORMULÁRIO, aí os objetos mostrados pelas SETAS AMARELAS voltam a ficar na cor branca (indicando que o FILTRO está inativo).
Veja que neste caso abaixo numa versão anterior do meu sistema, qdo mando filtrar uma combinação de SITUAÇÃO + SUBSITUAÇÃO em que não há resultados no SUBFORMULÁRIO, os objetos mostrados pelas SETAS AMARELAS permanecem na COR ROSA, passando a ideia de que o FILTRO ESTÁ ATIVO e o resultado da filtragem foi "zero". Pois bem, o mesmo deveria ocorrer no filtro da TXTBOX.
2) Após as alterações sugeridas por último, passei a não conseguir usar os
filtros das COMBOBOX. Dá msg de erro de execução '2185':
"Vc não pode fazer referência a uma propriedade ou método de controle, a menos que o controle tenha o foco.
O código ficou assim:
Private Sub fncFiltroFiltre()
Dim ctl As Control
Dim strFiltro As String
Dim strOperador As String
For Each ctl In Me.Controls
If ctl.Name = "TXTPESQUISA" Then
'(AQUI NÃO DEVERIA TER UM "SELECT CASE...?"
strFiltro = strFiltro & "([NOME COMPLETO] like ""*" & Nz(Me!TXTPESQUISA.Text, "") & "*"" or "
strFiltro = strFiltro & "[Nº DO RE-CBM] like ""*" & Nz(Me!TXTPESQUISA.Text, "") & "*"" or "
strFiltro = strFiltro & "[CPF] like ""*" & Nz(Me!TXTPESQUISA.Text, "") & "*"") And "
ElseIf ctl.ControlType = acComboBox Then 'Or ctl.ControlType = acTextBox Then
If Not IsNull(ctl.Value) Then
Select Case ctl.Name
'campos tipo texto entre aspas
'campos tipo data entre cerquilhas (#)
Case "cbosituação"
strFiltro = strFiltro & "[SITUAÇÃO] = """ & Me!CBOSITUAÇÃO & """ And "
Case "cbosubsituação"
strFiltro = strFiltro & "[SUBSITUAÇÃO] = """ & Me!CBOSUBSITUAÇÃO & """ And "
Case "cboagregado"
strFiltro = strFiltro & "[TEXTO AGREGADO] = """ & Me!cboagregado & """ And "
Case "cbopatente"
strFiltro = strFiltro & "[PATENTE] = """ & Me!cbopatente & """ And "
Case "cboárea"
strFiltro = strFiltro & "[ÁREA] = """ & Me!cboárea & """ And "
Case "cbosexo"
strFiltro = strFiltro & "[SEXO] = """ & Me!cbosexo & """ And "
Case "cboidade"
Select Case cboSELidade
Case "É diferente de": strOperador = "<>" 'poderia ser "Not Like"
Case "", "É igual a": strOperador = "=" 'poderia ser "Like"
Case "É maior que": strOperador = ">"
'Case "É maior ou igual a": strOperador = ">="
Case "É menor que": strOperador = "<"
'Case "É menor ou igual a": strOperador = "<="
End Select
strFiltro = strFiltro & "[Idade] " & strOperador & " """ & Me!cboidade & """ And "
Case "cboaltura"
Select Case cboSELaltura
Case "É diferente de": strOperador = "<>" 'poderia ser "Not Like"
Case "", "É igual a": strOperador = "=" 'poderia ser "Like"
Case "É maior que": strOperador = ">"
'Case "É maior ou igual a": strOperador = ">="
Case "É menor que": strOperador = "<"
'Case "É menor ou igual a": strOperador = "<="
End Select
strFiltro = strFiltro & "[ALTURA (m)] " & strOperador & " " & Me!cboaltura & " And "
Case "cbopeso"
Select Case cboSELpeso
Case "É diferente de": strOperador = "<>" 'poderia ser "Not Like"
Case "", "É igual a": strOperador = "=" 'poderia ser "Like"
Case " ": strOperador = "="
Case "É maior que": strOperador = ">"
Case "É menor que": strOperador = "<"
End Select
strFiltro = strFiltro & "[PESO] " & strOperador & " " & Me!cbopeso & " And "
Case "cboimc"
strFiltro = strFiltro & "[TEXTO IMC] = """ & Me!cboimc & """ And "
Case "cbotsfrh"
strFiltro = strFiltro & "[TS - FRh] = """ & Me!cbotsfrh & """ And "
Case "cboalérgico"
strFiltro = strFiltro & "[TEXTO ALÉRGICO] = """ & Me!cboalérgico & """ And "
Case "cbocútis"
strFiltro = strFiltro & "[CÚTIS] = """ & Me!cbocútis & """ And "
Case "cbocabelos"
strFiltro = strFiltro & "[CABELOS] = """ & Me!cbocabelos & """ And "
Case "cboolhos"
strFiltro = strFiltro & "[OLHOS] = """ & Me!cboolhos & """ And "
Case "cbonaturalidade"
strFiltro = strFiltro & "[NATURALIDADE] = """ & Me!cbonaturalidade & """ And "
Case "cbobairro"
strFiltro = strFiltro & "[BAIRRO] = """ & Me!cbobairro & """ And "
Case "cbocidade"
strFiltro = strFiltro & "[CIDADE] = """ & Me!cbocidade & """ And "
Case "cbolotação"
strFiltro = strFiltro & "[OBM/SEÇAO] = """ & Me!cbolotação & """ And "
Case "cbo2avia"
strFiltro = strFiltro & "[TEXTO 2ª VIA] = """ & Me!cbo2avia & """ And "
End Select
End If
End If
Next ctl
Me!SUBGFLISTA.Form.filter = ""
Me!SUBGFLISTA.Form.FilterOn = False
If strFiltro <> "" Then
strFiltro = Left(strFiltro, Len(strFiltro) - 5)
Me!SUBGFLISTA.Form.filter = strFiltro
Me!SUBGFLISTA.Form.FilterOn = True
End If
End Sub
Envio o BD!!!