Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 10-06-2007
Avatar de MaMu
MaMu MaMu is offline
Miembro
 
Registrado: abr 2006
Ubicación: Argentina
Posts: 863
Poder: 19
MaMu Va por buen camino
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
__________________
Código Delphi [-]
 
try 
ProgramarMicro(80C52,'Intel',MnHex,True);
except
On Exception do
MicroChip.IsPresent(True);
end;
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Problema con Access en red Tala Varios 5 13-12-2006 14:58:59
"floating point overflow" en campocalculado ANXO Conexión con bases de datos 0 22-01-2006 16:59:58
Problema con Access diegolf Conexión con bases de datos 1 23-12-2004 09:35:59
Problema con Access senpiterno Conexión con bases de datos 1 19-10-2004 07:19:48
Problema con Access davidgaldo Conexión con bases de datos 7 03-02-2004 22:38:33


La franja horaria es GMT +2. Ahora son las 22:10:20.


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
Copyright 1996-2007 Club Delphi