Relatorio gera valores diferentes a cada execução...

Dicas e truques sobre Oracle Reports Builder - modo gráfico ou modo caractere, ascii, arquivo .PRT, etc
Responder
alyssonhm
Rank: Estagiário Sênior
Rank: Estagiário Sênior
Mensagens: 10
Registrado em: Qua, 02 Set 2009 1:33 pm
Localização: Maringá-Pr
Alysson Morandi

Boa tarde pessoal...
Dei uma pesquisada no fórum e não consegui achar nada relacionado a minha duvida...
Aqui na empresa, quando executamos no sistema certos relatórios notamos que as vezes os valores de algumas colunas saem diferentes do resultado anteriormente apresentado.
Ex: Gerando a 1ª vez sai o valor total de 450 e, fechando e gerando novamente o valor que é apresentado na mesma coluna é 480.
Essas colunas não sofrem alterações e o periodo gerado é o mesmo.
Rodando a query do relatorio no sqldeveloper o problema não aparece.
Notamos isto em relatorio que tem a seguinte sintaxe...

Selecionar tudo

 select sum(x), y, z from (select x, y, z from tab1) group by ...;
alguém já viu problema parecido e conseguiu resolver este caso?
Desde já agradeço.
Se ajudar, utilizamos o Oracle 11g com o reports 6i.
SergioLBJr
Rank: Oracle Guru
Rank: Oracle Guru
Mensagens: 448
Registrado em: Ter, 16 Jun 2009 3:07 pm
Localização: Parobé - RS
Sérgio Luiz Bonemberger Junior
Programador Junior
Parobé RS

[]s

Cara, posta um pouco mais de informação sobre o problema. Relatóio gerando valores diferentes a cada execução pode ser gerado por muitas coisas.

Posta a query aí.

Os campos tem formula?

O relatório é chamado de um forms? Se sim, o forms popula alguma estrutura ?

já executou a consulta do relatório no mesmo momento em que ele esta na tela pra ver se os valores batem ?
alyssonhm
Rank: Estagiário Sênior
Rank: Estagiário Sênior
Mensagens: 10
Registrado em: Qua, 02 Set 2009 1:33 pm
Localização: Maringá-Pr
Alysson Morandi

Então Sergio o relatorio é chamado pelo forms sim, onde é preenchido alguns parametros.
Segue query:

Selecionar tudo

SELECT grupo1,grupo2,cd_produto,
       DECODE(SUM(qt_semana_01),0,0,SUM(val_semana_01)/SUM(qt_semana_01)) pm_semana_01,
       DECODE(SUM(qt_semana_02),0,0,SUM(val_semana_02)/SUM(qt_semana_02)) pm_semana_02,
       DECODE(SUM(qt_semana_03),0,0,SUM(val_semana_03)/SUM(qt_semana_03)) pm_semana_03,
       DECODE(SUM(qt_semana_04),0,0,SUM(val_semana_04)/SUM(qt_semana_04)) pm_semana_04,
       DECODE(SUM(qt_semana_05),0,0,SUM(val_semana_05)/SUM(qt_semana_05)) pm_semana_05,
       SUM(val_semana_01) val_semana_01,
       SUM(val_semana_02) val_semana_02,
       SUM(val_semana_03) val_semana_03,
       SUM(val_semana_04) val_semana_04,
       SUM(val_semana_05) val_semana_05,
       SUM(qt_semana_01)  qt_semana_01,
       SUM(qt_semana_02) qt_semana_02,
       SUM(qt_semana_03) qt_semana_03,
       SUM(qt_semana_04) qt_semana_04,
       SUM(qt_semana_05) qt_semana_05,
       DECODE(grupo1,1,'PRODUTOS ACABADOS - MI',4,'GRAXARIA ME',3,'GRAXARIA MI',2,'PRODUTOS ACABADOS - ME') ds_grupo1,
       DECODE(grupo1,3,0,decode(grupo1,4,0,DECODE(SUM(qt_semana_01),0,0,SUM(val_semana_01)/SUM(qt_semana_01)))) pm_semana_sub_01,
       DECODE(grupo1,3,0,decode(grupo1,4,0,DECODE(SUM(qt_semana_02),0,0,SUM(val_semana_02)/SUM(qt_semana_02)))) pm_semana_sub_02,
       DECODE(grupo1,3,0,decode(grupo1,4,0,DECODE(SUM(qt_semana_03),0,0,SUM(val_semana_03)/SUM(qt_semana_03)))) pm_semana_sub_03,
       DECODE(grupo1,3,0,decode(grupo1,4,0,DECODE(SUM(qt_semana_04),0,0,SUM(val_semana_04)/SUM(qt_semana_04)))) pm_semana_sub_04,
       DECODE(grupo1,3,0,decode(grupo1,4,0,DECODE(SUM(qt_semana_05),0,0,SUM(val_semana_05)/SUM(qt_semana_05)))) pm_semana_sub_05,
       DECODE(grupo1,3,0,decode(grupo1,4,0,SUM(val_semana_01))) val_semana_sub_01,
       DECODE(grupo1,3,0,decode(grupo1,4,0,SUM(val_semana_02))) val_semana_sub_02,
       DECODE(grupo1,3,0,decode(grupo1,4,0,SUM(val_semana_03))) val_semana_sub_03,
       DECODE(grupo1,3,0,decode(grupo1,4,0,SUM(val_semana_04))) val_semana_sub_04,
       DECODE(grupo1,3,0,decode(grupo1,4,0,SUM(val_semana_05))) val_semana_sub_05,
       DECODE(grupo1,3,0,decode(grupo1,4,0,SUM(qt_semana_01)))  qt_semana_sub_01,
       DECODE(grupo1,3,0,decode(grupo1,4,0,SUM(qt_semana_02))) qt_semana_sub_02,
       DECODE(grupo1,3,0,decode(grupo1,4,0,SUM(qt_semana_03))) qt_semana_sub_03,
       DECODE(grupo1,3,0,decode(grupo1,4,0,SUM(qt_semana_04))) qt_semana_sub_04,
       DECODE(grupo1,3,0,decode(grupo1,4,0,SUM(qt_semana_05))) qt_semana_sub_05,
       /************************************************************/
       DECODE(grupo1,1,0,decode(grupo1,2,0,DECODE(SUM(qt_semana_01),0,0,SUM(val_semana_01)/SUM(qt_semana_01)))) pm_semana_GRAX_01,
       DECODE(grupo1,1,0,decode(grupo1,2,0,DECODE(SUM(qt_semana_02),0,0,SUM(val_semana_02)/SUM(qt_semana_02)))) pm_semana_GRAX_02,
       DECODE(grupo1,1,0,decode(grupo1,2,0,DECODE(SUM(qt_semana_03),0,0,SUM(val_semana_03)/SUM(qt_semana_03)))) pm_semana_GRAX_03,
       DECODE(grupo1,1,0,decode(grupo1,2,0,DECODE(SUM(qt_semana_04),0,0,SUM(val_semana_04)/SUM(qt_semana_04)))) pm_semana_GRAX_04,
       DECODE(grupo1,1,0,decode(grupo1,2,0,DECODE(SUM(qt_semana_05),0,0,SUM(val_semana_05)/SUM(qt_semana_05)))) pm_semana_GRAX_05,
       DECODE(grupo1,1,0,decode(grupo1,2,0,SUM(val_semana_01))) val_semana_GRAX_01,
       DECODE(grupo1,1,0,decode(grupo1,2,0,SUM(val_semana_02))) val_semana_GRAX_02,
       DECODE(grupo1,1,0,decode(grupo1,2,0,SUM(val_semana_03))) val_semana_GRAX_03,
       DECODE(grupo1,1,0,decode(grupo1,2,0,SUM(val_semana_04))) val_semana_GRAX_04,
       DECODE(grupo1,1,0,decode(grupo1,2,0,SUM(val_semana_05))) val_semana_GRAX_05,
       DECODE(grupo1,1,0,decode(grupo1,2,0,SUM(qt_semana_01)))  qt_semana_GRAX_01,
       DECODE(grupo1,1,0,decode(grupo1,2,0,SUM(qt_semana_02))) qt_semana_GRAX_02,
       DECODE(grupo1,1,0,decode(grupo1,2,0,SUM(qt_semana_03))) qt_semana_GRAX_03,
       DECODE(grupo1,1,0,decode(grupo1,2,0,SUM(qt_semana_04))) qt_semana_GRAX_04,
       DECODE(grupo1,1,0,decode(grupo1,2,0,SUM(qt_semana_05))) qt_semana_GRAX_05
    /**********************************************************/
FROM(
SELECT --------------------------------------------------------------------------------------------------------------
       ----------GRUPO 1 - TIPO DO PRODUTO
       --------------------------------------------------------------------------------------------------------------
       DECODE(d.venda_exportacao_sn,'S',DECODE(graxaria_sn,'S',4,2),DECODE(graxaria_sn,'S',3,1)) grupo1,
       --DECODE(g.tipo_mercado,'E',2,'I',DECODE(graxaria_sn,'S',3,1)) grupo1,
       --------------------------------------------------------------------------------------------------------------
       ----------GRUPO 2 - GRUPO DO PRODUTO
       --------------------------------------------------------------------------------------------------------------
       g.cd_grupo grupo2,
       --------------------------------------------------------------------------------------------------------------
       ----------PRODUTO
       --------------------------------------------------------------------------------------------------------------
		   g.cd_produto,
			 --------------------------------------------------------------------------------------------------------------
			 ----------SEMANA 01
			 --------------------------------------------------------------------------------------------------------------
			 CASE WHEN TRUNC(b.dh_emissao) BETWEEN :data_inicio_semana_01 AND :data_fim_semana_01 THEN SUM(DECODE(d.tp_fatur,'S',c.vl_liquido,'E',-c.vl_liquido,0)
-(:frete_10*qt_produto*DECODE(NVL(i.cd_frete_nacional,b.tp_frete),'C',DECODE(b.cd_pedido,NULL,0,NVL(func_frete_cidade(e.cd_cidade,NULL,'MAX',b.cd_pedido,d.venda_deposito_sn,c.cd_produto),0)),'F',0))
)
						ELSE 0 END val_semana_01,
			 CASE WHEN TRUNC(b.dh_emissao) BETWEEN :data_inicio_semana_01 AND :data_fim_semana_01 THEN SUM(DECODE(d.tp_fatur,'S',c.qt_produto,'E',-c.qt_produto,0))
				    ELSE 0 END qt_semana_01,
			 --------------------------------------------------------------------------------------------------------------
			 ----------SEMANA 02
			 --------------------------------------------------------------------------------------------------------------
			 CASE WHEN TRUNC(b.dh_emissao) BETWEEN :data_inicio_semana_02 AND :data_fim_semana_02 THEN SUM(DECODE(d.tp_fatur,'S',c.vl_liquido,'E',-c.vl_liquido,0)
-(:frete_10*qt_produto*DECODE(NVL(i.cd_frete_nacional,b.tp_frete),'C',DECODE(b.cd_pedido,NULL,0,NVL(func_frete_cidade(e.cd_cidade,NULL,'MAX',b.cd_pedido,d.venda_deposito_sn,c.cd_produto),0)),'F',0))
)
						ELSE 0 END val_semana_02,
			 CASE WHEN TRUNC(b.dh_emissao) BETWEEN :data_inicio_semana_02 AND :data_fim_semana_02 THEN SUM(DECODE(d.tp_fatur,'S',c.qt_produto,'E',-c.qt_produto,0))
				    ELSE 0 END qt_semana_02,
			 --------------------------------------------------------------------------------------------------------------
			 ----------SEMANA 03
			 --------------------------------------------------------------------------------------------------------------
			 CASE WHEN TRUNC(b.dh_emissao) BETWEEN :data_inicio_semana_03 AND :data_fim_semana_03 THEN SUM(DECODE(d.tp_fatur,'S',c.vl_liquido,'E',-c.vl_liquido,0)
-(:frete_10*qt_produto*DECODE(NVL(i.cd_frete_nacional,b.tp_frete),'C',DECODE(b.cd_pedido,NULL,0,NVL(func_frete_cidade(e.cd_cidade,NULL,'MAX',b.cd_pedido,d.venda_deposito_sn,c.cd_produto),0)),'F',0))
)
						ELSE 0 END val_semana_03,
			 CASE WHEN TRUNC(b.dh_emissao) BETWEEN :data_inicio_semana_03 AND :data_fim_semana_03 THEN SUM(DECODE(d.tp_fatur,'S',c.qt_produto,'E',-c.qt_produto,0))
				    ELSE 0 END qt_semana_03,
			 --------------------------------------------------------------------------------------------------------------
			 ----------SEMANA 04
			 --------------------------------------------------------------------------------------------------------------
			 CASE WHEN TRUNC(b.dh_emissao) BETWEEN :data_inicio_semana_04 AND :data_fim_semana_04 THEN SUM(DECODE(d.tp_fatur,'S',c.vl_liquido,'E',-c.vl_liquido,0)
-(:frete_10*qt_produto*DECODE(NVL(i.cd_frete_nacional,b.tp_frete),'C',DECODE(b.cd_pedido,NULL,0,NVL(func_frete_cidade(e.cd_cidade,NULL,'MAX',b.cd_pedido,d.venda_deposito_sn,c.cd_produto),0)),'F',0))
)
						ELSE 0 END val_semana_04,
			 CASE WHEN TRUNC(b.dh_emissao) BETWEEN :data_inicio_semana_04 AND :data_fim_semana_04 THEN SUM(DECODE(d.tp_fatur,'S',c.qt_produto,'E',-c.qt_produto,0))
				    ELSE 0 END qt_semana_04,
			 --------------------------------------------------------------------------------------------------------------
			 ----------SEMANA 05
			 --------------------------------------------------------------------------------------------------------------
			 CASE WHEN TRUNC(b.dh_emissao) BETWEEN :data_inicio_semana_05 AND :data_fim_semana_05 THEN SUM(DECODE(d.tp_fatur,'S',c.vl_liquido,'E',-c.vl_liquido,0)
-(:frete_10*qt_produto*DECODE(NVL(i.cd_frete_nacional,b.tp_frete),'C',DECODE(b.cd_pedido,NULL,0,NVL(func_frete_cidade(e.cd_cidade,NULL,'MAX',b.cd_pedido,d.venda_deposito_sn,c.cd_produto),0)),'F',0))
)
						ELSE 0 END val_semana_05,
			 CASE WHEN TRUNC(b.dh_emissao) BETWEEN :data_inicio_semana_05 AND :data_fim_semana_05 THEN SUM(DECODE(d.tp_fatur,'S',c.qt_produto,'E',-c.qt_produto,0))
				    ELSE 0 END qt_semana_05
FROM   frete i,pedido h,produto g,/*regiao_cidade f,*/emitente e,item_nf_comercial c,nf_comercial b,tp_faturamento d
WHERE  TRUNC(b.dh_emissao)        BETWEEN  :data_inicio AND :data_fim
AND    b.bo_cancelada = 'N'
AND    b.nr_nota_fiscal NOT LIKE '%*%'
AND    c.nr_nf_lancamento = b.nr_nf_lancamento
AND    d.cd_tpfatur       = b.cd_tpfatur
AND    e.cd_emite      = b.cd_emite_nota
--AND    f.cd_cidade(+)      = e.cd_cidade
AND    c.cd_produto       = g.cd_produto
AND    b.cd_pedido = h.nr_reg(+)
AND    h.bo_cif_fob = i.cd_frete(+)
AND    EXISTS (SELECT 1
                          FROM    grupo
                          WHERE   cd_grupo      =  g.cd_grupo
                          START   WITH cd_grupo IN ('00000060','00000061')
                          CONNECT BY   PRIOR cd_grupo = cd_grp_pai)
&filtro
GROUP  BY TRUNC(b.dh_emissao),g.cd_produto,
                     --DECODE(g.tipo_mercado,'E',2,'I',DECODE(graxaria_sn,'S',3,1)),g.cd_grupo)
                     DECODE(d.venda_exportacao_sn,'S',DECODE(graxaria_sn,'S',4,2),DECODE(graxaria_sn,'S',3,1)) ,g.cd_grupo)
GROUP BY grupo1,grupo2,cd_produto
SergioLBJr
Rank: Oracle Guru
Rank: Oracle Guru
Mensagens: 448
Registrado em: Ter, 16 Jun 2009 3:07 pm
Localização: Parobé - RS
Sérgio Luiz Bonemberger Junior
Programador Junior
Parobé RS

[]s

Quais campos estão mudando de valor??

O que existe em &filtro??
alyssonhm
Rank: Estagiário Sênior
Rank: Estagiário Sênior
Mensagens: 10
Registrado em: Qua, 02 Set 2009 1:33 pm
Localização: Maringá-Pr
Alysson Morandi

Boa noite Sergio.
Desculpe a demora ao responder, tive pequenos problemas na internet em casa e esta viajando a trabalho.
Então, fizemos uma analise no banco de dados e descobrimos um provavel bug no Oracle 11G, onde gera problemas em clausulas group by.
Passamos ao DBA responsavel que estará analisando mais a fundo o problema. Ainda faremos um downgrade do banco em uma máquina para testes simultaneos.
Tendo novidades colocarei no forum.
Abraços e agradeço a ajuda.
Fui
SergioLBJr
Rank: Oracle Guru
Rank: Oracle Guru
Mensagens: 448
Registrado em: Ter, 16 Jun 2009 3:07 pm
Localização: Parobé - RS
Sérgio Luiz Bonemberger Junior
Programador Junior
Parobé RS

[]s

O que eu sei é que o a partir de alguma versão do banco oracle (não lembro exatamente qual) ele para de ordenar os resultados das querys pelo group by, sendo que você teria de incluir a clausula order by para isso.

Mas claro, que isso é só um chute as cegas ...
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante