Consulta SQL - conversion error

Delphi

14/06/2007

Estou fazendo a seguinte consulta:

Close; CommandText := ´select A.COD, A.TIPO, A.DATA, FE.DATA_R, ´ + ´E.RAZ, S.NOM as SEO, FU.NOM as FUA, F.NOM as FUN, ´ + ´(select count(COD) from TAB_A ´ + ´where COD = :Cod and DATA between :DataI and :DataF) as TOTAL ´ + ´from TAB_A A ´ + ´left join FUN F on (F.COD = A.COD_F) ´ + ´left join EMP E on (E.COD = A.COD) ´ + ´left join SET S on (S.COD = A.COD_S) ´ + ´left join FUC FU on (FU.COD = A.COD_FUA) ´ + ´inner join FUN_E FE on (FE.COD_E = A.COD) ´ + ´where A.COD = :Cod and A.DATA between :DataI and :DataF ´+ ´order by A.DATA desc´; Params.ParamByName(´Cod´).AsInteger := Cod; Params.ParamByName(´DataI´).AsDateTime := DateTimePicker1.Date; Params.ParamByName(´DataF´).AsDateTime := DateTimePicker2.Date; Open;


A subconsulta me retornaria o total de registros. O problema é que está aparecendo o erro ´ conversion error from string ´1´´, quando passo o valor inteiro 1 no parâmetro ´Cod´ (ou qualquer outro valor). Se eu retirar a condição DATA da subconsulta, o erro não ocorre.
Já verifiquei os tipos dos parâmetros e estão corretos, como Integer e Date.
O que pode estar provacando o erro?

Estou usando D7, FB 1.5, DbExpress (SQL, DSP, CDS, DS)


Rmarcelop

Rmarcelop

Curtidas 0

Respostas

Macario

Macario

14/06/2007

Ola.

Bom vamos tentar assim:


with DataSet do
begin
Close;
CommandText := ´select A.COD, A.TIPO, A.DATA, FE.DATA_R, ´;
CommandText := CommandText +´E.RAZ, S.NOM as SEO, FU.NOM as FUA, F.NOM as FUN, ´;
CommandText := CommandText +´(select count(COD) from TAB_A ´ ;
CommandText := CommandText +´where COD = :CountCod and DATA between :Data1 and :Data2) as TOTAL ´ ;
CommandText := CommandText +´from TAB_A A ´ ;
CommandText := CommandText +´left join FUN F on (F.COD = A.COD_F) ´ ;
CommandText := CommandText +´left join EMP E on (E.COD = A.COD) ´ ;
CommandText := CommandText +´left join SET S on (S.COD = A.COD_S) ´ ;
CommandText := CommandText +´left join FUC FU on (FU.COD = A.COD_FUA) ´ ;
CommandText := CommandText +´inner join FUN_E FE on (FE.COD_E = A.COD) ´ ;
CommandText := CommandText +´where A.COD = :Cod and A.DATA between :DataI and :DataF ´;
CommandText := CommandText +´order by A.DATA desc´;
Params.ParamByName(´CountCod´).AsInteger := Cod;
Params.ParamByName(´Data1´).AsDateTime := DateTimePicker1.Date;
Params.ParamByName(´Data2´).AsDateTime := DateTimePicker2.Date;
Params.ParamByName(´Cod´).AsInteger := Cod;
Params.ParamByName(´DataI´).AsDateTime := DateTimePicker1.Date;
Params.ParamByName(´DataF´).AsDateTime := DateTimePicker2.Date;
Open;
end;

Se passando o tipo não funcionar use VALUE.

Params.ParamByName(´CountCod´).Value := Cod;
Params.ParamByName(´Data1´).Value := DateTimePicker1.Date;
Params.ParamByName(´Data2´).Value := DateTimePicker2.Date;
Params.ParamByName(´Cod´).Value := Cod;
Params.ParamByName(´DataI´).Value := DateTimePicker1.Date;
Params.ParamByName(´DataF´).Value := DateTimePicker2.Date;


Espero que ajude; :roll:


GOSTEI 0
POSTAR