Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Problema con CampoCalculado en Access (https://www.clubdelphi.com/foros/showthread.php?t=44591)

MaMu 10-06-2007 17:54:17

Problema con CampoCalculado en Access
 
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;
//Caso especial donde no ha cumplido años, pero los cumplirá el mismo mes
  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

MaMu 10-06-2007 18:01:48

SOLUCIONADO

Solito me di cuenta de algo, que razonandolo era lógico. Cuando cree el campo calculado ("add ne field...") no habia incluido los campos reales de la tabla ("add all fields..."), agregándolos funciona todo de maravillas.

Al menos espero que este post, sirva, para quien se encuentre con un error similar, usando Campos Calculados y Access.

Saludos


La franja horaria es GMT +2. Ahora son las 13:28:43.

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