[RESOLVIDO] Impressão de E3Chart no Relatório utilizando Quadros

Saudações.

Segui o KB abaixo para realizar a impressão de um gráfico em um relatório.
Link: http://kb.elipse.com.br/pt-br/questions/4218/Impressão+de+E3Chart.

Só que obtive o seguinte problema:
Error 5800 : Scripting Error.
[ Extended Info:Scripting Error. [ Extended Info:Section : PageHeader , Event : OnBeforePrint , Line number: 4 Description:Chamada de procedimento ou argumento inválido]]

Pelo que pesquisei e testei, isto se deve ao fato de estar utilizando Quadros e não uma simples tela.
Qual caminho que devo utilizar quando utilizo quadro?

Nota: Não consigo fazer upload de imagens pois sou user novo, portanto, não consigo enviar a visualização do erro.

att,
Robson Pontin

Olá Robson,

O nome do Quadro deve ser passado como argumento no método GetFrame().
Por exemplo:

Chart.CopyConfig(Application.GetFrame("nomequadro").Screen.Item("E3Chart1"))

@Robson, complementando a resposta do Kotres, caso não seja possível identificar o nome do quadro, pode-se utilizar um comando similar ao do KB: http://kb.elipse.com.br/pt-br/questions/2011/

No evento Click de um botão na tela onde está o E3Chart, inserir o seguinte script:

Dim FrameName
FrameName = Screen.Frame.Name

MsgBox FrameName

Desta forma aparecerá o nome do Quadro no MsgBox. Este nome será inserido no campo “nomequadro” do script citado acima.

Certo! Funcionou!

Neste caso o script que usei para encontrar o nome/caminho do quadro foi:

Sub CommandButton2_Click()
DIM frameName
frameName = Screen.Frame.Name
MsgBox frameName
End Sub

e retornou o nome do quadro: Inferior

Acrescentei no script do relatório as seguintes declarações:

Sub OnBeforePrint

Set Chart = Report.Sections(“PageHeader”).Controls(“E3Chart1”)
Chart.CopyConfig(Application.GetFrame(“Inferior”).Screen.Item(“E3Chart1”))
Chart.LoadData()

End Sub

Obrigado pela breve ajuda!
Abs

No meu caso retorna o Seguinte erro.
Error 5800 : Scripting Error.
[ Extended Info:Scripting Error. [ Extended Info:Section : PageHeader , Event : OnBeforePrint , Line number: 1 Description:Objeto necessário: ‘Application’]]

e o script é esse:

set ChartTela = Application.GetFrame("Divisor1").Screen.Item("E3Chart1")
set chartfrom = Report.Sections("PageHeader").Controls("E3ChartREL")
chart.CopyConfig(ChartTela)
chart.LoadData()
chart.FitAll

Já pensei que fosse o caminho do objeto na tela, mas não deu certo

Olá @Alex_Aquino,

Observe que no script você criou uma variável chamada “chartfrom”, mas tentou chamá-la usando o nome “chart” nas linhas abaixo.
O script correto é:

set ChartTela = Application.GetFrame(“Divisor1”).Screen.Item(“E3Chart1”)
set chart = Report.Sections(“PageHeader”).Controls(“E3ChartREL”)
chart.CopyConfig(ChartTela)
chart.LoadData()
chart.FitAll

1 Curtida

:cry: continua [ Extended Info:Scripting Error. [ Extended Info:Section : PageHeader , Event : OnBeforePrint , Line number: 1 Description:Objeto necessário: ‘Application’]]

Fiz o script pra identificar o quadro, estava correto. e agora retirei o quadro não estou mais chamando as telas dentro dele. Só tenho duas telas na aplicação.

set ChartTela = Application.GetFrame().Screen.Item(“E3Chart1”)
set chart = Report.Sections(“PageHeader”).Controls(“E3ChartREL”)
chart.CopyConfig(ChartTela)
chart.LoadData()
chart.FitAll

Olá @Alex_Aquino,

Você pode verificar também se inseriu o objeto E3Chart na seção PageHeader do relatório, e ainda se o nome dos objetos é “E3Chart1” e “E3ChartREL”.
Se ainda não estiver conseguindo imprimir, envie sua aplicação para o email kotres@elipse.com.br. Vou dar uma olhada e te respondo.

Abraços!

Encontrei o problema, pelo menos eu acho. A copia estava sendo realizada a aprtir de uma tela modal. Quando eu mudei pra uma tela comum funcionou.

No meu caso, o erro é esse… Já tentei de tudo e não consigo imprimir o gráfico

Error 5800 : Scripting Error.
[ Extended Info:Scripting Error. [ Extended Info:Section : PageHeader , Event : OnBeforePrint , Line number: 2 Description:O objeto não dá suporte para a propriedade ou método: ‘Application.GetFrame’]]

Oi @Wendhel,

Verifique se o nome do divisor do script é o mesmo do divisor do quadro que está o E3Chart.

Obs:. Letras maiúsculas e minúsculas fazem diferença.

Qualquer dúvida, estou à disposição.

Atenciosamente,
Lucas Angelo

1 Curtida

Consegui. Muito brigado.

Estou com Um problema parecido, mas não resolve, acho que deve ser pelo motivo que tenho muitas subdivisões no quadro. e no fim tenho 2 quadros com o mesmo nome, segue a imagem abaixo

o e3chart que eu tenho esta no quadro da divisão ComAlarme.Inferior.Area_Central

@Raphael_pecontrol, boa tarde.

Neste caso, sugiro colocar nomes distintos para cada Divisão.

Sds.

No quadro sem alarme, eu alterei o nome da Area_Central, para Area_Central2, para que dessa maneira não tivesse problema e mantive o script da foto mostrado acima, e mesmo assim não deu certo

Tentou este procedimento?

Sds.

1 Curtida

Resolvido, o erro foi no entendimento do script…
Set Chart = Report.Sections(“PageHeader”).Controls(“E3Chart1”) Nessa linha o E3chart1 se refere ao E3chart criado dentro do relatório
Set ChartTela = Application.GetFrame(“Area_Central”).Screen.Item(“E3Chart2”) nessa linha o E3chart criado dentro da tela na Area_Central, que no meu caso é o E3chart2, quando fiz essa alteração, o código funcionou, Obrigado

Entendido. Obrigado pelo feedback! :v:

1 Curtida