Array
(
)

Deletando por Data

Bertocco
   - 23 mar 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


Paullsoftware
   - 23 mar 2006

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

#Código

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:


Bertocco
   - 23 mar 2006


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

#Código

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 = ´*´


Bertocco
   - 23 mar 2006

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


Paullsoftware
   - 23 mar 2006


Citação:
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;


Bertocco
   - 23 mar 2006

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