MaximoAccess

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

Obrigado

Administração do MaximoAccess

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

    [Resolvido]Buscar dados via VBA com filtro

    Compartilhe

    Chamon Consultoria
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 196
    Registrado : 31/08/2012

    [Resolvido]Buscar dados via VBA com filtro

    Mensagem  Chamon Consultoria em Qui 15 Set 2016, 03:16

    Boa noite!

    Bd em Access 2010.

    Estou buscando dados de uma tabela para outra da seguinte forma:

    rs("Codigo") = rst("Codigo")

    Porém está buscando todos os Códigos do registro.
    Gostaria que buscasse apenas os códigos que forem pré-definidos.
    Exemplo: Quero que busque apenas os registros que contém os códigos 100 ou 200.


    Como Faço isso?

    Desde já agradeço!

    avatar
    FabioPaes
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3335
    Registrado : 14/08/2013

    Re: [Resolvido]Buscar dados via VBA com filtro

    Mensagem  FabioPaes em Qui 15 Set 2016, 11:40

    Trm q nos dar mais detalhes de como esta fazendo amigo, se nao e impossivel lhe ajudar...


    .................................................................................
    _____________________________________________________________________
    Achou a solução para sua dúvida? Não seja Egoísta, Compartilhe com todos!
    A dica do Colega foi útil? Agradeça!

    O importante não saber tudo, mas sim a Onde procurar!
    avatar
    Julio Lustosa
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 172
    Registrado : 23/02/2011

    Re: [Resolvido]Buscar dados via VBA com filtro

    Mensagem  Julio Lustosa em Qui 15 Set 2016, 12:34

    Bom dia!

    Seria interessante você passar cópia do código que está usando e uma cópia da tabela.

    Não esqueça de explicar bem como o seu código deveria funcionar.

    Aguardamos.

    Chamon Consultoria
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 196
    Registrado : 31/08/2012

    Re: [Resolvido]Buscar dados via VBA com filtro

    Mensagem  Chamon Consultoria em Qui 15 Set 2016, 12:59

    FabioPaes, bom dia!

    O bd possui um formulário chamado DevolucaoRemessa.
    Esse formulário possui o campo txtNUMERONF, que quando digitado o número da NF, busca todas as suas informações para este formulário.
    Porém, de acordo com o código do produto (campo "Codigo" da tabela de origem) alguns produtos não serão devolvidos. Isso é uma regra. Sempre os produtos com os códigos 100 ou 200, não serão devolvidos.

    Parte do comando que está no campo txtNUMERONF no evento Após Atualizar:

    Private Sub txtNUMERONF_AfterUpdate()


    Set dbs = CurrentDb
    strSQL = "SELECT * FROM tbl_VendasItens WHERE NUMEROPEDIDO = " & "'" & txtNUMEROSAIDA & "'"
    strSQL = strSQL & " AND CODIGO <> null"
    Set rst = dbs.OpenRecordset(strSQL)

    Do While Not rst.EOF
    Set DB = CurrentDb()
    Set rs = DB.OpenRecordset("zzz_tbl_ProdutosReferenciados")

    rs.AddNew

    rs("Codigo") = rst("Codigo")

    rs.Update


    avatar
    FabioPaes
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3335
    Registrado : 14/08/2013

    Re: [Resolvido]Buscar dados via VBA com filtro

    Mensagem  FabioPaes em Qui 15 Set 2016, 13:15

    Posta esse exemplo aqui amigo por favor. Posta so as partes envolvidas pra facilitar o entendimento...

    Mas, nao tem aspas de mais nao ali na condição?

    Teste:

    Set dbs = CurrentDb
    strSQL = "SELECT * FROM tbl_VendasItens WHERE NUMEROPEDIDO = " & txtNUMEROSAIDA & ""
    strSQL = strSQL & " AND CODIGO <> null"
    Set rst = dbs.OpenRecordset(strSQL)

    Do While Not rst.EOF
    Set DB = CurrentDb()
    Set rs = DB.OpenRecordset("zzz_tbl_ProdutosReferenciados")

    rs.AddNew

    rs("Codigo") = rst("Codigo")

    rs.Update


    .................................................................................
    _____________________________________________________________________
    Achou a solução para sua dúvida? Não seja Egoísta, Compartilhe com todos!
    A dica do Colega foi útil? Agradeça!

    O importante não saber tudo, mas sim a Onde procurar!

    Chamon Consultoria
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 196
    Registrado : 31/08/2012

    Re: [Resolvido]Buscar dados via VBA com filtro

    Mensagem  Chamon Consultoria em Qui 15 Set 2016, 16:16

    FabioPaes,

    Fiz algumas análises da questão e antes de continuarmos, faço duas correções em minha fala.

    1- o campo a ser filtrado será o campo "CFOP" e não o campo "Codigo" referente ao produto.

    Assim,

    2 - Onde lê-se: " Sempre os produtos com os códigos 100 ou 200, não serão devolvidos."


    Leia-se: "Apenas os CFOPs 5902 ou 5903 serão devolvidos."


    Fiz alguns testes, mas todos acusaram erros. O último teste foi:

    Set dbs = CurrentDb
    strSQL = "SELECT * FROM tbl_VendasItens WHERE NUMEROPEDIDO = " & "'" & txtNUMEROSAIDA & "'"
    strSQL = strSQL & " AND CODIGO <> null"
    strSQL = strSQL & " AND zzz_tbl_ProdutosReferenciados.CFOP = 5902 or 5903"
    Set rst = dbs.OpenRecordset(strSQL)

    Acusou o erro: Erro em tempo de execução '3061': Parâmetros insuficientes. Eram esperados 1.

    Sei que o xis da questão está apenas nessa linha: strSQL = strSQL & " AND zzz_tbl_ProdutosReferenciados.CFOP = 5902 or 5903", pois no mais, tudo está funcionando.



    avatar
    FabioPaes
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3335
    Registrado : 14/08/2013

    Re: [Resolvido]Buscar dados via VBA com filtro

    Mensagem  FabioPaes em Qui 15 Set 2016, 16:51

    strSQL = "SELECT * FROM tbl_VendasItens WHERE NUMEROPEDIDO = " & "'" & txtNUMEROSAIDA & "'" <== Veja a mensagem anterio, corrija aqui pois acredito que tem & e """ de mais....


    strSQL = strSQL & " AND zzz_tbl_ProdutosReferenciados.CFOP = 5902 or 5903" <== Corija para:


    strSQL = strSQL & " AND zzz_tbl_ProdutosReferenciados.CFOP = 5902 OR zzz_tbl_ProdutosReferenciados.CFOP = 5903"



    Veja se Resolve!


    .................................................................................
    _____________________________________________________________________
    Achou a solução para sua dúvida? Não seja Egoísta, Compartilhe com todos!
    A dica do Colega foi útil? Agradeça!

    O importante não saber tudo, mas sim a Onde procurar!

    Chamon Consultoria
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 196
    Registrado : 31/08/2012

    Re: [Resolvido]Buscar dados via VBA com filtro

    Mensagem  Chamon Consultoria em Qui 15 Set 2016, 22:13

    FabioPaes,

    Fiz diversos testes com diversas combinações, infelizmente não funcionaram.

    Justificando sua fala:

    "strSQL = "SELECT * FROM tbl_VendasItens WHERE NUMEROPEDIDO = " & "'" & txtNUMEROSAIDA & "'" <== Veja a mensagem anterio, corrija aqui pois acredito que tem & e """ de mais...."


    Fiz o teste conforme sua sugestão, mas o resultado foi o mesmo.
    strSQL = "SELECT * FROM tbl_VendasItens WHERE NUMEROPEDIDO = " & txtNUMEROSAIDA & ""

    Outro ponto é em relação as tabelas de origem e destino. Acabei fazendo uma citação errada induzindo você ao erro, e peço desculpas por isso. Explico:
    A tabela de origem é a tbl_VendasItens, onde strSQL = "SELECT * FROM tbl_VendasItens...

    Assim onde citei: strSQL = strSQL & " AND zzz_tbl_ProdutosReferenciados.CFOP = 5902 or 5903" ... acredito que deveria ser tbl_VendasItens ...
    Ou simplesmente não precisaria do nome da tabela, pois ela já foi chamada no "SELECT * FROM tbl_VendasItens.

    A tabela de destino é a zzz_tbl_ProdutosReferenciados.

    Testei com:

    strSQL = strSQL & " AND tbl_VendasItens.CFOP = 5902 Or tbl_VendasItens.CFOP = 5903"  (Erro 3464: tipo de dados incompatível na expressão de critério)

    Depois com:

    strSQL = strSQL & " AND tbl_VendasItens.CFOP = 5902 Or tbl_VendasItens.CFOP = 5903" & txtCFOP & "'" (Erro 3075: Erro de sintaxe na sequência de caracteres na expressão de consulta)

    Depois:

    strSQL = strSQL & " AND CFOP = 5902 Or CFOP = 5903" (Erro 3464: tipo de dados incompatível na expressão de critério)
    avatar
    FabioPaes
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3335
    Registrado : 14/08/2013

    Re: [Resolvido]Buscar dados via VBA com filtro

    Mensagem  FabioPaes em Qui 15 Set 2016, 22:58

    Para facilitar! Poste esse Exemplo aqui amigo!


    .................................................................................
    _____________________________________________________________________
    Achou a solução para sua dúvida? Não seja Egoísta, Compartilhe com todos!
    A dica do Colega foi útil? Agradeça!

    O importante não saber tudo, mas sim a Onde procurar!

    Chamon Consultoria
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 196
    Registrado : 31/08/2012

    Re: [Resolvido]Buscar dados via VBA com filtro

    Mensagem  Chamon Consultoria em Sex 16 Set 2016, 02:39

    Consegui resolver o problema da seguinte forma:

    Criei uma consulta baseada na tabela "zzz_tbl_ProdutosReferenciados" e a inseri como origem no subformulário.
    No campo CFOP da consulta, coloquei o critério "5902" Ou "5903".

    Dessa forma são importados todos os dados da tbl_ProdutosReferenciados, mas são mostrados no subformulário apenas os que contém CFOP 5902 ou 5903.


    Não sei se é a forma mais correta, mas funcionou.

    No mais, agradeço pela ajuda e atenção.

    avatar
    FabioPaes
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3335
    Registrado : 14/08/2013

    Re: [Resolvido]Buscar dados via VBA com filtro

    Mensagem  FabioPaes em Sex 16 Set 2016, 14:54

    Se na consulta aceitou ou corrigiu para "5902" significa que o campo CFOP é TEXTO. <=== Essa era o seu problema amigo, achavamos que era NUMERO.


    .................................................................................
    _____________________________________________________________________
    Achou a solução para sua dúvida? Não seja Egoísta, Compartilhe com todos!
    A dica do Colega foi útil? Agradeça!

    O importante não saber tudo, mas sim a Onde procurar!

    Chamon Consultoria
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 196
    Registrado : 31/08/2012

    Re: [Resolvido]Buscar dados via VBA com filtro

    Mensagem  Chamon Consultoria em Sab 17 Set 2016, 00:35

    Sendo no formato texto é possível utilizá-lo com "filtro"?
    avatar
    FabioPaes
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3335
    Registrado : 14/08/2013

    Re: [Resolvido]Buscar dados via VBA com filtro

    Mensagem  FabioPaes em Sab 17 Set 2016, 01:49

    Sim... A unica diferença e que o valos a ser passado deve estar entre '" & me.NomeCampo & "'.


    Tente:

    strSQL = strSQL & " AND tbl_VendasItens.CFOP = '5902' Or tbl_VendasItens.CFOP = '5903'"


    .................................................................................
    _____________________________________________________________________
    Achou a solução para sua dúvida? Não seja Egoísta, Compartilhe com todos!
    A dica do Colega foi útil? Agradeça!

    O importante não saber tudo, mas sim a Onde procurar!

    Chamon Consultoria
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 196
    Registrado : 31/08/2012

    Re: [Resolvido]Buscar dados via VBA com filtro

    Mensagem  Chamon Consultoria em Sab 17 Set 2016, 02:50

    Fiz alguns testes:

    Teste 1 (Conforme sua citação): strSQL = strSQL & " AND tbl_VendasItens.CFOP = '5902' Or tbl_VendasItens.CFOP = '5903'"

    ou apenas: strSQL = strSQL & " AND CFOP = '5902' Or CFOP = '5903'" ( O resultado foi o mesmo)


    Resultado: Buscou apenas os registros com os CFOPs 5902 ou 5903, porém não respeitou o filtro para buscar os itens apenas da NF chamada. Chamei uma NF e foram retornados todos os itens das demais NFs com os CFOPs 5902 ou 5903.

    Teste 2 : strSQL = strSQL & " AND tbl_VendasItens.CFOP = '5902' ou strSQL = strSQL & " AND CFOP = '5902'

    Resultado: Funcionou perfeitamente para as NFs que possuem o CFOP 5902. Chamei a NF e buscou apenas os itens da NF chamada.

    Conclusão: a parte Or está fazendo com que não seja respeitado o filtro dos itens da NF chamada.
    avatar
    FabioPaes
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3335
    Registrado : 14/08/2013

    Re: [Resolvido]Buscar dados via VBA com filtro

    Mensagem  FabioPaes em Sab 17 Set 2016, 03:25

    Pode postar exemplo pra dsr uma olhada depois?


    .................................................................................
    _____________________________________________________________________
    Achou a solução para sua dúvida? Não seja Egoísta, Compartilhe com todos!
    A dica do Colega foi útil? Agradeça!

    O importante não saber tudo, mas sim a Onde procurar!

    Chamon Consultoria
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 196
    Registrado : 31/08/2012

    Re: [Resolvido]Buscar dados via VBA com filtro

    Mensagem  Chamon Consultoria em Dom 18 Set 2016, 21:03

    FabioPaes,

    veja se essas informações são suficientes para verificação.

    Abraço
    Anexos
    Database2.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (144 Kb) Baixado 11 vez(es)
    avatar
    FabioPaes
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3335
    Registrado : 14/08/2013

    Re: [Resolvido]Buscar dados via VBA com filtro

    Mensagem  FabioPaes em Seg 19 Set 2016, 00:26

    Amigo, infelizmente nao consegui achar o codigo no seu exemplo... E nao soube como proceder para obter o erro...


    .................................................................................
    _____________________________________________________________________
    Achou a solução para sua dúvida? Não seja Egoísta, Compartilhe com todos!
    A dica do Colega foi útil? Agradeça!

    O importante não saber tudo, mas sim a Onde procurar!

    Chamon Consultoria
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 196
    Registrado : 31/08/2012

    Re: [Resolvido]Buscar dados via VBA com filtro

    Mensagem  Chamon Consultoria em Seg 19 Set 2016, 02:14

    No campo Nº Nota (txtNUMERONF) do formulário "DevolucaoRemessaBaixarEstoque" digite 35 ou 36.

    Na NF 35 há itens com os CFOPs 5124 e 5902.

    Já na 36 todos os itens estão com o CFOP 5903.


    O código está em "Private Sub txtNUMERONF_AfterUpdate()". Porém no seu formato original:

    Set dbs = CurrentDb
    strSQL = "SELECT * FROM tbl_VendasItens WHERE NUMEROPEDIDO = " & "'" & txtNUMEROSAIDA & "'"
    strSQL = strSQL & " AND CODIGO <> null"
    Set rst = dbs.OpenRecordset(strSQL)

    Falta acrescentar:

    strSQL = strSQL & " AND tbl_VendasItens.CFOP = '5902' Or tbl_VendasItens.CFOP = '5903' "


    Qualquer dúvida, estou a disposição.

    Obrigado

    Chamon Consultoria
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 196
    Registrado : 31/08/2012

    Re: [Resolvido]Buscar dados via VBA com filtro

    Mensagem  Chamon Consultoria em Seg 19 Set 2016, 02:18

    Faltou a explicação do funcionamento:

    Quando você chamar a NF 35 ou 36, o comando deve buscar todos os dados referentes à NF.

    Acrescentando o filtro para o CFOP 5902 ou 5903, só devem ser buscados os itens com os mesmos.





    avatar
    FabioPaes
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3335
    Registrado : 14/08/2013

    Re: [Resolvido]Buscar dados via VBA com filtro

    Mensagem  FabioPaes em Seg 19 Set 2016, 03:46

    Amigo, desculpa nao consegui entender muita coisa nao o do que pretende... Fiquei meio perdido no seu código.

    Utilize da forma como conseguiu mesmo...


    .................................................................................
    _____________________________________________________________________
    Achou a solução para sua dúvida? Não seja Egoísta, Compartilhe com todos!
    A dica do Colega foi útil? Agradeça!

    O importante não saber tudo, mas sim a Onde procurar!

    Chamon Consultoria
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 196
    Registrado : 31/08/2012

    Re: [Resolvido]Buscar dados via VBA com filtro

    Mensagem  Chamon Consultoria em Seg 19 Set 2016, 16:20

    Sem problema, você já me ajudou bastante. Só tenho que agradecer.
    Estou batalhando em novos "problemas", mas pretendo voltar e tentar resolver este pelo código.
    Qualquer novidade, posto aqui.

    Mais uma vez, obrigado!

      Data/hora atual: Ter 26 Set 2017, 06:42