Descrição:
Para que o E3chart seja usado em relatórios os seus dados têm que ser carregados antes do momento da visualização.
Para isso, o método LoadData é usado fazendo com que os dados sejam carregados de forma síncrona.
Por exemplo:
Sub OnBeforePrint
Set Relatorio = Report.Sections("PageHeader")
Set Chart = Relatorio.Controls("E3Chart1")
Set Consulta = Chart.Queries.Item(0)
Set Campo = Relatorio.Controls("Field1")
Consulta.SetVariableValue "Var", Application.GetObject("Dados.Variavel").Value
Chart.LoadData()
Chart.FitAll()
End Sub
Solução:
No entando, para que o LoadData funcione de forma síncrona é preciso que a pena não seja automática.
E este é um erro comum entre os usuários.
Para resolver o problema pode-se mudar a configuração da pena na aba de edição de penas do E3chart, desmarcando a opção "Usar consulta automática".
Ou pode-se trocar esta propriedade por script:
...
Set Chart = Relatorio.Controls("E3Chart1")
Set Consulta = Chart.Queries.Item(0)
Set Campo = Relatorio.Controls("Field1")
Chart.Pens.Item("Pena1").AutoQuery = false
Consulta.SetVariableValue "Var", Application.GetObject("Dados.Variavel").Value Chart.LoadData()
Chart.FitAll()
...