Fórum Erro no DBX #279854

03/05/2005

0

Olá, estou com problemas nessa execução.
Sempre retorna erros variados, às vezes diz que o campo nao
existe, outras diz unssigned code. e sei que o problema está na parte
da data porque se tirar a linha ele funciona.
Está tudo certo, sqlDataSet ligado no banco, banco ativo. sei lá... Alguém em ajuda?

SELECT SEQUENCIAL, DATA, VALOR, DESCRICAO, CLI, FORNEC, E_S
FROM CAIXA
WHERE SEQUENCIAL > 0
AND VALOR BETWEEN :VAL1 AND :VAL2
AND DESCRICAO LIKE :DESCRI
AND CLI = :CLIE
AND DATA >= :DATA1 AND DATA <= :DATA2
ORDER BY DATA


Jeans2002

Jeans2002

Responder

Posts

03/05/2005

Anfm

Como vc está passando os parâmetros da data?

Pois o formato do Interbase/Firebird é mm/dd/aa.

Talvez seja por isso.


Responder

Gostei + 0

03/05/2005

Vinicius2k

Colega,

Por favor poste o trecho de código em que vc passa os parametros para o SQLDataSet. É *provável* que o problema esteja nos parametros de data.

Dependendo do banco de dados, o dbExpress pode intepretar as colunas do tipo Date como TSQLTimeStamp e DateTime serão sempre TSQLTimeStamp, independente do banco de dados, por isso são necessários alguns cuidados... duas formas:

Mude o tipo do parametro para ftTimeStamp e ao invés de utilizar AsDate ou AsDateTime, utilize Value informando uma data :
with SQLDataSet1 do
begin
  Close;
  CommandText:= ´select * from <TABELA> where <CAMPO> between :P1 and :P2´;
  { **** }
  ParamByName(´P1´).DataType := ftTimeStamp;
  ParamByName(´P1´).Value := StrToDate(´03/05/2005´);
  { **** }
  ParamByName(´P2´).DataType := ftTimeStamp;
  ParamByName(´P2´).Value := StrToDate(´03/05/2005´);
  { **** }
  Open;
end;

[b:c61c39c979]ou[/b:c61c39c979]

Acrestente a unit [b:c61c39c979]SqlTimSt[/b:c61c39c979] na lista de uses e utilize a função de conversão de DateTime para SQLTimeStamp :
with SQLDataSet1 do
begin
  Close;
  CommandText:= ´select * from <TABELA> where <CAMPO> between :P1 and :P2´;
  { **** }
  ParamByName(´P1´).AsSQLTimeStamp := DateTimeToSQLTimeStamp(Date);
  { **** }
  ParamByName(´P2´).AsSQLTimeStamp := DateTimeToSQLTimeStamp(Date);
  { **** }
  Open;
end;


Espero ter ajudado.
T+


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar