problema campo fecha/hora en access
2 Archivos Adjunto(s)
hola
tengo una bd en access con dos campos fecha/hora donde en uno almaceno la fecha y en otro la hora desde delphi accedo a la bd por medio de BDE y utilizo un query para hacer consultas, insertar, borrar... registros el problema es que el campo donde almaceno la hora me esta dando problemas; Agrego registros de esta manera el registro se agrega sin ningun problema; ahora bien, a la hora de mostrar los datos en el dbgrid ejecutando: en lugar de mostrar solo la hora, me agrega la fecha por delante; cosa que si miro en la bd de acces no ocurre;agrego dos imagenes donde puede verse lo que me ocurre; en delphi muestra la fecha por delante de la hora y el acces se muestra bien la hora Código:
Id Fecha Hora no se que mas cambios hacer; he probado todo lo que se me ha ocurrido
|
¿Pero por qué guardas la fecha y hora en formato texto?
|
1 Archivos Adjunto(s)
Cita:
Igual no me he explicado bien. los campos fecha y hora son del tipo fecha/hora en access hice una prueba y puse el campo hora como texto en access;pero logicamente eso NO me VALE puesto que necesito ordenar los campos por fecha y por hora |
Cita:
En cuanto al tema de la visualización, yo creo que simplemente eso eso, "problema de visualización", así que basta con que le digas al DBGrid o al DataSet que es ese lugar sólo quieres mostrar la hora. |
Cita:
no se que mas pruebas hacer; como podria hacer eso que me comentas? decirle al dbgrid o al dataset que en el campo hora solo mostraria la hora? si accedo a la bd desde el sql explorer de delphi, también aparecen los datos del campo hora con la fecha por delante; como digo, eso no pasa directamente viendo los datos en access gracias |
Por ejemplo, en el caso del DataSet, si usas una TTable o TQuery, con el botón derecho añades lo campos.
En las imágenes lo hago con TADOTable, pero con las demás debe ser igual. Añades todos los campos: Ahora en el campo que quieres (de tipo fecha/hora) en la propiedad DisplayFormat, puedes asignar la máscara que quieras. En tu caso para para las horas sería, HH:NN o HH:nn:ss (los minutos son NN) Otra forma, por si quieres modificar el texto que se ve en la celda, es seleccionando el mismo campo de tipo fecha/hora (o cualquier otro), acceder al evento OnGetText de ese campo. Ahí también puedes modificar el formato o el texto que aparece. Espero que te sirva. Dime si tienes algún problema. |
Cita:
Muchisimas gracias Neftali. Con tu ayuda y jugando con Código:
formatdatetime('h:nn:ss',query1.fieldbyname('hora').value para comparar la hora me funciona de la siguiente manera Código:
if query1.FieldByName('hora').value < formatdatetime('h:nn:ss',now) Código:
statusbar1.Panels[3].text := query1.fieldbyname ('fecha').AsString + ' '+query1.fieldbyname('hora').value; |
Cita:
Un saludo. |
Cita:
Me has sido de gran ayuda |
La franja horaria es GMT +2. Ahora son las 19:19:38. |
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