Vídeo recomendado
https://youtu.be/diWPPPhW-9E
https://youtu.be/diWPPPhW-9E
Filtrar Valores >= no Formulário de Pesquisas (Resolvido)
- Valderei
- Colaborador
- Mensagens: 47
- Registrado em: Qui Dez 27, 2012 9:57 pm
- Localização: Caxias do Sul - RS
Filtrar Valores >= no Formulário de Pesquisas (Resolvido)
Pessoal, boa noite.
Uso já a bastante tempo o modelo disponibilizado pelo Tomas aqui no site, nele tenho feito vários acréscimos e aprendido muito.
O que pretendo fazer agora, é conseguir filtrar nele um intervalo de valores, a versão que tenho, possui uma condição de pesquisa entre intervalo de datas, mas vi que para números, as mesmas variáveis não podem ser usadas.
Gostaria de saber se alguém já fez isso ou tem ideia de como implementar.
Vou deixar como anexo uma imagem do que pretendo, onde a intenção é filtrar as quantidades.
Obrigado e agradeço desde já a ajuda que for receber.
Uso já a bastante tempo o modelo disponibilizado pelo Tomas aqui no site, nele tenho feito vários acréscimos e aprendido muito.
O que pretendo fazer agora, é conseguir filtrar nele um intervalo de valores, a versão que tenho, possui uma condição de pesquisa entre intervalo de datas, mas vi que para números, as mesmas variáveis não podem ser usadas.
Gostaria de saber se alguém já fez isso ou tem ideia de como implementar.
Vou deixar como anexo uma imagem do que pretendo, onde a intenção é filtrar as quantidades.
Obrigado e agradeço desde já a ajuda que for receber.
- Anexos
-
- Pesquisa.jpg (164.74 KiB) Exibido 19045 vezes
Editado pela última vez por Valderei em Sex Jun 21, 2019 11:26 am, em um total de 1 vez.
- Reinaldo
- Jedi
- Mensagens: 1537
- Registrado em: Sex Ago 01, 2014 4:09 pm
- Localização: Garça - SP / SCS - SP
Re: Filtrar Valores >= no Formulário de Pesquisas
Até podem ser utilizadas, mas dependendo da combinação de filtro, a qual não entendi, pela foto exposta; e aconselhável utilizar uma (ou mais) variavel especifica....as mesmas variáveis não podem ser usadas.
Re: Filtrar Valores >= no Formulário de Pesquisas
Prezados, bom dia!
Caro Valderei, tudo certo?
Pois veja bem, quantas coincidências:
Somos ambos de Caxias do Sul/RS (salve, salve, Galeteria Alvorada!);
Você se registrou neste fórum em 27/12, dia do meu aniversário;
Desenvolvi um sistema em VBA/Excel para controle de auditorias de qualidade, para ser utilizado na produção Suspensys, em 2011;
Pouca coisa?
Meu caro, me chama nos meus contatos pessoais que te ajudo!
Um abraço!
Caro Valderei, tudo certo?
Pois veja bem, quantas coincidências:
Somos ambos de Caxias do Sul/RS (salve, salve, Galeteria Alvorada!);
Você se registrou neste fórum em 27/12, dia do meu aniversário;
Desenvolvi um sistema em VBA/Excel para controle de auditorias de qualidade, para ser utilizado na produção Suspensys, em 2011;
Pouca coisa?
Meu caro, me chama nos meus contatos pessoais que te ajudo!
Um abraço!
- Valderei
- Colaborador
- Mensagens: 47
- Registrado em: Qui Dez 27, 2012 9:57 pm
- Localização: Caxias do Sul - RS
Re: Filtrar Valores >= no Formulário de Pesquisas
Reinaldo, tudo bem.
A ideia do filtro, é na coluna QuantidadeNC, eu quero filtrar valores acima >= (maior ou igual) a 10, e minha intenção inicial foi de usar o mesmo padrão criado para filtrar entre datas, porém, a limitação foi a barreira, até tentei várias vezes, mas nada rolou.
Se achares mais conveniente, posso colocar um exemplo.
Obrigado.
- Reinaldo
- Jedi
- Mensagens: 1537
- Registrado em: Sex Ago 01, 2014 4:09 pm
- Localização: Garça - SP / SCS - SP
Re: Filtrar Valores >= no Formulário de Pesquisas
E conveniente anexar um exemplo de como está seu modelo e de como deseja obter o retorno. Informando tambem as variações e/ou combinações (se houver) de filtro
Re: Filtrar Valores >= no Formulário de Pesquisas
Prezados, bom dia.
Caro Valderei, tudo certo?
Bem importante e pertinente o comentário do colega Reinaldo, que aliás, é um mestre em conhecimento e disponibilidade. Parabéns Reinaldo. Sem um modelo ou exemplo, raramento poderemos ajudar.
No caso em específico, o Valderei mando sua planilha diretamente para meu contato, então, segue a solução:
O modelo é baseado no Formulário de Cadastro do Tomás, então, seguindo a mesma lógica, só foi necessário testar se o campo (listbox) que contém os operadores lógicos está ou não preenchido e caso esteja, adicionar a parte do WHERE correspondente. Caso não haja operador selecionado, segue o fluxo anterior.
Um abraço!
Caro Valderei, tudo certo?
Bem importante e pertinente o comentário do colega Reinaldo, que aliás, é um mestre em conhecimento e disponibilidade. Parabéns Reinaldo. Sem um modelo ou exemplo, raramento poderemos ajudar.
No caso em específico, o Valderei mando sua planilha diretamente para meu contato, então, segue a solução:
O modelo é baseado no Formulário de Cadastro do Tomás, então, seguindo a mesma lógica, só foi necessário testar se o campo (listbox) que contém os operadores lógicos está ou não preenchido e caso esteja, adicionar a parte do WHERE correspondente. Caso não haja operador selecionado, segue o fluxo anterior.
Código: Selecionar todos
'Instrução para montaClausulaWhere entre as DATAS
Private Sub MontaClausulaWhere(ByVal NomeControle As String, ByVal NomeCampo As String, ByRef sqlWhere As String)
If Trim(Me.Controls(NomeControle).Text) <> vbNullString Then
If sqlWhere <> vbNullString Then
sqlWhere = sqlWhere & " AND"
End If
If IsDate(Me.Controls(NomeControle).Text) Then 'Verifica se é Data
Select Case LocEntreDatas
Case 0 'Procura por uma unica Data
sqlWhere = sqlWhere & " (" & NomeCampo & ") = #" & Format(txtDataini, "mm/dd/yyyy") & "#"
Case 1 'Procura entre duas Datas
sqlWhere = sqlWhere & " (" & NomeCampo & ") BETWEEN #" & Format(txtDataini, "mm/dd/yyyy") & "# AND #" & Format(txtDatafim, "mm/dd/yyyy") & "#"
End Select
Else
'*** Verifica se há um operador de comparação de valores e então, aplica filtro para montar a cláusula where conforme o operador selecionado no formulário.
If NomeControle = "TextBoxValor" Then
sqlWhere = sqlWhere & " " & NomeCampo & " " & ComboBoxOperador.Text & " " & TextBoxValor.Text
'*** Caso não tenha nenhum operador de comparação selecionado, executa conforme era antes.
Else
sqlWhere = sqlWhere & " UCASE(" & NomeCampo & ") LIKE UCASE('%" & Trim(Me.Controls(NomeControle).Text) & "%')"
End If
'*** Caso deseje retornar ao original, exclua as linhas 1, 2, 3, e 5 acima. Fim da Alteração
End If
End If
End Sub
'FIM DATAS
- Valderei
- Colaborador
- Mensagens: 47
- Registrado em: Qui Dez 27, 2012 9:57 pm
- Localização: Caxias do Sul - RS
Re: Filtrar Valores >= no Formulário de Pesquisas
Prezado Reinaldo, realmente a adição de um exemplo auxilia e muito na solução do problema ou dúvida do usuário, peço desculpas por não ter procedido deste modo desde o início, próximas vezes farei isso.PRMPOKER escreveu: ↑Ter Jun 18, 2019 10:46 am Prezados, bom dia.
Caro Valderei, tudo certo?
Bem importante e pertinente o comentário do colega Reinaldo, que aliás, é um mestre em conhecimento e disponibilidade. Parabéns Reinaldo. Sem um modelo ou exemplo, raramento poderemos ajudar.
No caso em específico, o Valderei mando sua planilha diretamente para meu contato, então, segue a solução:
O modelo é baseado no Formulário de Cadastro do Tomás, então, seguindo a mesma lógica, só foi necessário testar se o campo (listbox) que contém os operadores lógicos está ou não preenchido e caso esteja, adicionar a parte do WHERE correspondente. Caso não haja operador selecionado, segue o fluxo anterior.
Um abraço!Código: Selecionar todos
'Instrução para montaClausulaWhere entre as DATAS Private Sub MontaClausulaWhere(ByVal NomeControle As String, ByVal NomeCampo As String, ByRef sqlWhere As String) If Trim(Me.Controls(NomeControle).Text) <> vbNullString Then If sqlWhere <> vbNullString Then sqlWhere = sqlWhere & " AND" End If If IsDate(Me.Controls(NomeControle).Text) Then 'Verifica se é Data Select Case LocEntreDatas Case 0 'Procura por uma unica Data sqlWhere = sqlWhere & " (" & NomeCampo & ") = #" & Format(txtDataini, "mm/dd/yyyy") & "#" Case 1 'Procura entre duas Datas sqlWhere = sqlWhere & " (" & NomeCampo & ") BETWEEN #" & Format(txtDataini, "mm/dd/yyyy") & "# AND #" & Format(txtDatafim, "mm/dd/yyyy") & "#" End Select Else '*** Verifica se há um operador de comparação de valores e então, aplica filtro para montar a cláusula where conforme o operador selecionado no formulário. If NomeControle = "TextBoxValor" Then sqlWhere = sqlWhere & " " & NomeCampo & " " & ComboBoxOperador.Text & " " & TextBoxValor.Text '*** Caso não tenha nenhum operador de comparação selecionado, executa conforme era antes. Else sqlWhere = sqlWhere & " UCASE(" & NomeCampo & ") LIKE UCASE('%" & Trim(Me.Controls(NomeControle).Text) & "%')" End If '*** Caso deseje retornar ao original, exclua as linhas 1, 2, 3, e 5 acima. Fim da Alteração End If End If End Sub 'FIM DATAS
Obrigado.
Bem, graças ao grande apoio do PRMPOKER, conseguimos resolver a questão. A ideia inicial era realmente usar a base do projeto do Tomas, mas faltava a lógica do entendimento, a qual foi encontrada pelo PRMPOKER.
Ele já compartilhou o código utilizado em meu projeto, ou seja, outros que usam este mesmo modelo, já podem utilizar.
Vou dar como concluído o tópico.
Obrigado a todos do fórum e em especial ao PRMPOKER.