Calcular determinado valor no gráfico

Bom dia, tenho uma aplicação onde preciso que no relatório mostre o tempo em que o produto ficou no estado “Esterilizando”, salvo esses dados no banco, mas não sei como posso colocar esse cálculo no relatório, hoje tenho apenas um valor fixo, e este campo na verdade precisa mostrar o valor real do que está acontecendo, seguem imagens para melhor compreensão:



É ali onde diz: tempo de Esterilização, preciso mostrar o tempo real da tabela de estado onde é igual a ‘Esterilizando’, se alguém puder ajudar, agradeço.

Olá Pedro!

Não sei se entendi. No exemplo acima, qual exatamente é o valor que deveria aparecer no Tempo de Esterilização?

Bom dia, precisa aparecer 09, porque calcularia o tempo de esterilização(onde na planilha está escrito ‘Esterilizando’) que começou em 16:24 e parou em 16:33.

Então você poderia criar uma Consulta na Tela para calcular essa diferença e mostrar o resultado no Relatório através de um Tag Interno usando o método GetADORecordset.

Poderia nos mostrar como é a Consulta do Relatório?

No caso a consulta do relatório é essa: SELECT Esterilizador01.E3TimeStamp,Esterilizador01.Batelada_Est01,Esterilizador01.Pressao_Est01,Esterilizador01.Temperatura_Est01,Esterilizador01.Tempo_Est01,Esterilizador01.Estado_Est01
FROM Esterilizador01
WHERE ( Esterilizador01.Batelada_Est01 = <%Batelada%> )
ORDER BY Esterilizador01.E3TimeStamp ASC

Qual é o campo que está sendo mostrado na coluna ‘Data Hora’? E qual é o banco de dados utilizado?

Timestamp na coluna data e hora, e SQL Server

Experimenta isso:

SELECT Max(E3TimeStamp) as Fim, Min(E3TimeStamp) as Inicio, DateDiff(n, Inicio, Fim) as Diferença
FROM Esterilizador01
WHERE Batelada_Est01 = <%Batelada%> AND Estado_Est01 like 'Esterilizando'

No caso onde devo inserir essa consulta?

Sugiro inserir na mesma tela onde você manda imprimir o Relatório.

Bom dia Gustavo, eu não consigo resolver esse problema, estou dando voltas e não resolvo, posso lhe mandar o projeto por email para o senhor dar uma olhada?

Pedro, nesse caso não vai fazer diferença me mandar o projeto. Vamos por partes. Chegou a criar a Consulta na Tela? Ela funcionou?

Bom dia, criei a consulta na mesma tela em que está o botão de consulta da tabela, mas não funcionou(também não sei como fazer pra visualizar o resultado no projeto), por isso tentei usar a consulta no banco de dados direto e ela também dá erro.


Por acaso ela não deveria retornar algo quando inserida no banco?

Tenta assim:

SELECT Max(E3TimeStamp) as Fim, Min(E3TimeStamp) as Inicio, DateDiff(n, Min(E3TimeStamp), Max(E3TimeStamp)) as Diferença
FROM Esterilizador01
WHERE Batelada_Est01 = <%Batelada%> AND Estado_Est01 like 'Esterilizando'

Sim agora está retornando o valor correto quando faço essa consulta no banco de dados, mas como fazer esse valor do campo “diferença” aparecer no label do relatório? Isso ficou confuso para mim.

Aí que entra o GetADORecordset, antes de imprimir o Relatório (pode ser no mesmo script). Dá uma olhada no link abaixo.

Infelizmente ainda não consigo compreender exatamente como funciona, não consigo fazer a relação deste exemplo para o meu projeto.

Vamos continuar por partes. Cria um botão na Tela com um script no evento Click assim:

set consulta = Screen.Item("Nome da Consulta")
consulta.SetVariableValue "Batelada", "Nome da batelada"
set rs = consulta.GetADORecordset()
MsgBox rs.Fields("Diferença").Value

Se isso funcionar, vamos para o próximo passo, OK?

Deu certo, na mensagem retornou o valor correto!

Agora, cria um Tag Interno no Servidor de Dados e altera o script para guardar o valor no Tag. Por exemplo:

set consulta = Screen.Item("Nome da Consulta")
consulta.SetVariableValue "Batelada", "Nome da batelada"
set rs = consulta.GetADORecordset()
Application.GetObject("Dados.TagInterno1").Value = rs.Fields("Diferença").Value

Se você inserir isso no script de impressão, antes do Print, basta associar o campo do Relatório ao Tag Interno. Segue ilustração.

Captura%20de%20tela%202021-05-28%20133606