PDA

Ver la Versión Completa : trabajar con horas minutos segundo y centesimas


jafera
06-05-2015, 13:12:22
Buenas días a todos.

Como pongo en el título del post, necesito trabajar con horas, minutos, segundos y centesimas.
Se trata de una aplicación para llevar el control de unas carreras de bicicletas, tanto en lineas (salida-llegada, donde solo hay la posición y horas, minutos y segundos para el tiempo), como en cotra reloj (donde además intervienen las centesimas para los desempates en caso de entrar dos corredores en el mismo segundo).

El planteamiento es básico, en un edit entrar el dorsal y en un maskedit entrar el tiempo, se puede complicar entrando solo el dorsal y que al pulsar enter se capture el tiempo del reloj interno, pero bueno de momento no es el caso.

Una de las dudas que tengo es como manejo las centesimas ya que el formato de la hora es 01:02:03.

Luego ordenaria la tabla por tiempos descendente y insertaría un campo autonumérico con la posición.

No se, si alguien me puede brindar alguna idea que me ayude a clarificar mis dudas pues estaré agradecido como siempre con vuestras ayudas.

Gracias por adelantado.

Josep

AgustinOrtu
06-05-2015, 14:01:18
Los tipos TDateTime y TTime te permiten trabajar hasta en milisegundos si mal no recuerdo

En realidad el formato de la hora es 01:02:03.456

Los MSec los extraes con DecodeTime, o bien DecodeDateTime y creo que habia una MSecOf

jafera
06-05-2015, 17:24:25
Gracias Agustin.

Entendido lo del formato, lo único es como lo hago para entrar manualmente un tiempo en el formato hh:mm:ss.ms?.
En un programa realizado en VB y tablas acces, para entrar los tiempos se usa una mascara en un edit con el formato de la hora y un edit al lado con el formato de los milisegundos.
Por lo que he visto en la estructura de la tabla, se guarda el tiempo en un campo y los milisegundos en otro campo.
En mi tabla Firebird 2.5, como guardaria estos datos?

Gracias

Josep

ecfisa
07-05-2015, 01:34:13
Hola Josep.

Firebird soporta sin problemas horas, minutos, segundos y milisegundos con 4 dígitos decimales en un campo tipo TIMESTAMP. El problema es si los componentes con que te estas conectando también lo hacen...

Saludos :)

AgustinOrtu
07-05-2015, 01:42:40
Podes pedir los ms como un numero entero

Despues usas la funcion EncodeTime (o EncodeDateTime) en la cual envias como parametros la hora, minutos, segundos y milisegundos y te devuelve un TTime o TDateTime respectivamente


var
conMsec: TTime;
conMsec := EncodeTime(15, 25, 30, 1234); // 15:25:30.1234


No se en Access, habria que revisar la documentacion, pero si soporta el tipo TDateTime entonces con que la aplicacion use SQL con parametros, y configurando el parametro como TDateTime, no deberia haber problemas

sino almacenas los milisegundos en un campo aparte de tipo integer de toda la vida por ejemplo

En firebird como te dice ecfisa no hay problemas