Ajuda com pesquisa valor inteiro campo string

Estou fazendo um gráfico com escala dinâmica usando este exemplo Como buscar os valores máximo e mínimos no banco de dados e atualizar a escala do gráfico.

mas como meu campo é string ( além do numero ele recebe uma string quando existir uma determinada situação) o resultado não vem correto

este é o meu sql da consulta

SELECT Max(valor) as Maximo, Min(valor) as Minimo FROM Tbl_Pulsomedia15_Vazao_Eta_B_Bentes Where (E3TimeStamp >= #<%DataIni%># and E3TimeStamp <= #<%DataFim%># )

@ronaldesantos, boa tarde.

Tentou o primeiro método daquele post?

Quanto ao método que está usando, para converter string em número, pode tentar o explicado neste forum.

Sds.

Boa Tarde

Quanto ao Outro tópico acabei de fazer os testes e funcionou perfeitamente

quanto a esta duvida fiz assim mas da erro

SELECT Max CAST(valor as integer) as Maximo, Min CAST(valor as integer) as Minimo FROM Tbl_Pulsomedia15_Vazao_Eta_B_Bentes Where (E3TimeStamp >= #<%DataIni%># and E3TimeStamp <= #<%DataFim%># ) and valor <> ‘processando’

Acho que não me expressei bem, desculpe. Me referi ao post que indicou (aqui), se realizou o primeiro método utilizando o FitAll no evento OnAsyncQueryFinish.

Ainda assim, obrigado pelo feedback! :slight_smile:

Está utilizando Access? Se sim, tenta desta forma.

Sds.

estou usando o sql server 2008 r2 e não consegui fazer a consulta

@ronaldesantos,

Eu consegui fazendo desta forma:

SELECT MAX (CAST(Valor as Integer)) as Maximo, MIN(CAST(Valor as Integer)) as Minimo
FROM Tbl_Pulsomedia15_Vazao_Eta_B_Bentes
WHERE (E3TimeStamp >= #<%DataIni%># and E3TimeStamp <= #<%DataFim%># ) and Valor <> ‘processando’

Pode ser que tenha faltado apenas os parênteses do Max e do Min.

Sds.

Fernando, na verdade meu campo vai ser float, pois nem todos os valores são inteiros.

Fiz assim

SELECT MAX(cast(replace(convert(varchar,ltrim(rtrim(valor))),’,’,’.’) as float))AS Maximo, MIN(cast(replace(convert(varchar,ltrim(rtrim(valor))),’,’,’.’) as float))AS Minimo from Tbl_Pulsomedia15_Vazao_Eta_B_Bentes Where (E3TimeStamp >= #<%DataIni%># and E3TimeStamp <=#<%DataFim%>#) and valor <> ‘processando’ and valor <> ‘Perda de Sinal’

e funciona, mas quando o valor de scalemax e scalemin forem fracionados da erro de scritp na pesquisa

olha o código que estou usando no botão da pesquisa[

DataIni = Screen.Item("dp_inicial").Value 
DataFim = Screen.Item("dp_Final").Value  

Set Consulta2 = Screen.Item("E3Chart1").Item("Consulta2")
Consulta2.SetVariableValue "DataIni", DataIni
Consulta2.SetVariableValue "DataFim", DataFim
Consulta2.Execute()
 
Set RS = Consulta2.GetADORecordset()
scaleMax = RS.Fields.Item("Maximo").Value  'Atribui o valor máximo 
scaleMin = RS.Fields.Item("Minimo").Value  'Atribui o valor mínimo

Screen.Item("E3Chart1").Axes.Item("EixoVazao").SetMinMax scaleMin,scaleMax

Entendido.

Talvez converter o scaleMax e scaleMin para CDbl ou CInt ajude.

Screen.Item(“E3Chart1”).Axes.Item(“EixoVazao”).SetMinMax CDbl(scaleMin),CDbl(scaleMax)

Em tempo, qual erro aparece?

Sds.

só fala erro de tempo de execução nesta linha

Screen.Item(“E3Chart1”).Axes.Item(“EixoVazao”).SetMinMax scaleMin,scaleMax

fiz conforme sugestão mas continua o erro

Entendido.

Caso coloque um MsgBox para retornar os valores o que aparece?

Sugestão:

Set RS = Consulta2.GetADORecordset()
scaleMax = RS.Fields.Item(“Maximo”).Value 'Atribui o valor máximo
scaleMin = RS.Fields.Item(“Minimo”).Value 'Atribui o valor mínimo

MsgBox scaleMin &" - “& TypeName(scaleMin) &” — “&scaleMax &” - "& TypeName(scaleMax)

Tira um screenshot e coloca aqui, por favor.

Grato.

eu fiz assim

Set RS = Consulta2.GetADORecordset()
scaleMax = cint( RS.Fields.Item(“Maximo”).Value) 'Atribui o valor máximo
scaleMin = cint( RS.Fields.Item(“Minimo”).Value )'Atribui o valor mínimo

MsgBox scaleMin &" - “& TypeName(scaleMin) &” — “&scaleMax &” - "& TypeName(scaleMax)

e agora mostra isto

mas o erro persiste

este erro está dando quando o minimo for maior que 0 ex

o minimo está zerado

Acho que pode ser porque a scala minima e maxima estão com os mesmos valores

Definitivamente o erro é porque ambos os valores são iguais.

Eles precisam ser diferentes. Veja o teste que realizei:

'Passa os valores mínimo e máximo à escala Vertical
Screen.Item(“E3Chart1”).Axes.Item(“EixoVertical”).SetMinMax 50,50 '<— Linha 14

No outro caso:
Screen.Item(“E3Chart1”).Axes.Item(“EixoVertical”).SetMinMax 50, 50.5 '<— Linha 14

olha o que eu fzi

coloquei na pesquisa para colocar um a mais na Scala maxima

SELECT MAX(cast(replace(convert(varchar,ltrim(rtrim(valor))),’,’,’.’) as float)+1) AS Maximo, MIN(cast(replace(convert(varchar,ltrim(rtrim(valor))),’,’,’.’) as float)) AS Minimo from Tbl_Pulsomedia15_Vazao_Eta_B_Bentes Where (E3TimeStamp >= #<%DataIni%># and E3TimeStamp <=#<%DataFim%>#) and valor <> ‘processando’ and valor <> ‘Perda de Sinal’, aio erro parou

só que estou com um problema

quando faço a pesquisa no dia anterior até o atual não me retorna nada ex

16/01/2018 até 17/01/2018. só do dia anterior até o dia atual. se eu pegar por ex de 15/01/2018 até 16/01/2018 a pesquisa funciona

tirei da consulta e fiz direto no botão de pesquisa

DataIni = Screen.Item("dp_inicial").Value 
DataFim = Screen.Item("dp_Final").Value  

Set Consulta2 = Screen.Item("E3Chart1").Item("Consulta2")
Consulta2.SetVariableValue "DataIni", DataIni
Consulta2.SetVariableValue "DataFim", DataFim
Consulta2.Execute()

Set RS = Consulta2.GetADORecordset()
scaleMax = RS.Fields.Item(“Maximo”).Value 'Atribui o valor máximo
scaleMin = RS.Fields.Item(“Minimo”).Value’Atribui o valor mínimo
if scaleMin = scaleMax then

scaleMax = scaleMax +1

end if

MsgBox scaleMin &" - “& TypeName(scaleMin) &” — “&scaleMax &” - "& TypeName(scaleMax)

Screen.Item("E3Chart1").Axes.Item("EixoVazao").SetMinMax scaleMin,scaleMax

mas o problema da data persiste

Insere o retorno da Consulta aqui.

Também, se possível, disponibiliza o log do E3 (E3_ano_mes_dia_numero.etl).

Resolvido aqui.

só mais uma duvida. eu uso a bilioteca pensvisiblelib. tem como alé das penas as Axes tbem serem escondidas?

Ótimo! Há a possibilidade de compartilhar conosco o que havia acontecido?

Tem sim:

Fernando, muito obrigado pela ajuda. o problema da pesquisa entre datas estava relacionado à aquele erro de script. quando acertei o mesmo e fechei a aplicação novamente, funcionou perfeitamente. olha meu codigo final como ficou:

DataIni = Screen.Item("dp_inicial").Value 
DataFim = Screen.Item("dp_Final").Value  

Set Consulta2 = Screen.Item("E3Chart1").Item("Consulta2")
Consulta2.SetVariableValue "DataIni", DataIni
Consulta2.SetVariableValue "DataFim", DataFim
Consulta2.Execute()

Set RS = Consulta2.GetADORecordset()
scaleMax = Cint(RS.Fields.Item(“Maximo”).Value) 'Atribui o valor máximo
scaleMin = Cint(RS.Fields.Item(“Minimo”).Value)'Atribui o valor mínimo

scaleMax1 = Cint(RS.Fields.Item(“Maximo1”).Value) 'Atribui o valor máximo
scaleMin1 = Cint(RS.Fields.Item(“Minimo1”).Value)'Atribui o valor mínimo

scaleMax2 = Cint(RS.Fields.Item(“Maximo2”).Value) 'Atribui o valor máximo
scaleMin2 = Cint(RS.Fields.Item(“Minimo2”).Value)'Atribui o valor mínimo

if scaleMin = scaleMax then

scaleMax = scaleMax +1

end if

if scaleMin1 = scaleMax1 then

scaleMax1 = scaleMax1 + 1

end if

if scaleMin2 = scaleMax2 then

scaleMax2 = scaleMax2 +1

end if

Screen.Item("E3Chart1").Axes.Item("EixoVazao").SetMinMax scaleMin,scaleMax
Screen.Item("E3Chart1").Axes.Item("EixoPressao").SetMinMax scaleMin1,scaleMax1
Screen.Item("E3Chart1").Axes.Item("EixoNIvel").SetMinMax scaleMin2,scaleMax2
1 Like