Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Calculo edad de QRDBtext (https://www.clubdelphi.com/foros/showthread.php?t=87482)

jonydread 13-01-2015 01:23:10

Calculo edad de QRDBtext
 
Hola amigos!
tengo un problema que no logro resolver, necesito poner un calculo de edad segun el dato que entrege un campo qrdbtext.
actualmente uso este para mostrarlo en un listview pero quiero mostrar lo mismo en un reporte de quickrep como podria hacerlo?
Código Delphi [-]
function CalculaEdadCompleta(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('Años: %.0f, Meses: %.0f, Dias: %.0f', [Anio, Mes, Dia]);
end;


Gracias
Saludos!!

Casimiro Notevi 13-01-2015 10:05:04

Si no das más datos ;)
Tienes varias opciones simples, lo más fácil: edad = fechaactual-fechanacimiento

webmasterplc 13-01-2015 18:44:21

BUenas, sigue este hilo Aqui se muestra como calcularla y ademas un compañero me ayuda a colocar la funcion en una dll

jonydread 14-01-2015 03:38:31

gracias estoy revisando el hilo, me explico mejor tengo todo en una base de datos la cual existe una fecha de creación, la funcion calcula edad completa funciona bien para mostrar en listview pero necesito mostrar lo mismo segun la fecha dada en QRDBtext. dejo imagen de como muestra listview y lo que quiero mostrar en un reporte de quickrep


Favor si hay alguna idea agreceria!

ElKurgan 14-01-2015 08:12:29

Se puede hacer poniendo en la banda de detalle del QR una etiqueta simple (QRLabel), a la que llamaremos, por ejemplo, qrlblEdad.
Luego capturas el evento "BeforePrint" de la banda de detalle y pones algo como esto (no tengo el Delphi a mano, asi que escribo de memoria :( ):

Código Delphi [-]
procedure Tform2.qrbDetalleBeforePrint(Sender: TQRCustomBand;
  var PrintBand: Boolean);
begin
  // No conozco el nombre de los campos, pero algo así podría servir.
  qrlblEdad.Caption := CalcularEdadCompleta(QReport1.Dataset.FieldByName('Fecha').AsTDateTime);
end;
Eso si, la función debe estar visible para la unit del informe.

Saludos

jonydread 15-01-2015 02:36:26

#:-)#
Muchas gracias de este modo logre hacerlo.

Saludos!!


La franja horaria es GMT +2. Ahora son las 05:45:37.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi