Duvida sobre timestamp

Delphi

12/05/2010

Galera eu to com uma duvida, eu estou começando a estuda delphi e estamos começando a ver delphi + mysql, meu professor pediu para que criassemos um programa para controle de entrada e saida de pessoal no qual deveria marcar a data e hora de entrada/saida.

no meu banco de dados eu criei uma tablea com os campos hr_entrada e dat_entrada, em dat_entrada eu coloquei como date e no delphi usei o comando date para pegar a data do sistema e salvar no BD, até ai tudo bem.

Mas quando eu uso o comando time pra pegar a hora do sistema e guardar no BD no cmpo hr_entrada, o delphi diz que o valor não é um valor timestamp valido.

ai fica a duvida, eu coloquei o campo como time, porque diabos o valor tem que ser em timestamp? e aproveitando, como passo o valor do comando time para timestamp?

se alguem souber me ajudar, agradeço muito.
Júnior

Júnior

Curtidas 0

Melhor post

Wilson Junior

Wilson Junior

12/05/2010

Caro chara Junior,

Timestamp é um tipo de campo do banco de dados que armazena Data e Hora no mesmo campo. (no Delphi TDateTime).
Date é um tipo de campo do banco de dados que armazena somente Data. (no Delphi TDate)
Time é um tipo de campo do banco de dados que armazena somente Hora. (no Delphi TTime)

Portanto, se você declarou no seu banco de dados Timstamp, deverá setar Now, "MeuDataSet_CampoData.AsDateTime: = Now;".
Now siginifica data e hora atual.
Time siginifica hora atual.
Date siginifica data atual.

Obs.: mesmo tendo um campo no banco de dados do tipo Date, Time ou TimeStamp, para o ClientDataSet sempre deve ser utilizado o AsDateTime para, pois não possui um AsDate ou AsTime.

Qualquer dúvida é só perguntar.

Espero ter colaborado.
GOSTEI 1

Mais Respostas

Carlos Mazzi

Carlos Mazzi

12/05/2010

Eu não sei como vc está usando no seu Delphi, mas sempre usei a passagem por parametro do mesmo, ou .Value ou . AsString.   Ex:     MeuDataSet_CampoData.AsString: = DateToStr(Now());   MeuDataSet_CampoHora.AsString:= TimeToStr(Now());   Ou qualquer parte do sistemas, por exemplo um Label...   TimeToStr(Now()); // Assim o comando Now(), traz tudo que preciso quanto a datas e horas atual.
GOSTEI 0
Júnior

Júnior

12/05/2010

certo, começo a entender um pouco melhor, mas tipo, no meu banco o campo hr_entrada é do tipo time e quando eu tento passar pra ele as horas do sistema usando o comando Time, ele da um erro, falando que o valor não é um valor timestamp, so que o campo não é timestamp.

que que eu faço?
eu copiei o trecho do programa que ta dando isso:

    DMCOntrole_Aluno.SDAlunos.Edit;
    if (DMCOntrole_Aluno.SDAlunoscod_aluno.Value=strtoint(EditCodAluno.Text)) then
    begin
      DMCOntrole_Aluno.SDAlunosdat_entrada.Value:=Date;
      DMCOntrole_Aluno.SDAlunoshr_entrada.Value:=Time;
      DMCOntrole_Aluno.SDAlunosdat_saida.Clear;
      DMCOntrole_Aluno.SDAlunos.Post;
      DMCOntrole_Aluno.SDAlunos.ApplyUpdates(0);
    end;

Detalhe: o campo dat_entrada que esta recebendo o Date não deu problema. Sinceramaente ontem eu fiquei até 2 da manha tentando descobri um jeito, mas não consegui.

vocês sbaem qual pode ser o problema?

Valeu pelas respostas de antes.
GOSTEI 0
Carlos Mazzi

Carlos Mazzi

12/05/2010

Pois é meu chapa... fiz o teste, abri meus códigos, e aqui funciona certinho!,     eu só alteraria, de DMCOntrole_Aluno.SDAlunoshr_entrada.Value:=Time;   para   DMCOntrole_Aluno.SDAlunoshr_entrada.AsString := TimeToSTR(Now());     ai fechou meu amigo.   tenta ver.. se da certo. aqui foi na primeira.
GOSTEI 0
Júnior

Júnior

12/05/2010

Oi e ai cara, então eu tive aula hoje e apresentei o erro pro meu professor, ele disse que o que tava dando o erro era o applyupdate(0).

so que ele não conseguiu descobrir qual era o erro, ele fez as mudanças no codigo do mesmo jeito que você fez, so que mesmo assim deu o erro no upplyupdate, você saberia qual o erro?
GOSTEI 0
POSTAR