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:
//-----------
Código Delphi
[-]FDQuery.SQL.Add('UPDATE tabla ');
FDQuery.SQL.Add('fecha_nacimiento = :fecha_nacimiento');
FDQuery.SQL.Add('WHERE id = :id ');
if (DatetimePicker1.Format <> '') then FDQuery.ParamByName('fecha_nacimiento').IsNull
else FDQuery.ParamByName('fecha_nacimiento').AsDate := DatetimePicker1.Date;
FDQuery.ParamByName('id').AsInteger := StrToInt(LabeledEdit1.Text);
FDQuery.ExecSQL;
//------------
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:
" [FireDAC] [Phys] [Mysql] -335. Parameter [FECHA_NACIMIENTO] data type is unknown. Hint: specify
TFDParam.DataType or assign TFDParam value before Prepare/Execute call. "
|
Sé que la forma de asignar el valor Null con este nuevo componente no es la correcta, y según el mensaje
de error debo de especificarle el tipo de dato, pero no sé como hacerlo. Espero que me puedan ayudar.
Gracias.