Gabriel Cabral Postado Março 3, 2008 Denunciar Share Postado Março 3, 2008 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 é estaSELECT * 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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 kuroi Postado Março 4, 2008 Denunciar Share Postado Março 4, 2008 você usa access?? se for faca com Iif assim:Select IIf(Con_Tipo = 'CP', Valor, 0) As Valor_CP, IIf(Con_Tipo = 'CR', Valor, 0) As Valor_Cr From Tabelase for SQL, em vez de IIf, use case. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Gabriel Cabral Postado Março 5, 2008 Autor Denunciar Share Postado Março 5, 2008 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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Macêdo Postado Março 5, 2008 Denunciar Share Postado Março 5, 2008 então faz uma soma para quando o campo tipo for CP e outra para quando o campo tipo for CRSelect sum(valor) as total_CP from tabela where tipo = CPSelect sum(valor) as Total_CR from tabela where tipo = CRai 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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 kuroi Postado Março 5, 2008 Denunciar Share Postado Março 5, 2008 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 Tabelamas 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ê?? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Gabriel Cabral Postado Março 5, 2008 Autor Denunciar Share Postado Março 5, 2008 Serve sim.....vou tentar aqui e daqui a pouco volto pra agradecer ou pedir mais ajudaObs.: uso Access...então o Iif dá certoSó 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 issoSELECT * 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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 kuroi Postado Março 5, 2008 Denunciar Share Postado Março 5, 2008 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. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Gabriel Cabral Postado Março 5, 2008 Autor Denunciar Share Postado Março 5, 2008 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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 kuroi Postado Março 5, 2008 Denunciar Share Postado Março 5, 2008 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?? Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Gabriel Cabral
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
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
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.