Muitas vezes, é preciso que um relatório gráfico seja exportado automaticamente, sem a intervenção do operador. Para isto, é necessário configurar o objeto Chart do relatório para que os dados sejam trazidos corretamente, já que o método CopyConfig do E3Chart não será utilizado.
Para isto, siga estes procedimentos:
1. Crie um Relatório e insira um E3Chart em sua sessão PageHeader.
2. Depois, acesse as propriedades do E3Chart criado e configure a Consulta que será utilizada pelas penas históricas. Caso seja necessário filtrar a Consulta, ela deve ser configurada neste momento.
NOTA: Assegure-se de que está configurando a Consulta do E3Chart, e não a do relatório.
3. Feita a Consulta, deve-se criar e configurar penas históricas para cada um dos campos selecionados.
4. Por fim, configure a escala do eixo horizontal para que seja mostrado um intervalo de tempo histórico a ser definido dentro da aplicação.
5. Concluída a configuração do Chart, abra o editor de scripts, selecione o objeto PageHeader e o evento OnBeforePrint. Neste evento, configure o filtro da Consulta do E3Chart inserido anteriormente, execute esta consulta, carregue o resultado e organize-o na tela.
Exemplo:
Sub OnBeforePrint Set Chart = Report.Sections("PageHeader").Controls("E3Chart1") 'Armazena o caminho do E3Chart na tela na variável Chart Set Consulta = Chart.Queries.Item("Consulta1") 'Armazena o caminho da consulta do E3Chart na variável Consulta Consulta.SetVariableValue "DataInicial", Application.GetObject("Dados.DataIni").Value 'Define o valor da variável DataInicial do filtro Consulta.SetVariableValue "DataFinal", Application.GetObject("Dados.DataFim").Value 'Define o valor da variável DataFinal do filtro Consulta.Execute() 'Executa a consulta com o filtro Chart.LoadData() 'Carrega o resultado da consulta dentro do Chart Chart.FitAll() 'Organiza para que nenhum dado fique fora dos eixos Chart.HorScaleBegin = Application.GetObject("Dados.DataIni").Value 'Define a data inicial do eixo horizontal Chart.HorScaleEnd = Application.GetObject("Dados.DataFim").Value 'Define a data final do eixo horizontal End Sub
6. Finalmente, crie um tag Timer cujas funções sejam preencher os valores de data inicial e final e executar o comando Export do Relatório.
Sub Export_OnPreset() Parent.Item("DataIni").Value = now-1/24/60 'Horário atual menos um minuto Parent.Item("DataFim").Value = now 'Horário atual Set report = Application.LoadReport("[Relatório1]") Report.Export "PDF", "C:\GraphReport.pdf" End Sub
NOTA: Anexo a este artigo está uma aplicação exemplo desenvolvida com o Elipse E3 versão 4.5 build 238.
Bom dia! Consigo printar esse gráfico na seção GroupFooter1 do relatório? O gráfico é para controle de OEE e separei por equipamento no relatório, cada Grupo do relatório preciso que seja visualizado o gráfico daquele grupo.
Atte.
Tem que criar mais uma variável para filtrar a Consulta do E3Chart pelo mesmo campo que está sendo usado para agrupar os dados no Relatório. Para acessar o valor desse campo no script do Relatório, pode-se usar a propriedade “text” do objeto que está associado a ele. Por exemplo:
Consulta.SetVariableValue “Equipamento”, Report.Sections(“GroupHeader1”).Controls(“Field2”).text
Estou tentando ferar o relatória a partir de um TAG TIMER, mas meu relatório está em uma subpasta
PASTA.RELATORIO, e o comando Set report = Application.LoadReport(“PASTA.RELATORIO”) não funciona, como devo proceder neste caso?
Se usar este comando em um botão, então o mesmo funciona.
Conforme apurado no Forum, o problema não estava relacionado à configuração do Relatório e sim à permissão do usuário (SYSTEM) no Windows. Mais detalhes no link abaixo.
https://forum.elipse.com.br/t/application-loadreport-em-tag-timer/4959