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


4 participantes

    [Resolvido]Cálculo baseado em duas consultas não retorna valor nenhum

    avatar
    vanexarc
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Feminino
    Localização : Portugal
    Mensagens : 7
    Registrado : 13/04/2011

    [Resolvido]Cálculo baseado em duas consultas não retorna valor nenhum Empty Cálculo baseado em duas consultas não retorna valor nenhum

    Mensagem  vanexarc 13/10/2011, 18:40

    Boa tarde,

    já procurei pelo forum as formas de dar volta ao meu problema mas não consegui com nenhuma. Crying or Very sad

    As consultas que tem um número antes do nome, são os totais do tipo de transacção e a que tem nome de "Gross Profit", é um cálculo que está baseado nessas de totais, que fiz com base nas consultas de total de cada despesa.

    O que é que acontece? O Gross Profit é o Total Vendas - Total Compras, se o cliente não tiver resgistado qualquer valor de venda e só tiver compras, ele não executa o cálculo.

    Por exemplo, ao executar a consulta Gross Profit escolhendo:
    • o cliente A (que só tem compras) ou o cliente B (que só tem vendas) nenhum destes mostra o gross profit.

    • o cliente C e D (que tem compras e vendas) são os únicos que mostram o resultado do grossprofit.

    • o cliente E, testei a introduzir compras e vendas mas a 0€ também mostra resultados


    mas lá está, se um cliente não tiver uma das despesas desse tipo, o utilizador da bd não as vai introduzir, dessa forma, a consulta que faz o total de uma despesa não inserida não mostra qualquer valor e como consequência a do Gross Profit também não vai mostrar.
    Ainda não consegui dar a volta a isto para que quando não existem essas despesas inseridas na bd, as consultas de totais devolver na mesma os parametros, tendo no total o valor 0, de forma a que o gross profit possa ser calculado.

    É possível fazer com que a consulta de um total, devolva o valor 0 quando não há registos dessa despesa??
    Se calhar fazendo isso nas consultas de totais, as dos cálculos possivelmente já vai funcionar correctamente. Porque estão baseadas nessas e recebem o valor 0 em vez de nulo. É possível fazer isso?

    Obrigada pela atenção
    Vanessa
    Anexos
    [Resolvido]Cálculo baseado em duas consultas não retorna valor nenhum Attachmentexemplo.zip
    bd em anexo
    Você não tem permissão para fazer download dos arquivos anexados.
    (232 Kb) Baixado 6 vez(es)
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Cálculo baseado em duas consultas não retorna valor nenhum Empty Re: [Resolvido]Cálculo baseado em duas consultas não retorna valor nenhum

    Mensagem  Alexandre Neves 14/10/2011, 18:08

    Boa tarde, vanexarc

    Estou , desde ontem e conforme tempo disponível, a tentar resolver-lhe a dúvida. No entanto, até eu estou admirado por ainda não ter conseguido o relacionamento correcto para, num único SQL, trazer-lhe o resultado pretendido.
    De qualquer forma, se tiver urgência na resolução, informe pois, se assim fôr, tratar-se-á de se arranjar criação de tabela com o resultado pretendido.
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Cálculo baseado em duas consultas não retorna valor nenhum Empty Re: [Resolvido]Cálculo baseado em duas consultas não retorna valor nenhum

    Mensagem  Alexandre Neves 14/10/2011, 18:49

    Novamente, vanexarc
    Utilize apenas esta consulta (modo SQL)

    SELECT Name_Client, (SELECT Sum(Value_transaction) FROM (Clients as C1 LEFT JOIN Balance ON C1.id_Client=Balance.Id_Client) LEFT JOIN Transactions ON Balance.Id_Balance=transactions.id_balance WHERE id_transactionType=1 and C1.Id_Client=Clients.id_Client) as SumSales, (SELECT Sum(Value_transaction) FROM (Clients as C2 LEFT JOIN Balance ON C2.id_Client=Balance.Id_Client) LEFT JOIN Transactions ON Balance.Id_Balance=transactions.id_balance WHERE id_transactionType=2 and C2.Id_Client=Clients.id_Client) as SumPurchases FROM Clients WHERE Name_Client=[Client name]
    avatar
    vanexarc
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Feminino
    Localização : Portugal
    Mensagens : 7
    Registrado : 13/04/2011

    [Resolvido]Cálculo baseado em duas consultas não retorna valor nenhum Empty Re: [Resolvido]Cálculo baseado em duas consultas não retorna valor nenhum

    Mensagem  vanexarc 14/10/2011, 22:30

    Boa noite Alexandre,

    muito obrigada desde já pela disponibilidade. Tenho um pouco de urgência sim, e tenho dado voltas e voltas e não consigo.
    Essa consulta que me disponibilizou funciona mas não calcula na mesma o gross profit quando um dos valores é nulo Sad mas já está bem melhor, pois aparece o nome do cliente mesmo qd um dos valores é nulo e nas minhas nem isso.

    Eu copiei o seu código para o access, e depois acrescentei "[SumSales]-[SumPurchases] AS [Gross Profit]" logo a seguir a ultima informação do select, mas os valores nulos continuam com o campo em branco, há possibilidade de quando isso acontece, em vez de o campo ficar em branco ficar com valor 0 mesmo? Era isso que pretendia, pois assim o Gross Profit era sempre calculado mesmo quando o cliente nao tem vendas, ou qd o cliente nao tem compras. Como faço isso? Dá para fazer tipo uma condição se for nulo passa a ser igual a 0(para qd não encontra registos de sales ou de purchases ele fazer a conta na mesma)

    Como seria essa forma da criação da tabela, será que ai já permitia transformar o valor nulo em zero?


    Obrigada mais uma vez
    Vanessa
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Cálculo baseado em duas consultas não retorna valor nenhum Empty Re: [Resolvido]Cálculo baseado em duas consultas não retorna valor nenhum

    Mensagem  Alexandre Neves 14/10/2011, 22:35

    Novamente, vanexarc
    Crie uma função
    Function CNulo(ValorOuNulo) as double
    if isNull(ValorOuNulo) or ValorOuNulo="" Then CNulo=0 Else CNulo=ValorOuNulo
    End Function

    No código, onde quiser transformar nulo (ou cadeia vazia) em zero, chame a função.
    avatar
    vanexarc
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Feminino
    Localização : Portugal
    Mensagens : 7
    Registrado : 13/04/2011

    [Resolvido]Cálculo baseado em duas consultas não retorna valor nenhum Empty Re: [Resolvido]Cálculo baseado em duas consultas não retorna valor nenhum

    Mensagem  vanexarc 14/10/2011, 22:45

    Isso é para fazer no seguimento da sua consulta?
    Ou de outra forma?
    Desculpe a pergunta mas sou uma utilizadora novata ainda :s e não sei como funciona isso da função.

    Obrigada,
    Vanessa
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Cálculo baseado em duas consultas não retorna valor nenhum Empty Re: [Resolvido]Cálculo baseado em duas consultas não retorna valor nenhum

    Mensagem  Alexandre Neves 14/10/2011, 22:54

    Vanessa,

    Crie um módulo novo, cole a função que lhe fiz e grave.
    No código, para chamar a função, coloque-a antes do valor pretendido.
    Exemplificando com o código que lhe indiquei mais acima:
    SELECT Name_Client, (SELECT CNulo(Sum(Value_transaction)) FROM (Clients as C1 LEFT JOIN Balance ON C1.id_Client=Balance.Id_Client) LEFT JOIN Transactions ON Balance.Id_Balance=transactions.id_balance WHERE id_transactionType=1 and C1.Id_Client=Clients.id_Client) as SumSales, (SELECT CNulo(Sum(Value_transaction)) FROM (Clients as C2 LEFT JOIN Balance ON C2.id_Client=Balance.Id_Client) LEFT JOIN Transactions ON Balance.Id_Balance=transactions.id_balance WHERE id_transactionType=2 and C2.Id_Client=Clients.id_Client) as SumPurchases FROM Clients WHERE Name_Client=[Client name]
    avatar
    vanexarc
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Feminino
    Localização : Portugal
    Mensagens : 7
    Registrado : 13/04/2011

    [Resolvido]Cálculo baseado em duas consultas não retorna valor nenhum Empty Re: [Resolvido]Cálculo baseado em duas consultas não retorna valor nenhum

    Mensagem  vanexarc 14/10/2011, 23:23

    Alexandre, muito obrigada, funcionou e com a ajuda da sua função consegui colocar a funcionar para que nas consultas individuais também mostrasse zero Smile Obrigada mesmo, vou tentar fazer as que faltam que são com mais somas ver se consigo que não dê erros orientando-me com a ajuda que me deu Smile

    Se não for dar muito trabalho, permita-me só perguntar se seria possível explicar-me parte da função que fez para me ajudar.

    IsNull é para quando ele verifica e o campo tá vazio certo? para quando não tem valor nenhum no campo que ele está a verificar. E a outra condição que colocou de ValorOuNulo = "" que significa? é para verificar o quê? O que poderia acontecer se não colocasse as duas? (Desculpe a minha ignorância, mas gostava muito de perceber para aprender mais um pouco)

    Obrigada Smile

    Vanessa
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Cálculo baseado em duas consultas não retorna valor nenhum Empty Re: [Resolvido]Cálculo baseado em duas consultas não retorna valor nenhum

    Mensagem  Alexandre Neves 14/10/2011, 23:39

    Vanessa,
    Function CNulo(ValorOuNulo) as double 'função denominada CNulo, tendo um argumento denominado ValorOuNulo. Como não determinei o tipo de dados do argumento, ele assume como variant
    if isNull(ValorOuNulo) or ValorOuNulo="" Then CNulo=0 Else CNulo=ValorOuNulo
    'tradução da linha acima
    ' Se ValorOuNulo for nulo ou ValorOuNulo for cadeia vazia então CNulo fica zero, caso contrário, CNulo fica com o valor de ValorOuNulo
    End Function 'fim da função

    Estude códigos pela ajuda do Access e por apontamentos aqui do fórum
    avatar
    vanexarc
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Feminino
    Localização : Portugal
    Mensagens : 7
    Registrado : 13/04/2011

    [Resolvido]Cálculo baseado em duas consultas não retorna valor nenhum Empty Re: [Resolvido]Cálculo baseado em duas consultas não retorna valor nenhum

    Mensagem  vanexarc 15/10/2011, 00:00

    Entendido e muito obrigada mais uma vez.

    Vanessa
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Cálculo baseado em duas consultas não retorna valor nenhum Empty Re: [Resolvido]Cálculo baseado em duas consultas não retorna valor nenhum

    Mensagem  Alexandre Neves 15/10/2011, 11:06

    Vanessa,

    Para dar por resolvido, tem de pressionar o botão "Resolvido" da parte inferior esquerda do painel.
    Vou dar por resolvido.
    avatar
    vanexarc
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Feminino
    Localização : Portugal
    Mensagens : 7
    Registrado : 13/04/2011

    [Resolvido]Cálculo baseado em duas consultas não retorna valor nenhum Empty Re: [Resolvido]Cálculo baseado em duas consultas não retorna valor nenhum

    Mensagem  vanexarc 16/10/2011, 00:50

    Peço desculpa, não tinha visto o botão.
    Obrigada
    avatar
    MissF
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Feminino
    Localização : Portugal
    Mensagens : 6
    Registrado : 21/06/2010

    [Resolvido]Cálculo baseado em duas consultas não retorna valor nenhum Empty Re: [Resolvido]Cálculo baseado em duas consultas não retorna valor nenhum

    Mensagem  MissF 10/11/2011, 16:29

    Boa tarde

    Poderiam por favor explicar-me porque foi usado o left join em vez do inner join?
    Estive a ler todo o tópico e fiquei com essa dúvida.

    Obrigada
    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 11016
    Registrado : 04/11/2009

    [Resolvido]Cálculo baseado em duas consultas não retorna valor nenhum Empty Re: [Resolvido]Cálculo baseado em duas consultas não retorna valor nenhum

    Mensagem  JPaulo 10/11/2011, 16:35

    Se não me enganar, o Left Join foi utilizado para a relação de um para muitos.

    Ou seja, por exemplo na Tabela A, o Cliente JP com varios registros na Tabela B.

    O Inner Join é só para onde for igual nas duas tabelas.


    .................................................................................
    Contribua com o maximoaccess nos links abaixo, ajude a melhorar este que é o seu site na NET.

    Pay-Pal R$ Aqui
    Pay-Pal € Aqui

    Ou ainda: Aqui (Novo)

    Sucesso e Bons Estudos
    Success and Good Studies

    [Resolvido]Cálculo baseado em duas consultas não retorna valor nenhum Folder_announce_new Utilize o Sistema de Busca do Fórum...
    [Resolvido]Cálculo baseado em duas consultas não retorna valor nenhum Folder_announce_new 102 Códigos VBA Gratuitos...
    [Resolvido]Cálculo baseado em duas consultas não retorna valor nenhum Folder_announce_new Instruções SQL como utilizar...

    Conteúdo patrocinado


    [Resolvido]Cálculo baseado em duas consultas não retorna valor nenhum Empty Re: [Resolvido]Cálculo baseado em duas consultas não retorna valor nenhum

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 12/5/2024, 23:25