Fórum Select ParamByName [dor de cabeça] #55268
16/02/2006
0
var
tmp:String;
begin
tmp:= (DBEdit3.Field.Text);
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add(´Select *´);
Query1.SQL.Add(´From Tabela´);
Query1.SQL.Add(´where =:valor Between Tabela_Acimade and Tabela_Ate´);
Query1.ParamByName(´valor´).AsCurrency := StrToCurr(tmp);
OBS:
DBEDIT3 é um CAMPO ´$´.
Eu substituo o =:valor por qlq valor e roda.
ERRO NA EXECUÇÂO:
INVALID USE OF KEYWORD TOKEN: =?
[quote:cd22729cb9=´Moderação´][b:cd22729cb9][color=blue:cd22729cb9]Título do tópico editado por Vinicius2K:[/color:cd22729cb9][/b:cd22729cb9]
[b:cd22729cb9][color=red:cd22729cb9][list:cd22729cb9][*:cd22729cb9]Utilização de maiúsculas no título da mensagem: ´SELECT PARAMBYNAME [DOR DE CABEÇA]´[/list:u:cd22729cb9][/color:cd22729cb9][/b:cd22729cb9]
Peço que leia atentamente as [url=http://forum.clubedelphi.net/viewtopic.php?t=6689]Regras de Conduta[/url] e se algum esclarecimento sobre o funcionamento do fórum ou sobre as Regras de Conduta for necessário, envie-me uma [url=http://forum.clubedelphi.net/privmsg.php?mode=post&u=2796]Mensagem Particular[/url].[/quote:cd22729cb9]
Staylon
Curtir tópico
+ 0Posts
16/02/2006
Emerson Nascimento
o correto seria fazer algo assim:
begin Query1.Close; Query1.SQL.Clear; Query1.SQL.Add(´Select *´); Query1.SQL.Add(´From Tabela´); Query1.SQL.Add(´where Tabela_Acimade >= :valor or Tabela_Ate <= :valor´); Query1.ParamByName(´valor´).AsCurrency := DBEdit3.Field.AsFloat/AsCurrency; Query1.Open; end;
ou
var tmp: string; begin tmp := DBEdit3.Field.Text; Query1.Close; Query1.SQL.Clear; Query1.SQL.Add(´Select *´); Query1.SQL.Add(´From Tabela´); Query1.SQL.Add(´where ´ + tmp + ´ Between Tabela_Acimade and Tabela_Ate´); Query1.Open; end;
Gostei + 0
17/02/2006
Staylon
begin Query1.Close; Query1.SQL.Clear; Query1.SQL.Add(´Select *´); Query1.SQL.Add(´From Tabela´); Query1.SQL.Add(´where Tabela_Acimade >= :valor or Tabela_Ate <= :valor´); Query1.ParamByName(´valor´).AsCurrency := DBEdit3.Field.AsFloat/AsCurrency; Query1.Open; end;
Pega porem ele so retorna o primeiro registro da tabela sempre.. pois esta com um OR na select ... e quando eu troco o OR para And ele nao retorna nada....
E em relacao ao segundo exemplo:
var tmp: string; begin tmp := DBEdit3.Field.Text; Query1.Close; Query1.SQL.Clear; Query1.SQL.Add(´Select *´); Query1.SQL.Add(´From Tabela´); Query1.SQL.Add(´where ´ + tmp + ´ Between Tabela_Acimade and Tabela_Ate´); Query1.Open; end;
Ele nao executa pois quando faco a busca da erro em execucao pois fala que a virgula do valor 323,44 é invalid token...
Gostei + 0
17/02/2006
Emerson Nascimento
tmp := StringReplace(FormatFloat(´#0.00´,DBEdit3.Field.AsFloat),´,´,´.´,[rfReplaceAll]);
o que é feito acima:
tiro os separadores de milhar com o FormatFloat() (se houver) e troco as virgulas (,) por pontos (.)
Gostei + 0
18/02/2006
Staylon
Vlw ae pela ajuda
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)