KB-63563: Exportando um relatório gráfico sem que o E3Chart esteja sendo visualizado na tela.

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.

Anexos:

GraphExport.rar

Print Friendly, PDF & Email

Este artigo foi útil? Was this helpful?

Classificação média - Average rating 0 / 5. Count: 0

Comentários em “KB-63563: Exportando um relatório gráfico sem que o E3Chart esteja sendo visualizado na tela.

  1. 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.

    1. 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

  2. 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.

Deixe seu Comentário

Seu endereço de e-mail não será publicado. Campos marcados com asterisco são obrigatórios *