O que há de errado nessa query???
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
Curtidas 0
Respostas
Paulo
05/06/2003
l!nk!, aparentemente está tudo ok, porem tente fazer diferente, não q esteja errado, mas vc sabe..
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.
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
L!nk!n
05/06/2003
Valew Paulo, eu descobri o problema. A questão eh que eu não posso passar as instruções de um ORDER BY como parâmetro.
Então eu tenho que criar a instrução SQL dinamicamente. Ex.:
Isso funcionou!
Vlw!
Flw!
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
Luc.morais
05/06/2003
[quote=´l!nk!n´]
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!
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