Fórum Consulta SQL - conversion error #342636
14/06/2007
0
Estou fazendo a seguinte consulta:
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)
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
Curtir tópico
+ 0
Responder
Posts
15/06/2007
Macario
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:
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:
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)