MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração


Participe do fórum, é rápido e fácil

MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração

MaximoAccess

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access


3 participantes

    [Resolvido]Filtrar consulta

    eriberto
    eriberto
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 72
    Registrado : 04/07/2013

    [Resolvido]Filtrar consulta Empty Filtrar consulta

    Mensagem  eriberto 10/10/2013, 15:03

    Bom dia a todos... pessoal estou precizando fazer uma consulta onde eu possa filtrar duas condições exemplo:
    tenho uma tabela produtos onde nessa tabela tenho uma coluna que se chama "mix" e os dados são sempre armazenado "M" "G" "D" então preciso de ajuda pra criar uma onde me retorne só os produtos com o mix "M" e "G"...

    Desde já muito grato pela ajuda....
    Leandro
    Leandro
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1601
    Registrado : 12/11/2009

    [Resolvido]Filtrar consulta Empty Re: [Resolvido]Filtrar consulta

    Mensagem  Leandro 10/10/2013, 15:25

    No criterio do campo da consulta coloque: "M" Ou "G"

    eriberto
    eriberto
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 72
    Registrado : 04/07/2013

    [Resolvido]Filtrar consulta Empty Re: [Resolvido]Filtrar consulta

    Mensagem  eriberto 10/10/2013, 16:45

    Muito bom Mestre leandro usei esse criterio para carregar a consulta e deu certo... mas quando tentro filtrar um produto determinado ele me retorna todo os produtos de mix M e G que tenha a primeira letra do produto pesquisado... segue o codigo que estou usando para filtra por produto .

    Código:
    "SELECT TOP 20 dbo_tblProduto.codProduto, dbo_tblProduto.descricao, dbo_tblProduto.qtd_Estoque, Format(dbo_tblProduto.valorUnitario,'R$ ####0.00') AS valorUnitario, dbo_tblProduto.numLoja " & _
                                "FROM dbo_tblProduto " & _
                                "WHERE descricao Like '*" & txtPesquisa.Text & "*' AND statusProduto='ATIVO' AND statusLancamento='A' AND mixProduto Like '*" & Forms!FProdutoPesquisa!txtMixLoja & "*' OR mixProduto='G' " & _
                                "ORDER BY dbo_tblProduto.descricao;"
    Leandro
    Leandro
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1601
    Registrado : 12/11/2009

    [Resolvido]Filtrar consulta Empty Re: [Resolvido]Filtrar consulta

    Mensagem  Leandro 10/10/2013, 17:21

    Não entendi! Shocked 

    Pode explicar novamente?

    eriberto
    eriberto
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 72
    Registrado : 04/07/2013

    [Resolvido]Filtrar consulta Empty Re: [Resolvido]Filtrar consulta

    Mensagem  eriberto 10/10/2013, 18:03

    Veja ben...fiz o uso do criterio.quvc me indicou acim para carrega un consulta que alimenta um listbox ai funcionou certinho... mas no formulario onde fica o listbox e tenho uma caixa de texto que digito no nome do produto que quero procurar e para fazr o filtro uso o codigo acima onde fiz uma adaptacao usando os criterio que vc avia me passado mas quando escuto o filtro ele o pruto filtrado do mix M e todos os produtos do mix G
    Luiz Carlos Junior
    Luiz Carlos Junior
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 473
    Registrado : 21/08/2012

    [Resolvido]Filtrar consulta Empty Re: [Resolvido]Filtrar consulta

    Mensagem  Luiz Carlos Junior 10/10/2013, 18:15

    Uso isso para pesquisar nomes em meu form.
    Conforme digito ele vai me mostrando o que tenho com aquelas letras.
    Adaptei para sua necessidade (chutei pelo código que postou).
    Não sei se vai funfar, mas tente aí.
    Abrasss!!!

    Código:
     'Na propriedade Ao Alterar da text box txtPesquisa:

    Dim strText, strFind, strFind2, strSql As String
    Dim I As Integer

    strText = Me.txtPesquisa.Text

    If Len(Trim(strText)) > 0 Then
    strFind2 = "[descricao] Like '*"
    For I = 1 To Len(Trim(strText))
    If (right(strFind, 1) = "*") Then
    strFind = left(strFind, Len(strFind) - 1)
    End If
    strFind = strFind & Mid(strText, I, 1) & "*"
    Next
    strFind2 = strFind2 & strFind & "'"

    strSql = "SELECT [descricao] FROM tblProduto where " & strFind2 & " ORDER BY [descricao]"

    Me.txtPesquisa.RowSource = strSql

    Else
    strSql = "SELECT [descricao] FROM tblProduto ORDER BY [descricao]"

    Me.txtPesquisa.RowSource = strSql
    End If

    '--------------------------------------------------------------------------------------

    'Na propriedade Ao Apertar Tecla do txtPesquisa

    Dim strSql As String

    If KeyCode = 27 Then 'Se pressionou tecla ESCAPE então carrega a lista completa da consulta
    strSql = "SELECT [descricao] FROM tblProduto ORDER BY [descricao]"
    Me.txtPesquisa.RowSource = strSql
    Me.txtPesquisa= Null 'Limpa a combo
    End If
    Abrasss!!!
    Leandro
    Leandro
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1601
    Registrado : 12/11/2009

    [Resolvido]Filtrar consulta Empty Re: [Resolvido]Filtrar consulta

    Mensagem  Leandro 10/10/2013, 18:20

    Acho que entendi.
    Como você definiu o filtro com as letras 'M' e 'G', a consulta fica restringida a eles, e se houver mais algum critério ele será executado a partir dos registros que resultarem do fitro M Or G.

    Uma opção seria: Like "*" & [Crit1] & "*" Or Like "*" & [Crit2] & "*"

    Porém você teria que responder as perguntas ou inserir os critérios a partir do formulário e se não os inserisse a consulta retornaria todos os registros

    eriberto
    eriberto
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 72
    Registrado : 04/07/2013

    [Resolvido]Filtrar consulta Empty Re: [Resolvido]Filtrar consulta

    Mensagem  eriberto 11/10/2013, 12:26

    Bom dia Amigo Leandro!!! fiz a alteração que me indicou... mas ainda continua dando o mesmo problema... tentarei te explicar melhor pois a minha ultima explicação realmente não ficou muito clara.

    vou citar um exemplo de 5 produtos para facilitar, na tabela tenho o s seguintes produtos:

    Produto-------Mix
    Cama---------M
    comoda-------G
    Roupeiro------M
    Travisseiro----G

    Quando pesquiso pelo produto Roupeiro e me traz tambem o produto comoda e cama, ou seja ele me filtra todos os produtos que estão acima de roupeiro quando na verdade era so pra me retorna na consulta o roupeiro. eu acho que ele ta aplicando o filtro no produto consultado e trazendo todo os outros produtos do mix diferente do produto referido na consulta...... segue o codigo abaixo como ficou.

    Código:
    Private Sub txtPesquisa_KeyDown(KeyCode As Integer, Shift As Integer)
    If KeyCode = 27 Then
            DoCmd.Close
    Else
          If KeyCode = 13 Then

        lstProduto.RowSource = "SELECT TOP 100 dbo_tblProduto.codProduto, dbo_tblProduto.descricao, dbo_tblProduto.qtd_Estoque, Format(dbo_tblProduto.valorUnitario,'R$ ####0.00') AS valorUnitario, dbo_tblProduto.numLoja " & _
                                "FROM dbo_tblProduto " & _
                                "WHERE descricao Like '*" & txtPesquisa.Text & "*' AND statusProduto='ATIVO' AND statusLancamento='A' AND mixProduto Like '*" & [txtMixlojaPadrao] & "*' Or mixProduto Like '*" & [txtMixLoja] & "*' " & _
                                "ORDER BY dbo_tblProduto.descricao;"
        lstProduto.Requery
        End If
         End If
    End Sub
    Luiz Carlos Junior
    Luiz Carlos Junior
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 473
    Registrado : 21/08/2012

    [Resolvido]Filtrar consulta Empty Re: [Resolvido]Filtrar consulta

    Mensagem  Luiz Carlos Junior 11/10/2013, 12:46

    Logo na primeira dica do Leandro, no critério da consulta, você havia colocado "M" ou "G" correto?
    Você retirou esse critério de lá?
    Se não, retire e faça o teste.

    Abrasss!!!
    eriberto
    eriberto
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 72
    Registrado : 04/07/2013

    [Resolvido]Filtrar consulta Empty Re: [Resolvido]Filtrar consulta

    Mensagem  eriberto 11/10/2013, 12:54

    Boas Luis... não Luis, não retirei os critérios, eu estou pegando esse critério aparti de 2 variáveis no formulário onde ao carregar o formulário elas recebem o valor de M G como vc pode ver no código acima essa variáveis são chamada de txtMixlojaPadrao e txtMixloja ... adaptei tabem o codigo que me passaste mas ele só pegar um critério no filtro.... e preciso filtrar os dois.na mesma consulta.
    Luiz Carlos Junior
    Luiz Carlos Junior
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 473
    Registrado : 21/08/2012

    [Resolvido]Filtrar consulta Empty Re: [Resolvido]Filtrar consulta

    Mensagem  Luiz Carlos Junior 11/10/2013, 13:47

    Pelo que entendi então, os valores das variáveis txtMixlojaPadrao e txtMixloja recebem os valore "M" e "G" correto?
    Se for isso você está filtrando para mostrar os dois. Por isso mostra os outros produtos destas siglas.

    Não tem como disponibilizar essa parte do BD para analisar melhor a situação?

    Abrasss!!!
    eriberto
    eriberto
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 72
    Registrado : 04/07/2013

    [Resolvido]Filtrar consulta Empty Re: [Resolvido]Filtrar consulta

    Mensagem  eriberto 11/10/2013, 13:57

    Sim luiz... sua colocação esta correta...mas não sei como contorna essa situação... como relação apostar parte do banco não teria problema se não fosse o imparce de que meu beck_End é um Sql Server 2008 uso o Access so como Front-End onde Faço a vinculação com as tabelas do Sql Server.. se vc tiver como testa no sql server eu posso te passar a base mais o script que gera os bancos..... fica seu critério...
    Luiz Carlos Junior
    Luiz Carlos Junior
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 473
    Registrado : 21/08/2012

    [Resolvido]Filtrar consulta Empty Re: [Resolvido]Filtrar consulta

    Mensagem  Luiz Carlos Junior 11/10/2013, 14:35

    Teste assim:

    Código:
     lstProduto.RowSource = "SELECT TOP 100 dbo_tblProduto.codProduto, dbo_tblProduto.descricao, dbo_tblProduto.qtd_Estoque, Format(dbo_tblProduto.valorUnitario,'R$ ####0.00') AS valorUnitario, dbo_tblProduto.numLoja " & _
                                "FROM dbo_tblProduto " & _
                                "WHERE descricao Like '*" & txtPesquisa.Text & "*' AND statusProduto='ATIVO' AND statusLancamento='A' & _
                                "ORDER BY dbo_tblProduto.descricao;"
    eriberto
    eriberto
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 72
    Registrado : 04/07/2013

    [Resolvido]Filtrar consulta Empty Re: [Resolvido]Filtrar consulta

    Mensagem  eriberto 11/10/2013, 14:44

    Ok... testei mas ele não filtra os mix, quando executo uma consulta ele carrega todos produtos relacionado ao produto pesquisado de todos os mix..... entende?
    Luiz Carlos Junior
    Luiz Carlos Junior
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 473
    Registrado : 21/08/2012

    [Resolvido]Filtrar consulta Empty Re: [Resolvido]Filtrar consulta

    Mensagem  Luiz Carlos Junior 11/10/2013, 15:03

    Tu quer ou o Mix da Loja + produto ou o Mix Padrão + produto, é isso?
    Leandro
    Leandro
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1601
    Registrado : 12/11/2009

    [Resolvido]Filtrar consulta Empty Re: [Resolvido]Filtrar consulta

    Mensagem  Leandro 11/10/2013, 15:13

    Vou sugerir.

    Faça o primeiro SELECT com esses critérios: Like '*" & txtPesquisa.Text & "*' AND statusProduto='ATIVO' AND statusLancamento='A', porém não faça SELECT, faça INSERT INTO e adicione em tabela que te servirá como tabela temporária.

    Depois faça um SELECT com os dados da tabela temporária filtrando os dados do mix.

    Entendeu?

    eriberto
    eriberto
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 72
    Registrado : 04/07/2013

    [Resolvido]Filtrar consulta Empty Re: [Resolvido]Filtrar consulta

    Mensagem  eriberto 11/10/2013, 18:01

    Antes de mais nada quero ser muito grato ao mestre Leandro e ao amigo Luiz, que me deu uma enorme força para a resolução desse problema....a ajuda  de vocês foi essecial para que eu chegasse a formula correta...
    Para resolver o problema acabei optando por criterio que encontrei como exemplo no site da microsoft onde o mesmo faz um filtro no qual so retornaria os valores que tenha a primeira letra indicada nesse criterio... deixarei o codigo  para ajudar a solucionar possivéis duvidas relacionadas a essa.

    Esse codigo e usado para carregar ao abrir o formulario o List-Box:
    Código:
    SELECT TOP 200 dbo_tblProduto.codProduto, dbo_tblProduto.descricao, dbo_tblProduto.qtd_Estoque, Format(dbo_tblProduto.valorUnitario,'"R$ "0.00') AS valorUnitario, dbo_tblProduto.numLoja FROM dbo_tblProduto WHERE (((dbo_tblProduto.statusProduto)="ATIVO") AND ((dbo_tblProduto.statusLancamento)="A") AND ((dbo_tblProduto.mixProduto) Like "[G-M]*")) ORDER BY dbo_tblProduto.descricao;
    E esse utilizo para carregar o List-Box atraves de um filtro usando um Tex-Box:
    Código:
       lstProduto.RowSource = "SELECT TOP 200 dbo_tblProduto.codProduto, dbo_tblProduto.descricao, dbo_tblProduto.qtd_Estoque, Format(dbo_tblProduto.valorUnitario,'R$ ####0.00') AS valorUnitario, dbo_tblProduto.numLoja " & _
                                "FROM dbo_tblProduto " & _
                                "WHERE descricao Like '*" & txtPesquisa.Text & "*' AND statusProduto='ATIVO' AND statusLancamento='A' AND mixProduto Like '*" & "[M - G]*" & "*' " & _
                                "ORDER BY dbo_tblProduto.descricao;"
        lstProduto.Requery
    Mais uma vez muito obrigado aos meus parceiros.....
    Luiz Carlos Junior
    Luiz Carlos Junior
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 473
    Registrado : 21/08/2012

    [Resolvido]Filtrar consulta Empty Re: [Resolvido]Filtrar consulta

    Mensagem  Luiz Carlos Junior 11/10/2013, 18:12

    Boa! cheers cheers cheers 

    Que bom que conseguiu e melhor ainda, correndo atrás.
    Assim que faço, pois estou aprendendo ainda e aprendo muito com isso.

    Abrasss!!!

    Conteúdo patrocinado


    [Resolvido]Filtrar consulta Empty Re: [Resolvido]Filtrar consulta

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 23/11/2024, 00:11