Resolvido
1 votos
Em alguns relatórios gostaríamos de comparar um valor atual com um valor do passado, exemplo:

Vendas por Filial no 'Mês Anterior' contra as do 'Mês Retrasado' ou ainda do 'Mês do Ano Anterior'

Porém estou com dificuldades em criar os campos no Gerador de Relatórios.

Pelo Excel, para o 'Mês Anterior' cheguei as fórmulas:

CAMPOS DATA FÓRMULA
DATA BASE 01/01/2016 =HOJE()
DATA INICIAL 01/12/2015 =DATA_FINAL-DIA(DATA_FINAL)+1
DATA FINAL 31/12/2015 =DATA_BASE-DIA(DATA_BASE)

Tentando passar para o gerador, na dimensão de Vendas criei os campos com as fórmulas:

DATA_BASE
DATE()


DATA_FINAL
rpt.DATA_BASE-(DAY(rpt.DATA_BASE))


DATA_INICIAL
rpt.DATA_FINAL-DAY(rpt.DATA_FINAL)+1


VENDAS_MES_ANTERIOR
sum(Vendas.receita_bruta) 
{f:
data.DATA.DATA>= rpt.DATA_INICIAL
and
data.DATA.DATA<= rpt.DATA_FINAL
}


Mas está retornando erro: Índice da lista fora de faixa (0)

Alguma sugestão de onde estou errando?
Postado em : Gerador de relatórios
Quarta, Novembro 23 2016, 12:47 PM
Compartilhar este post:
Respostas (6)
  • Aceitar Resposta

    Edson Reis
    Edson Reis
    Offline
    Quinta, Novembro 24 2016, 06:13 PM - #Link Permanente
    Resolvido
    0 votos
    Pedro, boa tarde!

    o Gerador não tem suporte, pelo menos até onde sei, para utilizar uma fórmula como filtro de data .

    Sempre que preciso usar algo parecido eu insiro dentro da formula o filtro utilizando "today"

    sum(venda.total_bruto)
    {f:venda.data.data >='today'-30 and venda.data.data<='today'}
    A resposta está atualmente minimizada Show
  • Aceitar Resposta

    Quinta, Novembro 24 2016, 06:17 PM - #Link Permanente
    Resolvido
    0 votos
    Obrigado pelo retorno, mas o problema é que nesse caso o today-30 nem sempre resulta na data inicial do mês corretamente, por isso tentei essa fórmula subtraindo o número de dias da 'data final' (para os casos de 31 e 28 dias).

    Se criar os campos pela extensibilidade seria possível de alguma forma?

    Edson Reisescreveu:

    Pedro, boa tarde!

    o Gerador não tem suporte, pelo menos até onde sei, para utilizar uma fórmula como filtro de data .

    Sempre que preciso usar algo parecido eu insiro dentro da formula o filtro utilizando "today"

    sum(venda.total_bruto)
    {f:venda.data.data >='today'-30 and venda.data.data<='today'}
    A resposta está atualmente minimizada Show
  • Aceitar Resposta

    Edson Reis
    Edson Reis
    Offline
    Quinta, Novembro 24 2016, 06:25 PM - #Link Permanente
    Resolvido
    1 votos
    Outra Maneira de fazer isto é utilizar a formula original do sistema e utilizar a ferramenta do gerador de relatório.

    O EAD de gerador de relatório Basico, mostrar como fazer o transpor ao período.

    da uma olhada no curso

    A resposta está atualmente minimizada Show
  • Aceitar Resposta

    Quinta, Novembro 24 2016, 09:32 PM - #Link Permanente
    Resolvido
    0 votos
    Olá Pedro boa noite,

    Eu fiz em teste e consegui atuar com o mês anterior da seguinte forma:

    1 - Criando um atributo para o mês anterior no objeto data com o recurso de extensibilidade

    Objeto: data!ext.mdo


    <?xml version="1.0"?>
    <root>
    <dimension>
    <attributes>
    <level name="MES">
    <attribute name="mes_anterior" fieldname="(select Extract(month FROM cast('NOW' as date))-1 from dual)" subselect="1" datatype="3" caption="Mês Anterior" cangroup="1" degenerate="1"/>
    </level>
    </attributes>
    </dimension>
    </root>


    Imagem: http://prntscr.com/dbfs89

    2 - Criando uma formula no gerador para atuar com o novo atributo no objeto extendido

    Imagem do novo atributo: http://prntscr.com/dbfu1c

    Utilização do novo atributo:

    sum(venda.quantidade)  {f: #null_to_s(venda.BRINDESITE,'F')='F'  and venda.data.MES.MES = b]data.MES.mes_anterior[/b]}   


    Imagen: http://prntscr.com/dbfsi6

    Para testar:

    A - Salve o arquivo "data!ext.mdo" em "C:\wts\mdmeta"
    B - Importe o relatório em anexo "TESTE_DIARIAS_MES_ANTERIOR.mdr" ou crie um formula de semelhante filtro conforme o destaque no item 2

    Espero que esta dica tenha sido útil
    A resposta está atualmente minimizada Show
  • Aceitar Resposta

    Sábado, Novembro 26 2016, 03:01 PM - #Link Permanente
    Resolvido
    1 votos
    Edson Vidalescreveu:

    Olá Pedro boa noite,

    Eu fiz em teste e consegui atuar com o mês anterior da seguinte forma:

    1 - Criando um atributo para o mês anterior no objeto data com o recurso de extensibilidade

    Objeto: data!ext.mdo


    <?xml version="1.0"?>
    <root>
    <dimension>
    <attributes>
    <level name="MES">
    <attribute name="mes_anterior" fieldname="(select Extract(month FROM cast('NOW' as date))-1 from dual)" subselect="1" datatype="3" caption="Mês Anterior" cangroup="1" degenerate="1"/>
    </level>
    </attributes>
    </dimension>
    </root>


    Imagem: http://prntscr.com/dbfs89

    2 - Criando uma formula no gerador para atuar com o novo atributo no objeto extendido

    Imagem do novo atributo: http://prntscr.com/dbfu1c

    Utilização do novo atributo:

    sum(venda.quantidade)  {f: #null_to_s(venda.BRINDESITE,'F')='F'  and venda.data.MES.MES =data.MES.mes_anterior}   


    Imagen: http://prntscr.com/dbfsi6

    Para testar:

    A - Salve o arquivo "data!ext.mdo" em "C:\wts\mdmeta"
    B - Importe o relatório em anexo "TESTE_DIARIAS_MES_ANTERIOR.mdr" ou crie um formula de semelhante filtro conforme o destaque no item 2

    Espero que esta dica tenha sido útil
    A resposta está atualmente minimizada Show
  • Aceitar Resposta

    Segunda, Novembro 28 2016, 12:38 PM - #Link Permanente
    Resolvido
    0 votos
    Obrigado pelas respostas, a solução do Transpor ao Período é bem simples e está funcionando bem aparentemente.

    Porém pensando em relatório agendado recorrente mensal, imagino que ao final eu teria de usar filtro de Data = 'Este mês' com agendamento para todo dia 1 e oculto os dados da coluna referente ao 'Este mês' e mostro só a transposta do 'Mês anterior' porém sem a possibilidade de comparar com outros períodos (Mês retrasado por exemplo).

    Já quando tentei aplicar a solução da Extensibilidade que possivelmente contornaria a limitação do número de meses a comparar, não estou conseguindo retornar resultado nenhum.

    A fórmula abaixo não deveria bastar para filtrar?

    sum(Vendas.Quantidade){f:venda.data.MES.MES = data.MES.mes_anterior}


    https://www.dropbox.com/s/crrgp152kchdsnj/captura%20de%20tela%202016-11-28%2012.20.23.png?dl=0

    https://www.dropbox.com/s/aoqcgpebxuw6ihg/captura%20de%20tela%202016-11-28%2012.32.36.png?dl=0

    Anexo o relatório + mdo
    A resposta está atualmente minimizada Show
Sua Resposta

Copyright © 2016 Millennium Info™ - Todos os direitos reservados - Desenvolvido por TOTALLnet