El título puede no ser del todo exacto, pero no se me ocurría otro mejor. Gracias de antemano a todos.
Es una cuestión algo tonta: me he planteado si lo estaré haciendo de un modo óptimo o por lo menos mínimo.
El problema:
Tengo que comparar 4 fechas más o menos lo que quiero saber es:
Cita:
fecha_creacion<=fecha_aprobacion<=fecha_emision_f_ant<=fecha_emision_f
|
Si esta comparación no se cumple no puedo dejar grabar los cambios.
Problema, los datos se obtienen de una consulta, están en DBEdits y algunos pueden llegar en blanco, y ese es el problema. Tengo un pequeño monstruo de if-else anidados para asegurarme de que no comparo cuando llegan en blanco y sí cuando tienen datos... que no me acaba de convencer.
Código Delphi
[-]function fechasValidas: Boolean;
begin
if (fecha_aprobacion.Text<>'') then
begin
result := StrToDate(fecha_creacion.Text)<=StrToDate(fecha_aprobacion.Text);
if (result=FALSE) then
exit;
if (fecha_emision_f_ant.Text<>'') then
begin
result := (StrToDate(fecha_aprobacion.Text)<=StrToDate(fecha_emision_f_ant.Text));
if (result=FALSE) then
exit;
if (fecha_emision_f.Text<>'') then
result := (StrToDate(fecha_emision_f_ant.Text)<=StrToDate(fecha_emision_f.Text));
end
else
begin
result := StrToDate(fecha_creacion.Text)<=StrToDate(fecha_aprobacion.Text);
if (result=FALSE) then
exit;
if (fecha_emision_f.Text<>'') then
result := (StrToDate(fecha_aprobacion.Text)<=StrToDate(fecha_emision_f.Text));
end;
end
else
result := TRUE;
end;
Peculiaridades:
fecha_creacion: nunca llega en blanco.
fecha_aprobacion: si no existe las otras dos (fecha_emision_f_ant y fecha_emision_f) tampoco.
PD: Me ha costado escribir todo esto... creo que me voy a tomar una galleta para recuperarme
.