Pegar os valores do banco de dados salvo e mostrar em um display

boa noite.

preciso pegar dados que serão salvos em um histórico e somar um campo do mesmo e mostrar no display, teria como?

ex: de minutos em minuto irei salvando um campo no banco para pode pegar os valores futuramente ex

a ultima hora exata ex:

dados inseridos entre 19:01 ate 20:01 e somar o mesmo . só que preciso que esta pesquisa vá mudando automaticamente conforme forem se passando os minutos. ex:

19:01 as 20:01
19:02 as 20:02

o display irá sempre mostrar o valor da ultima hora

1 Like

banco de Dados Sql server 2008

Ronaldo,
Para fazer a soma você deve utilizar um objeto Consulta com a sintaxe SUM do SQL. Exemplo:
SELECT SUM (NomeDoCampo) as Soma
FROM NomeDaTabela
WHERE ( E3TimeStamp >= #<%DataIni%># AND E3TimeStamp <= #<%DataFim%># )

O filtro por data deve ser ‘Now-1/24’ até ‘Now’ para buscar a última hora.

Insira este objeto Consulta na tela onde está o display.

Para disparar a soma a cada minuto, faça um tag demo no Servidor ou Viewer e configure-o para CurrentTime. No display, crie um evento utilizando o ‘Minute’ deste tag e busque o valor do campo da consulta. Veja a imagem:

Enrico Boa Tarde, Obrigado Pela atenção.

Eu estou fazendo o processo conforme você me passou só que com algumas alterações

Eu tenho um xcontrol chamado Xoanalogicas. com seus campos e tags recebendo os valores .

a cada minuto eu mando salvar os dados o banco atraves de um histórico criado

if Parent.Item(“RecebeContador”).Value = 1 And Parent.Item(“RecebeContador”).Value <= 59 then

xo_Analogicas.Parcial_Pluv_MM1 = xo_Analogicas.Parcial_Pluv_MM1 * xo_Analogicas.Relacao_Pluviometro

xo_Analogicas.Item(“HistPluv_Minutos”).WriteRecord()

Até ai tudo bem eu mando salvar no banco e os valores estão sendo salvos corretamente

na Hora da Consulta, criei um xcontrol com um display e inclui uma consulta ao mesmo sem confirgura -la

e no display eu crie um evento conforme imagem abaixo, realizando a esquisa conforme script

mando buscar a tabela que está registrada no meu histórico,e fazer a pesquisa dentro do meu proprio display. ( quando instanciado eu mostro a fonte de onde será pego as informações.

só que na hora da atualização me da a seguinte mensagem

Segue abaixo a tela do histórico

Ronaldo,
Para buscar o campo da consulta, você tem que fazer um GetADORecordset. Veja:
Set rec = Consulta.GetADORecordset()
Value = CStr(rec.Fields.Item(“soma”).Value

Além disto, creio que esteja faltando um ‘SELECT’ antes do SUM na sua consulta.

Enrico esta dando ero na linha do
Set rec = Consulta.GetADORecordset()

xc_ic_Display_Pulso.Item(“Consulta1”).Table = xc_ic_Display_Pulso.Fonte.Item(“HistPluv_Minutos”).TableName

Set Consulta = xc_ic_Display_Pulso.Item("Consulta1")

Consulta.SQL  =  "Select SUM (Valor)as soma FROM " &Table& _
                " WHERE E3TimeStamp >= #<%DataInicial%># AND E3TimeStamp <= #<%DataFinal%># "
Consulta.SetVariableValue "DataInicial", now-1/24
Consulta.SetVariableValue "DataFinal", now 

Set rec = Consulta.GetADORecordset()
Value = CStr(rec.Fields.Item("soma").Value)

Ronaldo,
Você testou a consulta através do editor?

nâo entendi a pergunta

pelo editor nenhum erro de script

Enrico, Muito Obrigado.

Resolvido ficou assim

Table = xc_ic_Display_Pulso.Fonte.Item("HistPluv_Minutos").TableName

Set Consulta = xc_ic_Display_Pulso.Item("Consulta1")

Consulta.SQL  =  "Select SUM(Valor)as soma FROM " &Table& _
                " WHERE E3TimeStamp >= #<%DataInicial%># AND E3TimeStamp <= #<%DataFinal%># "
Consulta.SetVariableValue "DataInicial", now-1/24
Consulta.SetVariableValue "DataFinal", now 

Set rec = Consulta.GetADORecordset()
Value = CStr(rec.Fields.Item("soma").Value)

end if

agora como ficaria esta mesma pesquisa para pegar os valors das ultimas 24 horas e das ultimos 30 dias?

Ronaldo,
Basta alterar a data inicial da consulta.
1 hora = now-1/24
1 dia = now-1
30 dias = now-30

Enrico bom dia

Obrigado pela ajuda. está funcionando bem

só preciso de mais uma ajuda

pra diminuir os valores a serem salvo no banco, eu coloquei uma condição para não salvar valores =0, pois não preciso

só que ao fazer a pesquisa e não achar nada ele me retorna a mensagem conforme a imagem. teria algo a ser feito?

Ronaldo,
Antes da linha ‘Value = CStr(rec.Fields.Item(“soma”).Value)’, insira uma condicional, verificando se o valor é nulo. Exemplo:

If IsNull(rec.Fields.Item(“soma”).Value) then
MsgBox “Consulta vazia”
Else
Value = CStr(rec.Fields.Item(“soma”).Value)
End If

Se não der certo, podes tentar com ‘If rec.Fields.Item(“soma”).Value = “Null” then…’.

Boa Tarde Enrico, funcionol perfeitamente.

precisei fazer uma outra pesquisa pegando os dados diários a partir das 00:00:00 usando o código abaixo e aparentemente funcionou perfeitamente.

Table = xc_ic_Display_Pulso.Fonte.Item(“HistPulso_Minutos”).TableName

Set Consulta = xc_ic_Display_Pulso.Item("Consulta1")

Consulta.SQL  =  "Select SUM(Valor)as somaDiario FROM " &Table& _
                " WHERE E3TimeStamp >= #<%DataInicial%># AND E3TimeStamp <= #<%DataFinal%># "

Consulta.SetVariableValue “DataInicial”, Date + #00:00:00#
Consulta.SetVariableValue “DataFinal”, Date + #23:59:59#

    Set rec = Consulta.GetADORecordset()
    
    
 If IsNull(rec.Fields.Item("somaDiario").Value) then
 
 Value = 0
 
 else

Value = CStr(rec.Fields.Item("somaDiario").Value)

end if

só ficou uma duvida. no meu display já esta formatado para 0"mm" só que ao receber os dados do banco após a consulta o display some a formatação e pega o valor igual está salvo no banco , teria como formatar estes valores?

Enrico, resolvido. coloquei a strimg a ser mostrada depois do valor e esta funcionando muito bem.

obrigado pela atenção e Deus te ajude

1 Like