Ir para conteúdo
Fórum Script Brasil
  • 0

Somar valores de um campo em DataReport


Gabriel Cabral

Pergunta

Bom dia pessoal......estou com uma dúvida imensa aqui...quebrando a cabeça mas não estou conseguindo achar uma lógica pro que estou precisando...

Estou fazendo um relatório em DataReport e DataEnvironment.

É um relatorio do balanço de contas a pagar e a receber em um determinado período.

A instrução SQL que faz o filtro para gerar o relatorio é esta

SELECT * FROM FinanWin_Contas WHERE isNull (Con_DataPgto) AND Con_Venc BETWEEN ? AND ?

Até aí tudo bem...

O problema surge agora:

Eu gravo na mesma tabela os dados de contas a pagar e contas a receber, e apenas diferencio preenchendo o campo Con_Tipo com CP ou CR.

No DataReport, preciso informar a soma das contas a pagar naquele período determinado e a soma das contas a receber.

Se eu usar a função SUM do DataReport, vai somar tudo o que está no campo Con_Valor, pois não estará diferenciado qual o tipo da conta.

Como eu conseguiria informar, no DataReport, a soma desses valores, separadamente, mesmo estando num único campo??

Seria na instrução SQL???

Como ficaria?

alguém tem alguma ideia pra me ajudar??

Agradeço muito

Link para o comentário
Compartilhar em outros sites

8 respostass a esta questão

Posts Recomendados

  • 0

Então kuroi....é q o campo VALOR é um só....Não existe um campo de Valor para CP e um campo de Valor para CR....

o que existe é um campo de valor....aí no campo tipo eu especifico se é CP ou CR...

pra resolver isso eu teria q ter um campo de valor pra CP e outro pra CR??

Obrigado

Link para o comentário
Compartilhar em outros sites

  • 0

então faz uma soma para quando o campo tipo for CP e outra para quando o campo tipo for CR

Select sum(valor) as total_CP from tabela where tipo = CP

Select sum(valor) as Total_CR from tabela where tipo = CR

ai você terá duas somas distintas, uma somara o todos os registros do campo VALOR quando o campo TIPO estiver CR e outra somara os registros do campo VALOR quando o campo TIPO for CP

Link para o comentário
Compartilhar em outros sites

  • 0

não gabriel, não precisa de dois campos. o esquema é como o macedo falou, só q com o meu codigo você faz em uma consulta só.

tipo, eu sei q você só tem um campo pro valor. mas a consulta transforma e dois. de uma olhada:

Select IIf(Con_Tipo = 'CP', Valor, 0) As Valor_CP, IIf(Con_Tipo = 'CR', Valor, 0) As Valor_Cr From Tabela
veja esse iif: IIf(Con_Tipo = 'CP', Valor, 0) As Valor_CP note q o campo Valor_CP não existe na Tabela. ele vai ser um campo calculado q vai aparecer nesse select. observe a condicao do iif. quando o Con_Tipo for = 'CP', ele vai retornar o Valor, senao ele retorna 0. ou seja, o Valor_CP vai ser um campo calculado desse seu select q vai ter valor apenas quando o Con_Tipo for 'CP'. quando for 'CR' ele vai ser 0. ai uma soma desse campo calculado vai resultar na soma de todos os valores de contas pra pagar do seu banco. o segundo campo calculado do select acima faz o mesmo, só q pras contas pra receber. você pode ate já fazer as somas assim:
Select Sum(IIf(Con_Tipo = 'CP', Valor, 0)) As Valor_CP, Sum(IIf(Con_Tipo = 'CR', Valor, 0)) As Valor_Cr From Tabela

mas note q o IIf só funciona em Access. pra SQL tem q ser case e não tenho certeza quanto aos outros bancos.

entendeu agora ou isso q eu passei não serve pra você??

Link para o comentário
Compartilhar em outros sites

  • 0

Serve sim.....vou tentar aqui e daqui a pouco volto pra agradecer ou pedir mais ajuda

Obs.: uso Access...então o Iif dá certo

Só uma outra coisa...

Então como ficaria a instrução SQL, já q eu preciso selecionar todos os campos da tabela e ainda colocar uma cláusula????!!

A pergunta "menos formal" seria:

Como juntar isso

SELECT * FROM FinanWin_Contas WHERE isNull (Con_DataPgto) AND Con_Venc BETWEEN ? AND ?
com isso
Select Sum(IIf(Con_Tipo = 'CP', Valor, 0)) As Valor_CP, Sum(IIf(Con_Tipo = 'CR', Valor, 0)) As Valor_Cr From Tabela

????

Obrigado

Link para o comentário
Compartilhar em outros sites

  • 0

tipo, é só você escrever nome de campo por campo no select.

e como você vai fazer soma vai ter q agrupar pelos campos selecionados (com Group By no final), mas não tem sentido somar os valores se for pra selecionar todos os campos, a não ser q você tenha registros duplicados (em q todos os campos sejam iguais), já q você estaria selecionando registro por registro.

Link para o comentário
Compartilhar em outros sites

  • 0

Mas eu preciso selecionar todos os campos para eles aparecerem no relatório....

e preciso da soma separadamente...pois se eu utilizar a função SUM do DataReport, eu estarei somando todos os valores do campo Con_Valor....sem separar qual o total de contas a pagar e qual o total de contas a receber...

talvez seja isso que esteja me atrapalhando

Link para o comentário
Compartilhar em outros sites

  • 0

tipo, acho q você tem q fazer o select sem o sum, com os iifs exatamente como eu mostrei no primeiro codigo, e ai você seleciona os demais campos da tabela. ai no data report, esses dois campos calculados devem aparecer normalmente e você pode fazer o sum() no proprio data report pra cada um dos dois campos separados. não seria isso??

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...