Fórum O que há de errado nessa query??? #164740
05/06/2003
0
QUERY3.Active:=FALSE; QUERY3.CLOSE; QUERY3.SQL.CLEAR; QUERY3.SQL.ADD(´SELECT * FROM TBATIV WHERE DATA between :rdb1 and :rdb2 and executor= :RE order by :ORD1, :ORD2´); QUERY3.ParamByName(´RDB1´).ASDate:=STRTODATE (ME1.TEXT); QUERY3.PARAMBYNAME(´RDB2´).AsDate:=STRTODATE(ME2.TEXT); QUERY3.PARAMBYNAME(´RE´).AsSTRING:=COMBOBOX1.TEXT; QUERY3.PARAMBYNAME(´ORD1´).AsSTRING:=COMBOBOX2.TEXT; QUERY3.PARAMBYNAME(´ORD2´).AsSTRING:=COMBOBOX3.TEXT; QUERY3.Open;
Aí qdo eu a executo aparece o erro:
---------------------------
Debugger Exception Notification
---------------------------
Project ativ.exe raised exception class EDBEngineError with message ´Invalid use of keyword.
Token: ?,
Line Number: 1´. Process stopped. Use Step or Run to continue.
---------------------------
OK Help
---------------------------
O que é que está errado aí???
Vlw!
L!nk!n
Curtir tópico
+ 0Posts
05/06/2003
Paulo
A primeira linha(Query3.Active := False) elimine esta. Deixando apartir do Query3.Close;
Depois no parametro RDB1 e RDB2 ao invés .AsDate, coloque .AsDateTime; Se não funcionar, com certeza não vai atrapalhar.
Depois faça duas orações, um jejum e torça para q funcione, porque creio eu q está tudo certo.
Gostei + 0
05/06/2003
L!nk!n
Então eu tenho que criar a instrução SQL dinamicamente. Ex.:
QUERY3.SQL.ADD(´SELECT * FROM TBATIV WHERE DATA between :rdb1 and :rdb2 and executor= :RE´); QUERY3.SQL.ADD(´ORDER BY ´+COMBOBOX2.TEXT+´, ´ +COMBOBOX3.TEXT+´);
Isso funcionou!
Vlw!
Flw!
Gostei + 0
05/06/2003
Luc.morais
QUERY3.Active:=FALSE; QUERY3.CLOSE; QUERY3.SQL.CLEAR; QUERY3.SQL.ADD(´SELECT * FROM TBATIV WHERE DATA between :rdb1 and :rdb2 and executor= :RE order by :ORD1, :ORD2´); QUERY3.ParamByName(´RDB1´).ASDate:=STRTODATE (ME1.TEXT); QUERY3.PARAMBYNAME(´RDB2´).AsDate:=STRTODATE(ME2.TEXT); QUERY3.PARAMBYNAME(´RE´).AsSTRING:=COMBOBOX1.TEXT; QUERY3.PARAMBYNAME(´ORD1´).AsSTRING:=COMBOBOX2.TEXT; QUERY3.PARAMBYNAME(´ORD2´).AsSTRING:=COMBOBOX3.TEXT; QUERY3.Open;
Aí qdo eu a executo aparece o erro:
---------------------------
Debugger Exception Notification
---------------------------
Project ativ.exe raised exception class EDBEngineError with message ´Invalid use of keyword.
Token: ?,
Line Number: 1´. Process stopped. Use Step or Run to continue.
---------------------------
OK Help
---------------------------
O que é que está errado aí???
Vlw!
Vc não pode usar parâmetro no ´order by´. Tente montar seu sql sem usar o parâmetro no order by:
Exemplo:
QUERY3.CLOSE;
QUERY3.SQL.CLEAR;
QUERY3.SQL.ADD(´SELECT * FROM TBATIV WHERE DATA between :rdb1 and :rdb2 and executor= :RE order by ´ + COMBOBOX2.TEXT + ´, ´ + COMBOBOX3.TEXT);
QUERY3.ParamByName(´RDB1´).ASDate:=STRTODATE (ME1.TEXT);
QUERY3.PARAMBYNAME(´RDB2´).AsDate:=STRTODATE(ME2.TEXT);
QUERY3.PARAMBYNAME(´RE´).AsSTRING:=COMBOBOX1.TEXT;
QUERY3.Open;
Luciano
Gostei + 0