Comando SQL - de novo

Delphi

26/05/2003

Boa tarde!

Pessoal, segui a dica de vocês e dei uma melhorada substancial no código. Agora ficou assim:

***

procedure TfmExclusaoRegistros.BitBtn1Click(Sender: TObject);
begin
fmExclusaoRegistros.masterQuery.SQL.clear;
fmExclusaoRegistros.masterQuery.SQL.Add(´DELETE FROM registros WHERE´);
fmExclusaoRegistros.masterQuery.SQL.Add(´WHERE (DataRetorno >= :DataInicial AND DataRetorno <= :DataFinal) AND (CodigoCertidao = :Codigo)´);
fmExclusaoRegistros.masterQuery.ParamByName(´DataInicial´).AsDate := StrToDate(´fmExclusaoRegistros.MaskEdit1.Text´);
fmExclusaoRegistros.masterQuery.ParamByName(´DataFinal´).AsDate := StrToDate(´fmExclusaoRegistros.MaskEdit2.Text´);
fmExclusaoRegistros.masterQuery.ParamByName(´Codigo´).AsInteger := StrToInt(´fmExclusaoRegistros.Edit1.Text´);
Showmessage(fmExclusaoRegistros.masterQuery.SQL.Text);
fmExclusaoRegistros.masterQuery.ExecSQL;
end;

***

Só que agora ele me dá a seguinte mensagem de erro:

´fmExclusaoRegistros.MaskEdit1.Text´ is not a valid date.

E isso para qualquer data que eu venha a digitar.

Não entendo o que ele quer dizer com ´não é uma data válida´, eu até experimentei formatar os maskedit da data como mm/dd/aa e como dd.mm.aa e continuou dando erro.

Será que alguém pode me indicar o problema?

Fico muito grato pela ajuda.

Tiago :shock:


Tiagopar

Tiagopar

Curtidas 0

Respostas

Ggean

Ggean

26/05/2003

pelo que vi vc colocou entre aspas o

StrToDate([color=red:dba2d4e28d]´[/color:dba2d4e28d]fmExclusaoRegistros.MaskEdit1.Text[color=red:dba2d4e28d]´[/color:dba2d4e28d]);

escreva sem as aspas assim ele entende que vc quer converter a string´fmExclusaoRegistros.MaskEdit1.Text´ e nao o valor do maskEdit


GOSTEI 0
Flavio Sanches

Flavio Sanches

26/05/2003

Vc tb botou o where duas vezes???


GOSTEI 0
Jairroberto

Jairroberto

26/05/2003

Olá, Tiago!

Quando você usa a função StrToDate você deve formatar o texto a ser transformado em data de acordo com as configurações do Windows para datas, e não de acordo com a forma a ser interpretada pelo Banco de Dados. Sendo assim, se o seu Windows está formatado para o Brasil, você deve passar o parâmetro no formato ´dd/mm/yy´ e não ´mm/dd/yy´.

Se em vez de usar um parâmetro para informar a data você estivesse informando no próprio texto do SQL, aí sim valeria o formato interpretado pelo Banco de Dados: mm/dd/yy ou dd.mm.yy .


Um abraço,
Jair


GOSTEI 0
POSTAR