Calcular determinado valor no gráfico

Criei a tag interna e criei o script pra guardar o valor, testei na tela num display e funcionou. Mas coloquei o script no botão que manda imprimir a tabela e deu erro na linha 6 dizendo que o item não pode ser encontrado na coleção correspondente ao nome ou ao ordinal solicitado.
Segue o scrpit que coloquei no botão que manda imprimir o relatório:
Set Report = Application.LoadReport(“RelatorioTabelaEst01”)
set Consulta = Report.Item(“Consulta1”)
Consulta.SetVariableValue “Batelada”, CStr(Screen.Item(“E3Browser1”).GetColumnValue(0))
set rs = consulta.GetADORecordset()
MsgBox rs.Fields(“Diferença”)
Application.GetObject(“Dados.Diferenca”).Value = rs.Fields(“Diferença”).Value
Report.PrintPreview

Você está confundindo a Consulta do Relatório com a Consulta da Tela. Acho que o correto seria assim:

Set Report = Application.LoadReport("RelatorioTabelaEst01")
set Consulta = Report.Item("Consulta1")
Consulta.SetVariableValue "Batelada", CStr(Screen.Item("E3Browser1").GetColumnValue(0))
set Consulta = Screen.Item("Nome da Consulta")
Consulta.SetVariableValue "Batelada", CStr(Screen.Item("E3Browser1").GetColumnValue(0))
set rs = Consulta.GetADORecordset()
MsgBox rs.Fields("Diferença")
Application.GetObject("Dados.Diferenca").Value = rs.Fields("Diferença").Value
Report.PrintPreview

Verdade, parou de dar erro agora, mas ainda não aparece o valor na tabela. O campo no relatório está certo com a tag correta e ela está recebendo o valor.

Quando manda imprimir o Relatório, o que aparece no campo?

Aparece apenas 0:00:00

Como você configurou o campo do Relatório para um formato de Hora, terá que converter o valor para a base de tempo do E3. Basta dividir o valor do Tag por 24x60 para obter os minutos. Pode fazer isso na propriedade DataField mesmo.

Dados.Diferenca.Value/(24*60)

Funcionou perfeitamente, muito obrigado pela ajuda.

1 Like