Deletando por Data

23/03/2006

Boa Tarde, estou querendo Deletar as registros por Data, ou seja Data Inicial e Final, com Paramentos vou passar o que eu fiz.

sdsDelete.DataSet.CommandText:=´ ´;
sdsDelete.DataSet.CommandText:=´DELETE FROM ESTFISIC WHERE FLAG_BAIXA = ´*´ AND DATA >= :DTINI AND DATA <= :DTFIM´;
sdsDelete.Params.ParamByName(´DTINI´).AsString:=edtDTINI.Text;
sdsDelete.Params.ParamByName(´DTFIM´).AsString:=edtDTFIM.Text;
sdsDelete.Execute;

Quando eu roda a aplicação, aparece o seguinte erro: Operador Invalido.

Abraço


Bertocco

Respostas

23/03/2006

Paullsoftware

fiz um teste aqui com uma tabela com os campos: Nome (VarChar) e DataCad (date) e funcionou legal...

With IbQuery1 do
begin
Close;
Sql.Clear;
Sql.Text := ´Delete From Cadastro Where DataCad Between :Di And :Df´;
ParamByName(´Di´).AsDate := dtp1.Date;
ParamByName(´Df´).AsDate := dtp2.Date;
ExecSql;
end;
:wink:


Responder Citar

23/03/2006

Bertocco

fiz um teste aqui com uma tabela com os campos: Nome (VarChar) e DataCad (date) e funcionou legal...
With IbQuery1 do
begin
Close;
Sql.Clear;
Sql.Text := ´Delete From Cadastro Where DataCad Between :Di And :Df´;
ParamByName(´Di´).AsDate := dtp1.Date;
ParamByName(´Df´).AsDate := dtp2.Date;
ExecSql;
end;
:wink:


Mais eu preciso desse campo: WHERE FLAG_BAIXA = ´*´


Responder Citar

23/03/2006

Bertocco

Mais eu preciso desse campo: WHERE FLAG_BAIXA = ´*´


Responder Citar

23/03/2006

Paullsoftware

Mais eu preciso desse campo: WHERE FLAG_BAIXA = ´*´

Ele é do tipo VarChar então complemente assim:
With IbQuery1 do
begin
Close;
Sql.Clear;
Sql.Text := ´Delete From Cadastro Where DataCad Between :Di And :Df and Tipo=:t´;
ParamByName(´Di´).AsDate := dtp1.Date;
ParamByName(´Df´).AsDate := dtp2.Date;
ParamByName(´t´).AsString := Edit1.Text;//Onde pode ser substituido por ´*´
ExecSql;
end;


Responder Citar

23/03/2006

Bertocco

Funcionou!!! Muito Rápido
Agradeço sua ajuda, muito obrigado


Responder Citar