Ir al contenido


Foto

[RESUELTO] Veo un Error al enviar la hora de mi pc al campo Hora


  • Por favor identifícate para responder
35 respuestas en este tema

#1 lsedr

lsedr

    Advanced Member

  • Miembros
  • PipPipPip
  • 272 mensajes

Escrito 03 noviembre 2010 - 11:47

Hice esto
ADOTable1.FieldByName('Hora').AsString:=timetostr(time);  Para enviar la hora del reloj de mi pc al campo Hora de una Tabla de una BD SQL 2005, pero resulta que el campo me guardo esto (30/12/1899) 01:29:04 a.m.) 

Solo me intereza que guarde la hora, y no la fecha y la hora, que ademas esa fecha salio erronea y no se por que.

El tipo de dato del campo 'Hora' esta declarado como Datetime.

que hago ??
  • 0

#2 eduarcol

eduarcol

    Advanced Member

  • Administrador
  • 4.483 mensajes
  • LocationVenezuela

Escrito 04 noviembre 2010 - 07:05

El campo datetime es un campo numerico, donde la parte entera almacena la Fecha y la parte decimal la Hora, si solo le pasas la hora la parte entera quedara en cero, mostrando asi la fecha que estas viendo, para guardar el valor completo podrias hacer esto:



delphi
  1. ADOTable1.FieldByName('Hora').AsDateTime:= Now;


  • 0

#3 felipe

felipe

    Advanced Member

  • Administrador
  • 3.283 mensajes
  • LocationColombia

Escrito 04 noviembre 2010 - 07:19

O usar el FormatDateTime:



delphi
  1. ADOTable1.FieldByName('Hora').AsDateTime:= FormatDateTime('dd/mm/yyyy hh:mm',Now);




Saludos
  • 0

#4 eduarcol

eduarcol

    Advanced Member

  • Administrador
  • 4.483 mensajes
  • LocationVenezuela

Escrito 04 noviembre 2010 - 07:28

O usar el FormatDateTime:



delphi
  1. ADOTable1.FieldByName('Hora').AsDateTime:= FormatDateTime('dd/mm/yyyy hh:mm',Now);




Saludos


No lo he probado pero asi deberia dar error ya que FormatDateTime te devuelve un String ;)
  • 0

#5 felipe

felipe

    Advanced Member

  • Administrador
  • 3.283 mensajes
  • LocationColombia

Escrito 04 noviembre 2010 - 08:52


O usar el FormatDateTime:



delphi
  1. ADOTable1.FieldByName('Hora').AsDateTime:= FormatDateTime('dd/mm/yyyy hh:mm',Now);




Saludos


No lo he probado pero asi deberia dar error ya que FormatDateTime te devuelve un String ;)


Si, es verdad, pero solo basta con añadirle el StrToDateTime, puede que funcione.


Saludos!
  • 0

#6 lsedr

lsedr

    Advanced Member

  • Miembros
  • PipPipPip
  • 272 mensajes

Escrito 04 noviembre 2010 - 10:32

y que tal si mejor modifico el campo para que en ves de ser 'Hora' sea 'Fecha_Hora' y asi me guarda la fecha y la hora en un solo campo ??
  • 0

#7 Fenareth

Fenareth

    Advanced Member

  • Administrador
  • 3.486 mensajes
  • LocationMexico City

Escrito 04 noviembre 2010 - 10:57

y que tal si mejor modifico el campo para que en ves de ser 'Hora' sea 'Fecha_Hora' y asi me guarda la fecha y la hora en un solo campo ??


No es mala idea :), todo depende de si eso va de acuerdo a lo que necesitas (y)

Saludox ! :)
  • 0

#8 felipe

felipe

    Advanced Member

  • Administrador
  • 3.283 mensajes
  • LocationColombia

Escrito 04 noviembre 2010 - 10:58

y que tal si mejor modifico el campo para que en ves de ser 'Hora' sea 'Fecha_Hora' y asi me guarda la fecha y la hora en un solo campo ??


Pues eso ya depende de tu necesidad y conveniencia, por ejemplo, si no tuvieras que usar esa hora para alguna operación adicional, podrías solo dejarla como texto.


Saludos!
  • 0

#9 lsedr

lsedr

    Advanced Member

  • Miembros
  • PipPipPip
  • 272 mensajes

Escrito 04 noviembre 2010 - 02:06

Bueno en verdad creo que no me conviene pues en el futuro necesitaria hacer consultas de los clientes que se registran por semana, mes o año.

Necesitaria manejar los campos 'Hora' y 'Fecha' de forma individual.

Entonces como hago para que me guarde la hora en el campo 'Hora' y la fecha en el campo 'Fecha' ????

Probe con ADOTable2.FieldByName('Hora').Asdatetime:=now;
pero vuelve a guardarme la fecha seguido de la hora.

Quiero guardar cada campo por separado


  • 0

#10 eduarcol

eduarcol

    Advanced Member

  • Administrador
  • 4.483 mensajes
  • LocationVenezuela

Escrito 05 noviembre 2010 - 07:34

Tu puedes guardar eso en campos unicos, lo que debes es recuperar solo el valor que necesites.  :)
  • 0

#11 lsedr

lsedr

    Advanced Member

  • Miembros
  • PipPipPip
  • 272 mensajes

Escrito 05 noviembre 2010 - 11:38

Tu puedes guardar eso en campos unicos, lo que debes es recuperar solo el valor que necesites.  :)


Si eso es lo que quiero, pero como lo hago es la pregunta ?
  • 0

#12 lsedr

lsedr

    Advanced Member

  • Miembros
  • PipPipPip
  • 272 mensajes

Escrito 05 noviembre 2010 - 11:38

Tu puedes guardar eso en campos unicos, lo que debes es recuperar solo el valor que necesites.  :)


Si eso es lo que quiero, pero como lo hago es la pregunta ?
  • 0

#13 eduarcol

eduarcol

    Advanced Member

  • Administrador
  • 4.483 mensajes
  • LocationVenezuela

Escrito 05 noviembre 2010 - 11:47

En firebird seria con un cast



sql
  1. SELECT CAST(mifechahora AS TIME) FROM prueba



Lo que no se es si tu manejador lo soporte, pruebalo y nos comentas
  • 0

#14 lsedr

lsedr

    Advanced Member

  • Miembros
  • PipPipPip
  • 272 mensajes

Escrito 05 noviembre 2010 - 11:53

En firebird seria con un cast



sql
  1. SELECT CAST(mifechahora AS TIME) FROM prueba



Lo que no se es si tu manejador lo soporte, pruebalo y nos comentas


Y que es Firebird ??
Y es que en SQL server 2005 express no se puede guardar la fecha y la hora por separado ??
  • 0

#15 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.419 mensajes
  • LocationRepública Dominicana

Escrito 05 noviembre 2010 - 12:05

...
Y es que en SQL server 2005 express no se puede guardar la fecha y la hora por separado ??


Claro amigo, sólo debes crear dos campos, uno para cada uno y usar el FormatDateTime como comenta Felipe.

Saludos.

EDITO: Quise decir campos y no tablas.
  • 0

#16 lsedr

lsedr

    Advanced Member

  • Miembros
  • PipPipPip
  • 272 mensajes

Escrito 05 noviembre 2010 - 12:46

me muestra este error el delphi 7


delphi
  1. Datamodule3.ADOTable1.FieldByName('Hora').AsDatetime:=FormatDateTime('hh:mm',Now);
  2. Datamodule3.ADOTable1.FieldByName('Fecha').AsDatetime:= FormatDateTime('dd/mm/yyyy',Now);



el error es este

[Error] Unit4.pas(57): Incompatible types: 'TDateTime' and 'String'
[Error] Unit4.pas(58): Incompatible types: 'TDateTime' and 'String'
[Fatal Error] Project1.dpr(9): Could not compile used unit 'Unit4.pas'


  • 0

#17 Fenareth

Fenareth

    Advanced Member

  • Administrador
  • 3.486 mensajes
  • LocationMexico City

Escrito 05 noviembre 2010 - 01:49

La función FormatDateTime regresa un valor de tipo String amigo, por lo que harías tu asignación así:



delphi
  1. Datamodule3.ADOTable1.FieldByName('Hora').AsString:=FormatDateTime('hh:mm',Now);
  2. Datamodule3.ADOTable1.FieldByName('Fecha').AsString:= FormatDateTime('dd/mm/yyyy',Now);



(y)

Saludox ! :)
  • 0

#18 Fenareth

Fenareth

    Advanced Member

  • Administrador
  • 3.486 mensajes
  • LocationMexico City

Escrito 05 noviembre 2010 - 02:06

Por cierto amigo.... contestanto a tu pregunta, Firebird es un sistema de administración de bases de datos relacional (tomado de aquí Firebird :D)....

Es decir, un motor para el manejo de bases de datos relacionales...., digamos que es una opción como los son Access, MySQL, SQLServer, Oracle, claro !!!, cada una con sus particularidades y alcances (y)

Saludox ! :)
  • 0

#19 lsedr

lsedr

    Advanced Member

  • Miembros
  • PipPipPip
  • 272 mensajes

Escrito 05 noviembre 2010 - 10:16

La función FormatDateTime regresa un valor de tipo String amigo, por lo que harías tu asignación así:



delphi
  1. Datamodule3.ADOTable1.FieldByName('Hora').AsString:=FormatDateTime('hh:mm',Now);
  2. Datamodule3.ADOTable1.FieldByName('Fecha').AsString:= FormatDateTime('dd/mm/yyyy',Now);



(y)

Saludox ! :)


Ya lo hice pero hay un problema, me muestra la fecha bien, pero en la hora me pone una fecha viejisima delante,y luego la hora.

Esto es lo que me sale en el campo 'Hora'    30/12/1899 12:02:00 a.m.    La hora sale bien, pero esa fecha porque sale al lado ???
  • 0

#20 felipe

felipe

    Advanced Member

  • Administrador
  • 3.283 mensajes
  • LocationColombia

Escrito 05 noviembre 2010 - 10:27

Ya lo hice pero hay un problema, me muestra la fecha bien, pero en la hora me pone una fecha viejisima delante,y luego la hora.

Esto es lo que me sale en el campo 'Hora'    30/12/1899 12:02:00 a.m.    La hora sale bien, pero esa fecha porque sale al lado ???


Normalmente esa fecha viejísima que ves, corresponde a la fecha de inicio o la menor permitida por la BD.

Si no ves otra alternativa desde la base de datos para guardar el campo solo con la hora, lo mejor será maquillar ese dato para que solo muestre la parte interesada, quizá una función Copy.


Saludos!
  • 0




IP.Board spam blocked by CleanTalk.