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

Respuesta
 
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
  #2  
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
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
__________________
Código Delphi [-]
 
try 
ProgramarMicro(80C52,'Intel',MnHex,True);
except
On Exception do
MicroChip.IsPresent(True);
end;
Responder Con Cita
Respuesta



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