Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Hora en un dbgrid (https://www.clubdelphi.com/foros/showthread.php?t=28412)

Nbull 19-12-2005 13:26:56

Hora en un dbgrid
 
Hola A tod@s, estoy trabajando con access, delphi7 y componentes Ado, tengo un dbgrid enlazado a traves de un Adoquery con consulta sql a un campo llamado [Hora].

El problema que tengo es que me muestra una fecha y seguido la hora que guarde cuando entro el usuario y yo solo quiero que me muestre la hora.

He buscado por los foros y no he encontrado nada. No se si alguien me podra echar una mano.

Un saludo y gracias.

vtdeleon 19-12-2005 14:18:06

Saludos

Busca la propiedad DisplayFormat del campo y establece el formato que deseas desplegar 'hh:mm:ss'. No lo he probado, solo supongo que funcionara;)

yusnerqui 19-12-2005 14:21:39

En el diseño de tu tabla de Access debes asignar el formato que desees, por ejemplo: "Hora corta", al campo Fecha/Hora, y eso bastará para que se muestre correctamente en Delphi.

Saludos.

Nbull 19-12-2005 16:36:57

Hola Vtdeleon no encuentro la Propiedad DisplayFormat del Dataset tengo el siguiente Código:

Código Delphi [-]
DataSAccesos.DataSet.Fields[1].dispalyFormat:='hh:nn:ss';
Me dice que identificador sin declarar.¿Me puedes decir como llamas tu a esa propiedad?

Gracias.

vtdeleon 19-12-2005 18:28:40

Saludos

Esa propiedad se consigue mediante el Editor de campo (Fields Editor) del dataset. Agregas los campos que tiene la tabla, seleccionas el campo, de inmediato aparece la propiedad en el Object Inspector.

ronalg 20-12-2005 16:24:03

Espero te Sirva
 
Código Delphi [-]
uses DateUtils;
Campo:=Timeof(Valor);

Campo puede ser cualquier TDateTime o TTime sea nativo de delphi o de la base de datos

Valor puede ser también TDateTime, TTime o TDate sea nativo d dlephi o de la base de datos

existe tambien un dateof( )

Nbull 21-12-2005 10:03:28

Gracias a los dos por responderme, en primer lugar he mirado lo que me dijiste Vtdeleon y sigo sin encontrar esa propiedad en el object inspector, debo ser un zoquete por que le he dado mil vueltas y no lo encuentro¿Esta dentro de las propiedades del adoquery o del Dbgrid?


Ronalg, no se a que te refieres cuando dices

Cita:

uses DateUtils;Campo:=Timeof(Valor);
¿Que propiedad del campo modificas?
¿A que te refieres con valor?:confused:

Gracias de nuevo a los dos un saludo.

ronalg 22-12-2005 01:12:06

Lo siento supuse
 
Supongo que para meter datos al campo del tipo DATE haces algo asi:

Código Delphi [-]
table.insert;
table.fieldbyname('hora').value:=Now;
o
table.fieldbyname('hora').value:=date();
o
table.fieldbyname('hora').value:=today();
o
table.fieldbyname('hora').value:=time;
o
//si estas usando un componente calendario
table.fieldbyname('hora').value:=calendario.date;
.
.
.
.
.
table.post

todos estos (now, date(), today(), time) contiene valores del tipo TDateTime que esta definido asi:

Código Delphi [-]
type TDateTime = type Double;

Cita:

Description

Most VCL objects represent date and time values using the TDateTime type. The integral part of a TDateTime value is the number of days that have passed since 12/30/1899. The fractional part of a TDateTime value is fraction of a 24 hour day that has elapsed.

Following are some examples of TDateTime values and their corresponding dates and times:

0 12/30/1899 12:00 am
2.75 1/1/1900 6:00 pm
-1.25 12/29/1899 6:00 am
35065 1/1/1996 12:00 am
To find the fractional number of days between two dates, simply subtract the two values, unless one of the TDateTime values is negative. Similarly, to increment a date and time value by a certain fractional number of days, add the fractional number to the date and time value if the TDateTime value is positive.
When working with negative TDateTime values, computations must handle time portion separately. The fractional part reflects the fraction of a 24-hour day without regard to the sign of the TDateTime value. For example, 6:00 am on 12/29/1899 is –1.25, not –1 + 0.25, which would be –0.75. There are no TDateTime values between –1 and 0.
osea que contiene si o si la fecha y la hora siempre.

para sacar solo la hora sin la fecha debes hacer uso de DATEOF y para sacar solo la hora de TIMEOF, estas funciones estan en la unidad "DateUtils" que debes ponerla a mano en el USES de tu unidad.

Código Delphi [-]
table.insert;
table.fieldbyname('hora').value:=timeof(Now);
o
table.fieldbyname('hora').value:=timeof(date());
o
table.fieldbyname('hora').value:=timeof(today());
o
table.fieldbyname('hora').value:=timeof(time);
.
.
.
.
table.post

Esto extraera solo la hora.

espero te sirva

yusnerqui 22-12-2005 13:57:26

Hola

Disculpa mi insistencia pero, ya probaste la recomendación que te di de:

Cita:

Empezado por yusnerqui
En el diseño de tu tabla de Access debes asignar el formato que desees, por ejemplo: "Hora corta", al campo Fecha/Hora, y eso bastará para que se muestre correctamente en Delphi.

eso a mi me funciona perfectamente, a ti no??:confused:

Saludos

Nbull 23-12-2005 10:49:27

Cita:

Empezado por yusnerqui
Hola

Disculpa mi insistencia pero, ya probaste la recomendación que te di de:

eso a mi me funciona perfectamente, a ti no??:confused:

Yunerqui no se por que pero a mi no me funciona, el campo Hora de mi base de datos es del tipo Fecha/Hora y como mascara Hora Corta.

Cita:

Empezado por ronalg
Supongo que para meter datos al campo del tipo DATE haces algo asi:

Ronalg, no lo hago asi, dado que trabajo con componentes AdoQuery, y hago consultas del tipo SELECT * FROM....

Gracias a los dos por intentar ayudarme, seguire investigando, si hay alguien que pueda hecharme una mano le estare muy agradecido.

Un saludo y gracias de nuevo.

yusnerqui 16-01-2006 16:20:42

Mejor tarde que nunca
 
Creo que me tardé un poco para esta respuesta, quezás ya encontraste la solución, pero de cualquier manera será útil para futuros usuarios con el mismo problema.

Tu me dices que:

Cita:

el campo Hora de mi base de datos es del tipo Fecha/Hora y como mascara Hora Corta
Pero yo no te hablo de máscara sino de FORMATO, pon el formato a hora corta y después nos cuentas.

Saludos Yusnerqui

Fernando 16-01-2006 17:21:59

Hola Delphimaniacos:

(adoquery1.fieldbyname('fecha') AS TDateTimeField).DisplayFormat:= 'hh:nn:ss'

Saludos.

Nbull 16-01-2006 18:29:59

Hola Yusnerqui y Fernando ( por cierto, Tocayo mio;) ),me funcionó la solución de Fernando.Muchisimas gracias a los dos.

Un saludo.


La franja horaria es GMT +2. Ahora son las 08:23:29.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi