CanonTG Posted February 27, 2014 at 05:51 PM Report #546949 Posted February 27, 2014 at 05:51 PM (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 February 27, 2014 at 06:10 PM by nunopicado Adicionadas tags GeShi
nunopicado Posted February 27, 2014 at 06:18 PM Report #546954 Posted February 27, 2014 at 06:18 PM (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 February 27, 2014 at 06:20 PM 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.
CanonTG Posted February 27, 2014 at 06:24 PM Author Report #546956 Posted February 27, 2014 at 06:24 PM O código que meteste não me está a mudar o estado para 1
nunopicado Posted February 27, 2014 at 06:26 PM Report #546958 Posted February 27, 2014 at 06:26 PM 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.
CanonTG Posted February 27, 2014 at 06:27 PM Author Report #546959 Posted February 27, 2014 at 06:27 PM no heisql estão em DATE
nunopicado Posted February 27, 2014 at 06:28 PM Report #546960 Posted February 27, 2014 at 06:28 PM (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 February 27, 2014 at 06:29 PM 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.
CanonTG Posted February 27, 2014 at 06:28 PM Author Report #546961 Posted February 27, 2014 at 06:28 PM yyyy-mm-dd
nunopicado Posted February 27, 2014 at 06:29 PM Report #546962 Posted February 27, 2014 at 06:29 PM 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.
thoga31 Posted February 27, 2014 at 09:15 PM Report #546989 Posted February 27, 2014 at 09:15 PM Os tópico referentes a Delphi devem ser colocados no subquadro de Delphi e não de Pascal. Knowledge is free!
CanonTG Posted February 28, 2014 at 10:20 AM Author Report #547046 Posted February 28, 2014 at 10:20 AM (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 February 28, 2014 at 10:21 AM by CanonTG
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now