Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Tablas planas
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 07-11-2012
jsc jsc is offline
Miembro
 
Registrado: nov 2003
Posts: 144
Poder: 21
jsc Va por buen camino
problema campo fecha/hora en access

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
Código Delphi [-]
var t:Ttime ;
...
t:=cbhoras.text+':'+cbminutos.text+':00' ;
edtid.text := formatdatetime('ddmmyyyyhhnnss',fh);
query1.SQL.Add('INSERT INTO CALENDARIO (Id,fecha,hora,evento,notas,estado,aviso,email)'+chr(13)
                    + ' VALUES (:id,:fecha,:hora,:evento,:notas,:estado,:aviso,:email)') ;
query1.ParamByName('id').asstring := edtid.Text ;
query1.ParamByName('fecha').asstring := datetostr(dtfecha.Date) ;
query1.ParamByName('hora').asstring := timetostr(t) ;
query1.ParamByName('evento').asstring := edtevento.Text ;
query1.ParamByName('notas').asstring := edtnotas.Text ;
query1.ParamByName('aviso').asstring := cboxaviso.text;
if checkboxaviso.State = cbchecked then query1.parambyname('estado').Value := true
                                                 else query1.ParamByName('estado').value := false ;
query1.ParamByName('email').asstring := edtemail.Text ;
...
el registro se agrega sin ningun problema; ahora bien, a la hora de mostrar los datos en el dbgrid ejecutando:
Código Delphi [-]
query1.SQL.Add('SELECT * FROM CALENDARIO WHERE FECHA >= :fecha ORDER BY FECHA') ;
query1.ParamByName('fecha').asstring := datetostr(monthcalendar1.Date) ;
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
xxx 07/11/2012  30/12/1899 5:04:00
en cambio si pongo el campo hora en access como texto en lugar de como fecha/hora me guarda bien los datos pero eso no me interesa porque luego no puedo ordenar las consultas por fecha y por hora
no se que mas cambios hacer; he probado todo lo que se me ha ocurrido
Código Delphi [-]
formatdatetime('h:mm:ss',t)
Imágenes Adjuntas
Tipo de Archivo: jpg delphi_horasMAL.JPG (7,3 KB, 8 visitas)
Tipo de Archivo: jpg delphi_horasBIENaccess.JPG (10,7 KB, 10 visitas)

Última edición por Casimiro Notevi fecha: 07-11-2012 a las 19:08:19.
Responder Con Cita
  #2  
Antiguo 07-11-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.043
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
¿Pero por qué guardas la fecha y hora en formato texto?
Responder Con Cita
  #3  
Antiguo 07-11-2012
jsc jsc is offline
Miembro
 
Registrado: nov 2003
Posts: 144
Poder: 21
jsc Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
¿Pero por qué guardas la fecha y hora en formato texto?
No.
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
Imágenes Adjuntas
Tipo de Archivo: jpg datosaccess.JPG (9,9 KB, 7 visitas)
Responder Con Cita
  #4  
Antiguo 07-11-2012
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.282
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por Casimiro Notevi Ver Mensaje
¿Pero por qué guardas la fecha y hora en formato texto?
Yo creo que por temas de ordenación, filtros y demás es mejor guardarlo como fecha hora, sino puede ser que las ordenaciones por fecha (por ejempo) no salgan como uno esperaría.

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.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #5  
Antiguo 07-11-2012
jsc jsc is offline
Miembro
 
Registrado: nov 2003
Posts: 144
Poder: 21
jsc Va por buen camino
Cita:
Empezado por Neftali Ver Mensaje
Yo creo que por temas de ordenación, filtros y demás es mejor guardarlo como fecha hora, sino puede ser que las ordenaciones por fecha (por ejempo) no salgan como uno esperaría.

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.
gracias por el interes
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
Responder Con Cita
  #6  
Antiguo 07-11-2012
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.282
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
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.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #7  
Antiguo 07-11-2012
jsc jsc is offline
Miembro
 
Registrado: nov 2003
Posts: 144
Poder: 21
jsc Va por buen camino
Cita:
Empezado por Neftali Ver Mensaje
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.
SOLUCIONADO!!!
Muchisimas gracias Neftali. Con tu ayuda y jugando con
Código:
formatdatetime('h:nn:ss',query1.fieldbyname('hora').value
he conseguido lo que me proponia

para comparar la hora me funciona de la siguiente manera
Código:
if query1.FieldByName('hora').value < formatdatetime('h:nn:ss',now)
para mostrar datos en un statusbar; asi
Código:
statusbar1.Panels[3].text := query1.fieldbyname ('fecha').AsString + ' '+query1.fieldbyname('hora').value;
una ultima cosa ya por curiosidad; esto que me ha ocurrido es normal o algo no tengo bien definido y de ahi todos estos problemillas?
Responder Con Cita
  #8  
Antiguo 08-11-2012
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.282
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por jsc Ver Mensaje
una ultima cosa ya por curiosidad; esto que me ha ocurrido es normal o algo no tengo bien definido y de ahi todos estos problemillas?
Yo no he visto que tengas nada mal definido.

Un saludo.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #9  
Antiguo 09-11-2012
jsc jsc is offline
Miembro
 
Registrado: nov 2003
Posts: 144
Poder: 21
jsc Va por buen camino
Cita:
Empezado por Neftali Ver Mensaje
Yo no he visto que tengas nada mal definido.

Un saludo.
Gracias nuevamente Neftali
Me has sido de gran ayuda
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Problema con campo fecha Access rocolza Tablas planas 8 12-01-2012 22:41:58
Actulizar hora de campo fecha amerika111 Firebird e Interbase 2 14-07-2011 02:26:45
Agrupar por fecha, teniendo en el campo fecha y hora El_Raso Firebird e Interbase 3 18-03-2010 22:05:19
Edición campo Fecha-hora fjcg02 Conexión con bases de datos 3 16-05-2008 14:40:08
Extraccion fecha de un campo fecha y hora matti Firebird e Interbase 3 26-04-2007 19:48:11


La franja horaria es GMT +2. Ahora son las 17:53:36.


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
Copyright 1996-2007 Club Delphi