Fórum Busca retorna valores errados #548424
14/03/2016
0
Eu estou tentando fazer uma busca em um bd, onde eu preciso que retorne o valor de "lambda" de acordo com o "caso", o valor do "caso" e inserido pelo usuário e o "lambda" calculado pelo programa. Eu utilizei o código abaixo ele ate retorna os valores, porem retorna sempre o primeiro valor da tabela independente do "caso" selecionado.
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select * from apoio');
ADOQuery1.SQL.Add('Where caso = lambda');
ADOQuery1.Open;
vlinhax := ADOQuery1.fieldByName('vlinhax').AsFloat;
ShowMessage('Vlinhax = ' + FloatToStr(vlinhax));
vx := ADOQuery1.fieldbyname('vx').AsFloat;
ShowMessage('Vx = ' + FloatToStr(vx));
vlinhay := ADOQuery1.fieldByName('vlinhay').AsFloat;
ShowMessage('Vlinhay = ' + FloatToStr(vlinhay));
vy := ADOQuery1.fieldbyname('vy').AsFloat;
ShowMessage('Vy = ' + FloatToStr(vy));Alguém teria alguma dica de como fazer ele retornar os valores corretos?
Emanuel
Curtir tópico
+ 0Posts
14/03/2016
Marco Antônio
Eu estou tentando fazer uma busca em um bd, onde eu preciso que retorne o valor de "lambda" de acordo com o "caso", o valor do "caso" e inserido pelo usuário e o "lambda" calculado pelo programa. Eu utilizei o código abaixo ele ate retorna os valores, porem retorna sempre o primeiro valor da tabela independente do "caso" selecionado.
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select * from apoio');
ADOQuery1.SQL.Add('Where caso = lambda');
ADOQuery1.Open;
vlinhax := ADOQuery1.fieldByName('vlinhax').AsFloat;
ShowMessage('Vlinhax = ' + FloatToStr(vlinhax));
vx := ADOQuery1.fieldbyname('vx').AsFloat;
ShowMessage('Vx = ' + FloatToStr(vx));
vlinhay := ADOQuery1.fieldByName('vlinhay').AsFloat;
ShowMessage('Vlinhay = ' + FloatToStr(vlinhay));
vy := ADOQuery1.fieldbyname('vy').AsFloat;
ShowMessage('Vy = ' + FloatToStr(vy));Alguém teria alguma dica de como fazer ele retornar os valores corretos?
Emanuel, boa tarde.
Pelo que entendi vc esta realmente sempre filtrando a mesma coisa.
No campo 'Where' deveria passar um parametro para a pesquisa:
antes: ADOQuery1.SQL.Add('Where caso = lambda');
depois: ADOQuery1.SQL.Add('Where caso = ' + intToStr( lambda ) ) ;
Bão mesmo seria vc posta todo o código ae.
Abc.
Gostei + 0
14/03/2016
Emanuel
lambda := ly/lx;
lambda := RoundTo(lambda, -1);
ShowMessage(FloatToStr(lambda));
if lambda <= 2 then
begin
ShowMessage('Laje armada em duas direções');
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('Select * from apoio');
ADOQuery1.SQL.Add('where caso = :caso');
ADOQuery1.Parameters.ParamByName('caso').Value := Edit8.Text;
ADOQuery1.Open;
com isso ele ate retornou valores do "caso" selecionado pelo usuário, porem ele retornou a primeira linha, que seria "lambda = 1" quando ele deveria retornar a linha onde o "lambda = 1,4".
Gostei + 0
14/03/2016
Emanuel
Gostei + 0
15/03/2016
Luiz Menin
Outra coisa, você está passando como parâmetro o Edit8.Text ao invés da variável "lambda".
Tente ser um pouco mais claro nos seus questionamentos, está um pouco confuso.
Gostei + 0
15/03/2016
Emanuel
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select * from apoio');
ADOQuery1.SQL.Add('Where caso = :caso and lambda = :lambda');
ADOQuery1.Parameters.ParamByName('caso').Value := Edit8.Text;
ADOQuery1.Parameters.ParamByName('lambda').Value := lambda;
ADOQuery1.Open;
vlinhax := ADOQuery1.fieldByName('vlinhax').AsFloat;
ShowMessage('Vlinhax = ' + FloatToStr(vlinhax));
vx := ADOQuery1.fieldbyname('vx').AsFloat;
ShowMessage('Vx = ' + FloatToStr(vx));
vlinhay := ADOQuery1.fieldByName('vlinhay').AsFloat;
ShowMessage('Vlinhay = ' + FloatToStr(vlinhay));
vy := ADOQuery1.fieldbyname('vy').AsFloat;
ShowMessage('Vy = ' + FloatToStr(vy));Só que quando ele vai me retornar os dados da erro seguinte erro "is not a valid floating point value." porém esta tudo correto no banco de dados e retorna esta linha da img em azul.
[img]http://arquivo.devmedia.com.br/forum/imagem/476122-20160315-162943.jpg[/img]
E este e o banco de dados.
[img]http://arquivo.devmedia.com.br/forum/imagem/476122-20160315-163001.jpg[/img]
Alguém poderia me ajudar em como solucionar isto?
Gostei + 0
15/03/2016
Natanael Ferreira
Experimente colocar um ShowMessage para mostrar na tela o valor deste campo antes da conversão para Float.
ShowMessage(ADOQuery1.fieldByName('vlinhax').AsString); // Mostrar o valor antes
vlinhax := ADOQuery1.fieldByName('vlinhax').AsFloat;Gostei + 0
15/03/2016
Emanuel
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)