Grabar en la Base de datos solo la Fecha de un DateTimerPicker
Buenas Tardes Amigos
Utilizo Delphi 7 y Sql Server Express 2008 y estoy utilizando un Componente DateTimerPicker para Grabar la Fecha en la base de datos pero me Graba la fecha y la Hora y me interesa solo la fecha. En la base de datos tengo un Campo llamado Fecha del tipo DateTime, silo lo coloco de tipo date me da un error porque el DateTimepicker le envia tambien la Hora. Utilizo en Siguiente Codigo en delphi:
|
¿Y por qué no usas un tipo de dato sólo fecha?, un date.
|
Hola hondaalberto.
La propiedad Date del TDateTimePicker devuelve un valor del tipo TDate por lo que no puede estar allí el problema. No conozco Sql Server Express 2008, pero proba de este modo:
Saludos. |
cambie el campo a tipo date y probe tambien haciendolo como dice Ecfisa y me devuelve el siguiente error.
--------------------------- Debugger Exception Notification --------------------------- Project RetailPos.exe raised exception class EOleException with message 'Error al convertir una cadena de caracteres en fecha y/u hora'. Process stopped. Use Step or Run to continue. --------------------------- OK Help --------------------------- |
Hola.
A ver... proba de este modo: Si no habrá que esperar que alguien con conocimientos de MS SQL te oriente. Por cierto, ¿ Que componentes estas usando y de que tipo es el campo "Fecha" ? Saludos. |
Si no habrá que esperar que alguien con conocimientos de MS SQL te oriente.
Por cierto, ¿ Que componentes estas usando y de que tipo es el campo "Fecha" ? Saludos. Me sigue dando el Mismo error. Conecto la Base de datos utilizando ADOConection y el campo Fecha si lo declaro del tipo Date en la Base de datos me develve el error que mostre en uno de los mensajes anteriores y si esta declarado del tipo datetime me graba la fecha mas muchos ceros en la parte dnd va la hora. |
Si el campo es del tipo date y tú le pasas el valor del datetime, que también es un date, no te puede salir el mensaje: "'Error al convertir una cadena de caracteres en fecha y/u hora'."
Así que estás mirando en el sitio que no corresponde, estás conectado a otra base de datos, estás pasando el valor de un tedit normal y no es un tdatetime, etc. |
me sigue dando el error... y el campo es del tipo date...
|
Da más información o pon el código fuente que lo veamos (copia->pega), que no somos adivinos ;)
|
El código en donde estoy utilizando el Componente DatetimePicker es el Siguiente:
|
Este es el codigo de las Dos tablas en donde intento enviar esos datos de fecha:
|
El Registro en la Base de Datos se Graba en el Campo Fecha de la Siguiente Manera:
2012-08-06 00:00:00.000 lo que necesito es que se grabe solo la fecha sin todos esos ceros. |
Manejo de fechas en SQL Server Usando DatetimePicker
Buenas noches amigos y muchas gracias por anticipado
Utilizo Delphi 7 y Sql Server Express 2008 y para el manejo de las fechas utilizo un Componente DateTimePicker pero al momento de Guardar los datos en la base datos se guardan de la siguiente manera: 2012-08-06 00:00:00.000 lo que necesito es que se grabe solo la fecha sin todos esos ceros (El tipo de datos de este campo Fecha es Datetime). Utilizo este código en Delphi:
Otro Incoveniente que tengo con esta situación es que al momento de hacer un select con esos datos no me devuelve ningún valor incluso cuando utilizo un Like%% no me muestra nada. He probado utilizando el tipo de Datos Date en la Base de datos pero cuando el registro se va a grabar en la base de datos me da un error de conversion al tipo de datos fecha u hora. ¿Qué puedo hacer para solucionar esto? |
Hola
Creo que deberias modificar el campo a tipo date solamente y luego verificar el tipo de formato que darselo al datetimepicker. saludos |
Hola Creo que aquí
está creando el campo fecha del tipo fecha y hora, ¿o no? por eso requiere que también ingreses la hora cosa que si pones el DTPFecha.Date falta la hora (DTPFecha.DateTime es completo). El tema es que si queres que solo sea fecha deberias redefinir el campo... Me parece que es eso :p Saludos Aca algo dice - Referencia microsoft |
Muchas Gracias Caral y Martin por sus respuestas he probado lo que me han indicado cambiando el Campo al tipo de datos Date y me devuelve el siguiente error:
En el datetimepicker tengo las Siguientes Propiedades configuradas Format = 2012/08/06 Kind = dtkDate Time = 12:00:00 AM DateFormat =dfShort |
Muchas Gracias Martin por tu respuesta he probado lo que me has indicado cambiando el Campo al tipo de datos Date y me devuelve el siguiente error:
Código Delphi [-]--------------------------- Debugger Exception Notification --------------------------- Project RetailPos.exe raised exception class EOleException with message 'Error al convertir una cadena de caracteres en fecha y/u hora'. Process stopped. Use Step or Run to continue. --------------------------- OK Help --------------------------- En el datetimepicker tengo las Siguientes Propiedades configuradas Format = 2012/08/06 Kind = dtkDate Time = 12:00:00 AM DateFormat =dfShort |
Hola hondaalberto.
Combiné tus dos últimos hilos bajo el título mas significativo por tener ambos el mismo contenido. Por favor no dupliques los temas, lee el punto [6] de la [guía de estilo]. Ya sea que no recibas respuesta o las obtenidas no resuelvan tu problema, lo correcto es continuar con el hilo inicial para no duplicar la información. Saludos y gracias por tu colaboración. :) |
Deberías verificar los campos que quedaron almacenados en el DataSet, es decir, cuando le das con el botón derecho sobre el componente y agregas los campos (si es que lo haces) puede hacer referencia al tipo anterior, en ese caso, borra lo campos y volvé a incorporarlos. Tambien deberias intentar indicando el tipo de dato que vas a escribir.
Por
Proba esta animalada... :)
y vemos... Ah!! tambien veo en tu mensaje que guarda la fecha separada por guion (-)y segun el formato que pasaste recien es barra (/) Pd: Haciendo unas pruebitas y poniendo el año primero como indicas da error de conversion... si lo coloco dd/mm/yyyy anda joya |
Cita:
¿Cómo sabes que en la BD se graba con ese formato?, ¿no será que tú lo visualizas con alguna utilidad y se presenta con ese formato? :confused: |
A ver... vamos por pasos:
1 - En MS SQL Server no existia el campo de tipo Fecha (Date) solo; solo existia el campo de tipo FechaHora (DateTime) A partir de la version 2008 aparecen Date y Time por separado aparte del DateTime de siempre. Pero si ya tenes creada la base de datos y el campo es DateTime te puede servir lo que sigue. 2 - Si queres guardar solamente la fecha y no la hora, en Delphi hace esto: Esto es porque el tipo FechaHora (DateTime en SQL Server y TDateTime en Delphi) estan representados por un numero flotante/real, y guardan la fecha en la parte entera y la hora en la parte decimal. La funcion INT() te devuelve la parte entera de un numero flotante/real 3 - Si no queres que te muestre los 00:00:00 de la hora eso ya es una cuestion de formato, pero si estan en cero quiere decir que solo tiene la fecha, y la hora esta en cero Para que no muestre los ceros tenes dos opciones: - Desde SQL Server: Pero ojo que ahi el tipo del campo devuelto por la consulta pasa a ser String (varchar) Podes ver en la ayuda de la funcion Convert los diferentes formatos que tiene (103 es el formato dd/mm/aaaa) - Desde Delphi: En la Query/Table en la que haces la consulta, agregas el campo y le modificas la propiedad DisplayFormat le pones el valor dd/mm/aaaa (o el formato que mas te guste) De esta forma el campo sigue siendo de tipo DateTime pero se muestra solo la parte de la fecha Bueno, espero te sirva de ayuda esto Saludos |
La franja horaria es GMT +2. Ahora son las 19:13:59. |
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