Jump to content

Recommended Posts

Posted (edited)

Boas,

quero comparar uma data que tenho na bd com a do sistema faço o seguinte:

QueryDatas.SQL.Clear;
QueryDatas.SQL.Text :='select data,estado from visitas where estado=0';
QueryDatas.Open;

while not(QueryDatas.Eof) do
 begin
     if(QueryDatas.FieldByName('data').AsDateTime < StrToDate(FormatDateTime('yyyy-mm-dd',Date())))then
              QueryDatas.FieldByName('estado').AsInteger :=1;


    QueryDatas.Next;
 end;

Dá um erro exception class EConvertError with message 2014-02-27 is not a valid date

Edited by nunopicado
Adicionadas tags GeShi
Posted (edited)

* Quando meteres código, mete-o dentro de tags Code, com a indicação da linguagem.

Isso tem a ver com o formato da data no Windows...

O StrToDate usa esse formato para as conversões, mas tu estás a passar-lhe com o ano primeiro... Dá erro de conversão.

Ou usas o VarToDateTime em vez do StrToDate (adiciona Variants à Uses), ou metes a data no formato correcto (para tal, basta compara o campo com o Date, estás a converter para string e novamente para TDateTime, não faz sentido).

Mas tens outras formas de fazer isso, até mais eficientes.

Por exemplo:

var
  Affected:Integer;
begin
    ADOConnection1.Execute('UPDATE visitas SET estado = 1 WHERE estado = 0 AND data < "'+FormatDateTime('yyyy-mm-dd',Date())+'"', Affected);
end;
Edited by nunopicado

"A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!"

> Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.

Posted

Tens de o ajustar à tua base de dados, eu não a estou a ver, é apenas um exemplo.

Em que formato te aparecem as datas no heidisql?

"A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!"

> Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.

Posted (edited)

Eu sei.

Mas como é que te aparece a data mesmo?

yyyy-mm-dd ou dd-mm-yyyy, ou outra?

A propósito, depois de executar um comando directo no SQL, como é o caso, tens de fazer um refresh à tua query, para que as alterações sejam visíveis.

Edited by nunopicado

"A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!"

> Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.

Posted

A seguir àquela linha, mete:

QueryDatas.Refresh;

"A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!"

> Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.

Posted (edited)

Já resolvi com a tua query



QueryDatas.SQL.Clear;
QueryDatas.SQL.Text := 'UPDATE visitas SET estado = 1 WHERE estado = 0 AND data < '''+FormatDateTime('yyyy-mm-dd',Date())+'''';
QueryDatas.ExecSQL;

[/Code]
Edited by CanonTG

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.