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

Catunda

Provavelmente o erro está localizado nas aspas, como vc está usando todas as aspas simples o delphi está lendo duas frases separadas unidas por um asterisco.

´DELETE FROM ESTFISIC WHERE FLAG_BAIXA = ´*´ AND DATA >= :DTINI AND DATA <= :DTFIM´;

Esperimente colocar aspa dupla no asterisco ´*´.

Um outro problema que poderá ocorrer é que, a menos que DATA seja do tipo char ou varchar, voce precisará converter o conteudo dos edits antes de passa-los como parametros.


Responder Citar

24/03/2006

Adriano Santos

Provavelmente o erro está localizado nas aspas, como vc está usando todas as aspas simples o delphi está lendo duas frases separadas unidas por um asterisco. ´DELETE FROM ESTFISIC WHERE FLAG_BAIXA = ´*´ AND DATA >= :DTINI AND DATA <= :DTFIM´; Esperimente colocar aspa dupla no asterisco ´*´. Um outro problema que poderá ocorrer é que, a menos que DATA seja do tipo char ou varchar, voce precisará converter o conteudo dos edits antes de passa-los como parametros.


É isso Catunda, suas informações estão corretas. Eu modifiquei o script do [b:150c3dd033]bertocco[/b:150c3dd033] e agora deve funcionar.

  sdsDelete.DataSet.CommandText:=´ ´;
  sdsDelete.DataSet.CommandText:=´DELETE FROM ESTFISIC WHERE   FLAG_BAIXA = ´*´ AND DATA BETWEEN :DTINI AND :DTFIM´;
  sdsDelete.Params.ParamByName(´DTINI´).AsDateTime := StrToDateTime(edtDTINI.Text);
  sdsDelete.Params.ParamByName(´DTFIM´).AsDateTime := StrToDateTime(edtDTFIM.Text);
  sdsDelete.ExecSql;



Responder Citar

24/03/2006

Paullsoftware

[quote]Provavelmente o erro está localizado nas aspas, como vc está usando todas as aspas simples o delphi está lendo duas frases separadas unidas por um asterisco. ´DELETE FROM ESTFISIC WHERE FLAG_BAIXA = ´*´ AND DATA >= :DTINI AND DATA <= :DTFIM´; Esperimente colocar aspa dupla no asterisco ´*´. Um outro problema que poderá ocorrer é que, a menos que DATA seja do tipo char ou varchar, voce precisará converter o conteudo dos edits antes de passa-los como parametros.


É isso Catunda, suas informações estão corretas. Eu modifiquei o script do [b:7813fe87c8]bertocco[/b:7813fe87c8] e agora deve funcionar.

  sdsDelete.DataSet.CommandText:=´ ´;
  sdsDelete.DataSet.CommandText:=´DELETE FROM ESTFISIC WHERE   FLAG_BAIXA = ´*´ AND DATA BETWEEN :DTINI AND :DTFIM´;
  sdsDelete.Params.ParamByName(´DTINI´).AsDateTime := StrToDateTime(edtDTINI.Text);
  sdsDelete.Params.ParamByName(´DTFIM´).AsDateTime := StrToDateTime(edtDTFIM.Text);
  sdsDelete.ExecSql;
[/quote:7813fe87c8]

acho que aqui deve ter um erro de digitação:
sdsDelete.DataSet.CommandText:=´DELETE FROM ESTFISIC WHERE FLAG_BAIXA = ´*´ AND DATA BETWEEN :DTINI AND :DTFIM´;


Responder Citar

24/03/2006

Paullsoftware

desculpa cliquei no botão enviar se querer...
continuando o correto seria:
ao invés de
sdsDelete.DataSet.CommandText:=´DELETE FROM ESTFISIC WHERE   FLAG_BAIXA = ´*´ AND DATA BETWEEN :DTINI AND :DTFIM´; 

se assim:
sdsDelete.DataSet.CommandText:=´DELETE FROM ESTFISIC WHERE   FLAG_BAIXA = ´´*´´ AND DATA BETWEEN :DTINI AND :DTFIM´´; 
ok!

só um detalhe, essa dúvida já foi resolvida no tópico [url]http://forum.clubedelphi.net/viewtopic.php?t=75239[/url] estranho, nenhum Moderador viu isso :roll:


Responder Citar

24/03/2006

Adriano Santos

desculpa cliquei no botão enviar se querer... continuando o correto seria: ao invés de
sdsDelete.DataSet.CommandText:=´DELETE FROM ESTFISIC WHERE   FLAG_BAIXA = ´*´ AND DATA BETWEEN :DTINI AND :DTFIM´; 
se assim:
sdsDelete.DataSet.CommandText:=´DELETE FROM ESTFISIC WHERE   FLAG_BAIXA = ´´*´´ AND DATA BETWEEN :DTINI AND :DTFIM´´; 
ok! só um detalhe, essa dúvida já foi resolvida no tópico [url]http://forum.clubedelphi.net/viewtopic.php?t=75239[/url] estranho, nenhum Moderador viu isso :roll:


É verdade Pall, esqueci de corrigir do erro do asterísco, mas como Catunda ja havia corrigido nem me atentei ao fato.

Flw


Responder Citar

24/03/2006

Martins

Este tópico está duplicado, o autor já obteve uma resposta funcional no outro tópico, a moderação poderia editar o dois tópicos tornando-os um só.


Responder Citar