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]Retornar valor 0 se consulta der vazio

    Compartilhe

    werlewow
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 128
    Registrado : 09/10/2017

    [Resolvido]Retornar valor 0 se consulta der vazio

    Mensagem  werlewow em 1/3/2018, 17:19

    Boa tarde
    Possuo uma consulta que me diz o total de pedidos desse mês. O problema é que logo na virada do mês, ate que feche o primeiro pedido, a soma "buga" pois a consulta da resultado vazio, ja que nao tem nenhum pedido ainda.. Preciso de algo que troque do vazio para 0, ai fique zerado o valor total de pedido.
    ja tentei o comando NZ, porem nao sei se fiz certo, mas nao deu.. Vou colar o SQL e o SQL com a expressão NZ, que também nao deu. Quem puder, me ensine passo a passo, pois estou aprendendo. Muito obrigado !!
    Sql original

    SELECT vw_fat_0000.EMP, Sum(vw_fat_0000.TOTAL_PEDIDO) AS SomaDeTOTAL_PEDIDO
    FROM vw_fat_0000
    WHERE (((Year(Now()))=Year([data_emisao])) AND ((Month(Now()))=Month([data_emisao])) AND ((vw_fat_0000.DATA_EMISAO)<=Now()))
    GROUP BY vw_fat_0000.EMP
    HAVING (((vw_fat_0000.EMP)=1));

    SQL que tentei, sem sucesso

    SELECT vw_fat_0000.EMP,NZ( Sum(vw_fat_0000.TOTAL_PEDIDO),0) AS SomaDeTOTAL_PEDIDO
    FROM vw_fat_0000
    WHERE (((Year(Now()))=Year([data_emisao])) AND ((Month(Now()))=Month([data_emisao])) AND ((vw_fat_0000.DATA_EMISAO)<=Now()))
    GROUP BY vw_fat_0000.EMP
    HAVING (((vw_fat_0000.EMP)=1));

    avatar
    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7030
    Registrado : 05/11/2009

    Re: [Resolvido]Retornar valor 0 se consulta der vazio

    Mensagem  Alexandre Neves em 1/3/2018, 20:04

    Boa noite,
    Tente
    SELECT EMP, Sum(TOTAL_PEDIDO)+0 AS SomaDeTOTAL_PEDIDO FROM vw_fat_0000 WHERE Year(Now())=Year([data_emisao]) AND (Month(Now())=Month([data_emisao]) AND DATA_EMISAO<=Now()) GROUP BY EMP HAVING EMP=1;


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo

    werlewow
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 128
    Registrado : 09/10/2017

    Re: [Resolvido]Retornar valor 0 se consulta der vazio

    Mensagem  werlewow em 2/3/2018, 11:37

    Nao deu, a consulta funciona porém o erro persiste, se nao há valores, ele me da vazio e "buga "a consulta..
    avatar
    FabioPaes
    Moderador
    Moderador

    Respeito às Regras 100%

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

    Re: [Resolvido]Retornar valor 0 se consulta der vazio

    Mensagem  FabioPaes em 2/3/2018, 12:52

    Experimente o NZ() No Campo. antes da Soma

    Sum(NZ(TOTAL_PEDIDO,0))


    .................................................................................
    _____________________________________________________________________
    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!

    werlewow
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 128
    Registrado : 09/10/2017

    Re: [Resolvido]Retornar valor 0 se consulta der vazio

    Mensagem  werlewow em 2/3/2018, 18:15

    nao deu

    Noobezinho
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3632
    Registrado : 29/06/2012

    Re: [Resolvido]Retornar valor 0 se consulta der vazio

    Mensagem  Noobezinho em 2/3/2018, 21:03

    Gabriel

    Coloque o NZ(NomeControle,0) que o Fabio disse, em todos os campos que tem os valores.

    Se fizer isso não precisará usar o nz() na soma do Total pedido.

    Se ainda não der, terá que definir o valor padrão desses campos na(s) tabela(s) = 0,

    que aliás, deve ser o correto quando se trata de campo numérico.



    [ ]'s
    avatar
    Cláudio Más
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1276
    Registrado : 21/01/2012

    Re: [Resolvido]Retornar valor 0 se consulta der vazio

    Mensagem  Cláudio Más em 3/3/2018, 11:41

    Sem o banco de dados fica mais complicado, mas talvez funcione:

    SELECT EMP, Sum(TOTAL_PEDIDO) AS SomaTOTAL_PEDIDO
    FROM

    (SELECT EMP, Sum(TOTAL_PEDIDO) AS SomaDeTOTAL_PEDIDO FROM vw_fat_0000 WHERE Year(Now())=Year([data_emisao]) AND (Month(Now())=Month([data_emisao]) AND DATA_EMISAO<=Now()) AND EMP=1
    GROUP BY EMP
    UNION ALL EMP, 0 AS SomaDeTOTAL_PEDIDO FROM vw_fat_0000) a

    GROUP BY a.EMP
    avatar
    scandinavo
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

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

    Re: [Resolvido]Retornar valor 0 se consulta der vazio

    Mensagem  scandinavo em 4/3/2018, 16:43

    Opiniao
    Se essa consulta estiver no vba use o if
    Se for vaziu cai fora
    De não
    Sua consulta

    werlewow
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 128
    Registrado : 09/10/2017

    Re: [Resolvido]Retornar valor 0 se consulta der vazio

    Mensagem  werlewow em 5/3/2018, 11:59

    Noobezinho, Não entendi muito bem onde é para colocar o NZ.. Também nao tem como deixar padrão igual a 0, pelo menos eu acho que nao tem, pois o valor é nulo quando nao há pedidos, ou seja, nao tem nem linhas na tabela.

    Cláudio Más tentei e nao deu..

    scandinavo Nao entendi.

    Obrigado a todos, estou colocando o BD aqui, Perceba que tem a tb_pedidos, nela encontram-se todos os pedidos da empresa. Ai tenho uma consulta que filtra só os pedidos do mes em que estamos. E por ultimo uma consulta que soma o valor dos pedidos desse mes em que estamos, é nessa consulta que estou com problema. Para entender, abram a consulta, percebam que vai me dar o valor somado dos pedidos da tabela, agora se voces forem na tabela e excluirem os pedidos, percebam que a consulta me trás valor nenhum, nulo, e queria que me desse o valor "0".

    Muito obrigado até o momento.

    Segue link BD:
    [Você precisa estar registrado e conectado para ver este link.]

    Noobezinho
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3632
    Registrado : 29/06/2012

    Re: [Resolvido]Retornar valor 0 se consulta der vazio

    Mensagem  Noobezinho em 5/3/2018, 14:31

    Gabriel

    Eu executo a consulta vw_fat_mes_atvon, ela retorna o valor da soma dos 3 registros: 27139,41

    Apagando o valor de cada registros, retorna 0

    Não é isso que deseja?
    avatar
    Cláudio Más
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1276
    Registrado : 21/01/2012

    Re: [Resolvido]Retornar valor 0 se consulta der vazio

    Mensagem  Cláudio Más em 5/3/2018, 16:30

    Só pra corrigir a minha mensagem anterior:

    SELECT EMP, Sum(SomaDeTOTAL_PEDIDO) AS SomaTOTAL_PEDIDO
    FROM

    (SELECT EMP, Sum(TOTAL_PEDIDO) AS SomaDeTOTAL_PEDIDO FROM vw_fat_0000 WHERE Year(Now())=Year([data_emisao]) AND (Month(Now())=Month([data_emisao]) AND DATA_EMISAO<=Now()) AND EMP=1 GROUP BY EMP
    UNION ALL
    SELECT EMP, 0 AS SomaDeTOTAL_PEDIDO FROM tb_pedidos) a

    GROUP BY a.EMP


    Última edição por Cláudio Más em 5/3/2018, 16:39, editado 1 vez(es) (Razão : Correção do UNION ALL)

    werlewow
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 128
    Registrado : 09/10/2017

    Re: [Resolvido]Retornar valor 0 se consulta der vazio

    Mensagem  werlewow em 5/3/2018, 16:36

    Noobezinho isso mesmo, mas para mim retorna vazio, e nao 0.. porque sera?


    Cláudio Más arrumei como vc mandou, mas nao deu certo, ficou bem diferente, ele me tras os dois resultados (soma das 2 empresas)
    avatar
    Cláudio Más
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1276
    Registrado : 21/01/2012

    Re: [Resolvido]Retornar valor 0 se consulta der vazio

    Mensagem  Cláudio Más em 5/3/2018, 16:42

    Vê se acontece o mesmo problema no bd em anexo, na "Consulta1".
    Anexos
    PROBLEMA NUMERO VAZIO.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (1.2 Mb) Baixado 8 vez(es)

    werlewow
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 128
    Registrado : 09/10/2017

    Re: [Resolvido]Retornar valor 0 se consulta der vazio

    Mensagem  werlewow em 5/3/2018, 17:09

    Nao, agora deu certo, me retornou "0".
    Porem nao entendi o que voce fez, surgiu uma tabela "a".. como faço para adaptar?
    Até porque no SQL vc selecionou EMP = 1 porém o resultado "0" foi da empresa 2.. nao entendi

    Obrigado
    avatar
    Cláudio Más
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1276
    Registrado : 21/01/2012

    Re: [Resolvido]Retornar valor 0 se consulta der vazio

    Mensagem  Cláudio Más em 5/3/2018, 22:58

    No SQL selecionei EMP = 1 da mesma forma como a sua instrução na primeira mensagem.

    Incluí apenas uma linha de teste com EMP = 2 para demonstrar que apresentaria valor zero mesmo sem registros para esse EMP.

    "a" não é uma tabela, e sim uma instrução SELECT que pode ser vista na SQL da "Consulta1"

    Para adaptar, é só alterar a instrução SQL conforme a sua necessidade, depende de como estiver estruturado o seu sistema.
    Só o que sabemos a respeito é o banco de dados que vc enviou, com uma tabela e uma consulta.
    Não dá pra opinar muito com tão pouca informação.

    werlewow
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 128
    Registrado : 09/10/2017

    Re: [Resolvido]Retornar valor 0 se consulta der vazio

    Mensagem  werlewow em 6/3/2018, 18:29

    Deu certoooo, muito obrigado! Desculpem a demora, estou aprendendo sozinho SQL e VBA entao nao manjo muito :p

    Caso resolvido !

    werlewow
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 128
    Registrado : 09/10/2017

    Re: [Resolvido]Retornar valor 0 se consulta der vazio

    Mensagem  werlewow em 6/3/2018, 18:30

    Esqueci de por resolvido..

      Data/hora atual: 16/11/2018, 12:22