FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Problemas con FireDac Delphi 10.4 y asignar valor Null con DateTimePicker
Hola a tod@s. Aunque llevo siguiendo el Foro desde hace tiempo, esta es mi primera intervención.
Siempre he trabajado con Delphi 7, pero ahora he dado el salto a Delphi 10.4 con FireDac y Mysql y me he encontrado con un problemilla que ojalá me puedan resolver. Cuando preparo una consulta para actualizar unos campos lo he hecho siempre de esta manera, es decir, primero monto la consulta utilizando parámetros y después según el valor que tenga el TDateTimePicker pues asigno un valor Null o su fecha, de la siguiente manera: //----------- //------------ Con Delphi 7 este código funciona correctamente y me actualiza el campo en base de datos (tipo Date) a Null si el DataTimePicker está vacío o me pone la fecha seleccionada en caso contrario. Pero FireDac me da un error al asignarle Null, me dice: Cita:
de error debo de especificarle el tipo de dato, pero no sé como hacerlo. Espero que me puedan ayudar. Gracias. Última edición por Casimiro Notevi fecha: 03-09-2021 a las 10:37:06. |
#2
|
||||
|
||||
Hola, no olvides usar las etiquetas cuando pongas código, ejemplo:
En cuanto a tu código, aparte de que no sé para qué poner a null un campo, hay un par de errores a simple vista: Falta el set Y lo otro es esto: No tiene una sintaxis correcta, si format<>'' then fecha_nacimiento.AsDate := null // por ejemplo. O también: Realmente no se sabe qué quieres hacer ahí. |
#3
|
|||
|
|||
Problemas con FireDac Delphi 10.4 y asignar valor Null con DateTimePicker
Gracias por responder y por las indicaciones.
El "Set" si lo utilizo, ha sido un descuido al copiar y pegar, gracias. Lo de poner a Null un campo es porque en base de datos los campos tipo Date suelo dejarlos a NULL cuando no tienen valor. Es por ello que cuando el componente DateTimePicker en un formulario lo dejo en blanco quiero que el campo correspondiente de base de datos "fecha_nacimiento" lo deje a NULL y si selecciono una fecha en el formulario me guarde la fecha en base de datos. No se si será una buena praxis, pero lo llevo haciendo bastante tiempo y funciona bien. El problema es justamente al asignarle el valor NULL al parámetro para que al realizar el UPDATE me ponga el campo de BBDD a NULL. Espero haberme explicado bien. Gracias. |
#4
|
|||
|
|||
Esto es lo que me da el error:
Me sigue saliendo el error indicado anteriormente,: " [FireDAC] [Phys] [Mysql] -335. Parameter [FECHA_NACIMIENTO] data type is unknown. Hint: specify TFDParam.DataType or assign TFDParam value before Prepare/Execute call. " No sé de que otra forma podré asignarle el valor Null. |
#5
|
||||
|
||||
La primera vez que se ejecuta una query si no has definido los parámetros de forma persistente indicando su tipo el analizador no sabe lo qué son así que debes decírselo de forma explícita si pretendes pasar un null para que sepa que tipo de null debe poner.
No uso Delphi 10 pero me he encontrado ese problema ya en Delphi 5 y lo soluciono así:
|
#6
|
|||
|
|||
Muchas gracias!. Tenías razón.
Le he indicado el tipo de dato "ftDate" que para ello he tenido que añadir la librería Data.DB, sino me decía Error: ftDate Undeclared Luego esto me daba error
Y he tenido que ponerlo así:
Y como decía antes, he tenido que añadir la librería:
Solucionado!!. Muchas gracias a todos por vuestra ayuda. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Se puede en delphi asignar un valor a varias variables a la vez | JoAnCa | Varios | 2 | 07-01-2011 18:22:25 |
AsDateTime asignar NULL | Cañones | Conexión con bases de datos | 8 | 22-12-2008 23:21:47 |
horas DateTimePicker NULL?? | metroyd | Varios | 5 | 19-05-2008 19:33:17 |
DATETIMEPICKER no admite fechas NULL | Jose Manuel | Varios | 4 | 05-05-2008 09:01:34 |
Exite función para asignar otro valor si es null | JavierO | Varios | 6 | 04-08-2005 18:22:56 |
|