Jump to content
karlaroberta

Agrupamento - Crystal Reports

Recommended Posts

Bom dia. Pessoal, estou criando um relatório em Crystal Reports que apresenta o total de valores movimentados por conta. No cadastro das contas, tenho um campo que determina se aquela conta é de Receita ou Despesa. sendo assim criei um agrupamento  por tipo (Receita/Despesa) e outro por codigo de conta, no entanto, há contas que não possuem movimentação no período de geração do relatório, mas preciso apresentar estas contas com valor zerado.

Criei uma view para unificar os documentos de receita e despesa que são de origens diferentes e vinculei à tabela de contas e deixei esta de contas como principal(Junção externa esquerda)

Criei uma formula abaixo e outra formula com  a mesma  verificação por tipo, e coloquei no cabeçalho de cada respectivo grupo, mas ainda assim não apresenta as contas sem valor movimentado. Teriam alguma sugestão?

 

if  isnull(SUM({VW_PAGRAT_RECRAT.VALOR},{PAGCLA.CODCLAP}))  then
FORMULA=0 else
   FORMULA= sum({VW_PAGRAT_RECRAT.VALOR},{PAGCLA.CODCLAP})
END IF

Share this post


Link to post
Share on other sites

Consegui aqui , estranho , basicamente é uma solução para criar valores zerados.

 

Mas depende , sendo Crystal , de sua base de dados.

 

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By ViniciusHSAraujo
      Bom dia pessoal,
       
      Sou iniciante na área de desenvolvimento e estou fazendo um sistema para o comércio do meu pai para aprimorar meus conhecimentos em PHP e em lógica de programação no geral.
       
      O sistema já está quase pronto, só falta uns relatórios que estou gerando e estou com dificuldade em um:
       
      Quero gerar uma listagem com os últimos lançamentos agrupados pela data, tipo assim:
       

       
      No MySQL fiz o seguinte select:
      SELECT DATE_FORMAT(p.pontuacao_data, '%d/%m/%Y') AS dia, DATE_FORMAT(p.pontuacao_data, '%H:%i') AS horario, u.usuario_nome AS nome, p.usuario_telefone AS telefone, p.pontuacao_valor AS pontuacao_inserida FROM pontuacao p, usuario u WHERE u.usuario_telefone = p.usuario_telefone AND p.pontuacao_valor <> 0 ORDER BY pontuacao_data DESC Ele me retorna todas as informações que preciso, porém não faço ideia (e não soube explicar o google para fazer uma pesquisa que trouxesse o que preciso) como fazer para aparecer a data só no primeiro registro com tal data. 
       
      Como está atualmente:
      <table class="table table-bordered table-striped table-vcenter js-dataTable-full" id="historico_lancamentos"> <thead> <tr> <th class="text-center d-none d-sm-table-cell">Dia</th> <th class="text-center d-none d-sm-table-cell">Horario</th> <th class="text-center d-none d-sm-table-cell">Nome do CLiente</th> <th class="text-center d-none d-sm-table-cell">Telefone</th> <th class="text-center d-none d-sm-table-cell">Pontuação Inserida</th> </tr> </thead> <tbody> <?php foreach ($lancamentos as $lancamento) { ?> <tr role="row" class="odd"> <td class="text-center"><?=$lancamento['dia']?></td> <td class="text-center"><?=$lancamento['horario']?></td> <td class="text-center"><?=$lancamento['nome']?></td> <td class="text-center"><?=$lancamento['telefone']?></td> <td class="text-center"><?=$lancamento['pontuacao_inserida']?></td> </tr> <?php } ?> </tbody> </table>  
      Tô usando o plugin DataTables (https://datatables.net/) caso ajude em alguma coisa..
       
      Alguém poderia me dar uma ajuda aí? Agradeço desde já e espero que tenha conseguido explicar rsrs..
    • By pzt
      Olá, galera. 
       
      Sou iniciante no php, tenho uma dúvida. Veja se podem me ajudar, por favor!
       
      ( [cd_produto] => 1 [ds_produto] => SAPATENIS PEGADA [ds_longa] => SAPATENIS PEGADA MARINHO 170502G2 [cd_marca] => 70 [cd_cor] => 22 [cd_tamanho] => 25 [peso_liquido] => 0.700000 [peso_bruto] => 0.700000 [altura] => 12.000000 [largura] => 21.000000 [profundidade] => 32.000000 [cubagem] => 0.00810000 [vl_venda] => 140.90 [qt_estoque] => 1.00 [ds_categoria] => SAPATENIS [ds_cor] => MARINHO [ds_tamanho] => 43 ) ( [cd_produto] => 1 [ds_produto] => SAPATENIS PEGADA [ds_longa] => SAPATENIS PEGADA MARINHO 170502G2 [cd_marca] => 70 [cd_cor] => 22 [cd_tamanho] => 26 [peso_liquido] => 0.700000 [peso_bruto] => 0.700000 [altura] => 12.000000 [largura] => 21.000000 [profundidade] => 32.000000 [cubagem] => 0.00810000 [vl_venda] => 140.90 [qt_estoque] => 2.00 [ds_categoria] => SAPATENIS [ds_cor] => MARINHO [ds_tamanho] => 44 ) ( [cd_produto] => 1 [ds_produto] => SAPATENIS PEGADA [ds_longa] => SAPATENIS PEGADA MARINHO 170502G2 [cd_marca] => 70 [cd_cor] => 22 [cd_tamanho] => 27 [peso_liquido] => 0.700000 [peso_bruto] => 0.700000 [altura] => 12.000000 [largura] => 21.000000 [profundidade] => 32.000000 [cubagem] => 0.00810000 [vl_venda] => 140.90 [qt_estoque] => 5.00 [ds_categoria] => SAPATENIS [ds_cor] => MARINHO [ds_tamanho] => 45 )  
      Em cada chave, a descrição é a mesma, o valor também, mas alguns itens, como qt_estoque, ds_categoria, ds_cor e ds_tamanho, são diferentes. 
       
      Eu precisaria agrupar tudo em um único array, quando a ds_longa for igual. 
       
      Segue o script: 
      $Select = new Select; $Select->FullSelect('SELECT * FROM produto LEFT OUTER JOIN produto_categoria ON produto.cd_produto = produto_categoria.cd_produto LEFT OUTER JOIN categoria ON produto_categoria.cd_categoria = categoria.cd_categoria LEFT OUTER JOIN cor ON cor.cd_cor = produto.cd_cor LEFT OUTER JOIN tamanho ON tamanho.cd_tamanho = produto.cd_tamanho'); if ($Select->getResult()): $Products = $Select->getResult(); foreach ($Products as $Product): print_r($Product); endforeach; endif;  
      O que podem me ajudar?
      Desde já, muito obrigado! 
       
       
    • By ndias
      select distinct(CampoConhecimento ) as CampoConhecimento, cc.NivelConhecimento, COUNT(DISTINCT(cc.id)) as Qtde from tabelaConhecimento cc inner join tabelaCadastro cv on cv.Id = cc.id group by cc.CampoConhecimento,cc. NivelConhecimento order by cc.CampoConhecimento asc  
      CampoConhecimento           NivelConhecimento         Qtde
      Access                                                1                                        29799
      Access                                                2                                        7951
      Access                                                3                                        2014
       
      Eu gostaria que o resutado fosse assim:
       
      CampoConhecimento          QtdeNivelConhecimento1          QtdeNivelConhecimento2          QtdeNivelConhecimento3 
      Access                                                     29799                                             7951                                               2014
       
      tem como?
    • By androide
      Boa tarde,
       
      Estou com um problema relacionado a ordenação e customização do mesmo.
      Tenho uma tabela de menus que constam as colunas id, id_parent, titulo,  ordem
      onde possuem a seguinte construção:
      CREATE TABLE `menus_subsites_itens` ( `id` int(11) NOT NULL AUTO_INCREMENT, `id_parent` int(11) DEFAULT NULL, `titulo` varchar(45) NOT NULL, `ordem` float NOT NULL DEFAULT '0' ) ENGINE=InnoDB DEFAULT CHARSET=latin1 o id_parent quando aplicado será do id do pai, a ordem recebe no momento da criação o mesmo valor do id para seguir o padrão de ordenação.
      O ordem quando modificado pode receber um float dependendo da posição que será colocado tipo entre 1 e 2 executo uma formula (1/2)+1, se quero colocar o item depois do 2 executo a formula (1/2) + 2 antes do 1 executo a formula  (1/2)
       
      Encontrei o seguinte código sobre agrupamentos na consulta:
      select * from menus_subsites_itens order by COALESCE(id_parent, id),id_parent is not null, ordem;  
      Ele funciona bem, se a ordem possui sincronismo, porém se desejo criar um novo subitem tipo id 30 com ordem 30 e quiser colocá-lo como subitem de um item do topo, a construção coalesce, não funciona adequadamente, pois coloca na parte inferior fora do subitens .
       
      Existe uma forma melhor para que consiga fazer os agrupamentos e ordenações corretamente, podendo muda-las sem tantos transtornos?
       
       
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.