Trabajo con Access, y tengo una tabla con datos de animales, donde quiero mostrar la edad del animal en base a su fecha de nacimiento. Para calcular la edad hago lo siguiente:
Código Delphi
[-]
function Edad(Fecha:TDateTime):String;
var A, AA, M, MM, D, DD: Word;
Anio, Mes, Dia: double;
begin
DecodeDate(Fecha, A, M, D);
DecodeDate(Date, AA, MM, DD);
Anio := Int(AA - A);
if( M <= MM ) then
Mes := MM - M
else
begin
Mes := MM+12-M;
Anio := Anio -1;
end;
if( D <= DD ) then
Dia := DD - D
else
begin
Dia:=DD+MonthDays[IsLeapYear(AA),MM]-D;
Mes := Mes -1;
end;
if Mes < 0 then
begin
Anio := Anio - 1;
Mes := 12 + Mes;
end;
Result := Format('%.0fA-,%.0fM-,%.0fD', [Anio, Mes, Dia]);
end;
En mi Query, en este caso QHembras, dandole doble-clic y luego Add New Field, creo el campo calculado Edad (QHembrasEdad), y en el momento de calcular la edad, hago lo siguiente:
Código Delphi
[-]
procedure TArmarFamilia.QHembrasCalcFields(DataSet: TDataSet);
begin
try
QHembrasEdad.Value:=Edad(QHembras.FieldByName('nacimiento').AsDateTime);
except
on Exception do
QHembrasEdad.Value:='Error';
end;
end;
El nuevo campo calculado, esta visualizado en el DBGrid, ya que añadi un nuevo TColumn, y lo asocie al campo Edad. En tiempo de ejecucion, me salta el error "List index out of bounds (3)", y no me muestra ningun dato, salvo en el campo Edad, que me muestra en todos "Error". Yo tengo 29 campos, pero solo visualizo algunos, los demas estan con visible:=False; . En que me estoy equivocando o donde puede estar mi error, no me puedo dar cuenta.
Saludos y Gracias