Notifications
Clear all

Mostrar dados corretos no LISTVIEW principal

4 Posts
2 Usuários
0 Reactions
1,332 Visualizações
(@diovanino)
Posts: 16
Active Member
Topic starter
 

Reinaldo, bom dia!

Iria colocar esta minha dúvida, no tópico: ModeloCadastro3ListView, mas o mesmo está trancado, ok?

Estou com um problema no meu formulário de pesquisa, no que se diz respeito ao resultado no LISTVIEW principal, quanto aos filtros escolhidos, veja:

No meu formulário de pesquisa, eu tenho vários filtros, e dentre eles, tenho um filtro chamado de LOCADO (sim ou não) e um outro filtro de STATUS(ativo ou inativo). O problema está ocorrendo, quando escolho o filtro LOCADO = sim e o filtro STATUS = ativo, o resultado está me trazendo os equipamentos que também estão como inativo(acredito eu, é porquê a palavra ativo, está dentro da palavra inativo).

Veja abaixo a linha de código da Private Sub MontaClausulaWhere:
- sqlWhere = sqlWhere & " UCASE(" & NomeCampo & ") LIKE UCASE('%" & LTrim(Me.Controls(NomeControle).Text) & "%')"

Como resolver este problema?

Sds,

 
Postado : 10/10/2018 8:19 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

E bem provável que seja esse o problema.
Experimente:
a montagem da string sql sem o primeiro " % ",

sqlWhere = sqlWhere & " UCASE(" & NomeCampo & ") LIKE UCASE(" & LTrim(Me.Controls(NomeControle).Text) & "%')" 

ou ainda:
a montagem da string sql considerando valores iguais

sqlWhere = sqlWhere & " UCASE(" & NomeCampo & ") =UCASE(" & LTrim(Me.Controls(NomeControle).Text) &")"

Obs.: Não testei para verificar se a construção da string está OK

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 10/10/2018 9:45 am
(@diovanino)
Posts: 16
Active Member
Topic starter
 

Reinaldo,

Na verdade onde teremos que mexer, é na Private Function PreecheRecordSet, veja:

'Status
    For i = 1 To lstStatus.ListCount
        'verifica se o item está selecionado
        If lstStatus.Selected(i - 1) Then
            'Monta a cláusula WHERE com AND
            Debug.Print lstStatus.List(i - 1) & " selecionado"
            If sqlWhere <> vbNullString Then
                sqlWhere = sqlWhere & " AND"
            End If
           sqlWhere = sqlWhere & " UCASE(Status) LIKE UCASE('%" & Trim(lstStatus.List(i - 1)) & "%')"
        End If
    Next
 
Postado : 10/10/2018 10:55 am
(@diovanino)
Posts: 16
Active Member
Topic starter
 

Reinaldo,

Deu certo usando assim:

sqlWhere = sqlWhere & " UCASE(status) LIKE UCASE('" & Trim(lstStatus.List(i - 1)) & "')"

Sds,

 
Postado : 10/10/2018 12:14 pm