Delphi - Actualizar campo en una tabla paradox segun fecha

 
Vista:

Actualizar campo en una tabla paradox segun fecha

Publicado por Nando (26 intervenciones) el 18/10/2004 00:22:47
Hola: De nuevo por aquí. El tema es así: Trabajo bajo delhi versión 5.
Necesito actualizar el campo edad de una tabla paradox, segun la fecha campo DataNasc. respecto a la fecha actual de la pc.

Yo tengo esta rutina, la procedure que está a seguir:

procedure TDM.Table1CalcFields(DataSet: TDataSet);begin if formatdatetime('MMDD',Table1DataNasc)>formatdatetime('MMDD',Now) then Talbe1Idade.AsInteger := strtoint(formatdatetime('YYYY',Now))-strtoint(formatdatetime('YYYY',Table1DataNasc))-1 else Talbe1Idade.AsInteger := strtoint(formatdatetime('YYYY',Now))-strtoint(formatdatetime('YYYY',Table1DataNasc));end;

Cuando Run , me sale el mensaje: Incopatibles types: TDateTime and TdateField.

Creí podría ser que el campo Edad que estaba como 'A' lo cambié para data 'D' , igulándolo así con el campo 'DataNasc' que está tambien como 'D' .
pero igual , vuelvo a ejecutar RUN y me sale el mísmo mensaje..

Estoy errandole . en qué. me pueden dar una mano???
Agradezco infinitamente a quienes lo hagan.
Nando

Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Actualizar campo en una tabla paradox segun fec

Publicado por nadie (43 intervenciones) el 18/10/2004 08:12:22
Hay una cosa que no entiendo, ¿para qué demonios necesitas almacenar en la tabla la edad si ya tienes guardada la fecha de nacimiento?.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Porque...........

Publicado por Nando (26 intervenciones) el 18/10/2004 13:51:25
Porque el campo Edad es mostrado en otro form junto con los demás campos.
Nando
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Porque...........

Publicado por Kwerty (112 intervenciones) el 18/10/2004 14:17:00
Siento no poder dejar ninguna ayuda útil, ya que no he trabajado antes con Paradoz. Pero si tienes un campo fecha de nacimiento, para poner la edad sólo necesitas saber la fecha de nacimiento y hacer los calculos necesarios. Así le quitas peso a la tabla y solucionas los problemas de incongruencias. Si no me equivoco, para calcular la edad sería una cosa así (Date-FechaNacimiento)/365.
Suerte.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Actualizar campo en una tabla paradox segun fec

Publicado por Virum (484 intervenciones) el 18/10/2004 23:18:28
Busca en el foro, a principios de mes se hizo esta misma pregunta, el día 2 concretamente.

En Foro-Delphi pones la palabra edad, aprietas el botón buscar y ......

Suerte. Virum.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Actualizar campo en una tabla paradox segun fec

Publicado por nadie (43 intervenciones) el 19/10/2004 08:20:47
Mejor que lo que te han dicho de calcular la edad como (Hoy-Fecha_Nacimiento)/365 yo haría lo siguiente:

DecodeDate(Hoy, vAnoHoy, vMesHoy, vDiaHoy);
DecodeDate(Fecha_Nacimiento, vAnoNac, vMesNac, vDiaNa);

Edad := vAnoHoy - vAnoNac;

Pero jamás almacenaría la edad en la B.D. Eso es una barbaridad.

Sería como tener dos campos para almacenar, por ejemplo el sexo. Un campo para indicar si es hombre y otro para almacenar si es mujer y, claro mutuamente excluyentes.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Actualizar campo en una tabla paradox segun fec

Publicado por Kwerty (112 intervenciones) el 19/10/2004 14:14:42
No sé si estoy equivocado, pero según el método de Nadie pueden darse edades erróneas: Yo puedo haber nacido en 1974 y ser el 2004 y no tener 30 años. Depende también del mes que hayas nacido. La mejor opción es la función YearsBetween de la Unit DateUtils, a mi parecer.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Actualizar campo en una tabla paradox segun fec

Publicado por Nando (26 intervenciones) el 19/10/2004 16:39:04
Antes que nada , quiero agradecer a todos quienes me intentan ayudar.
Bueno; Lo de Kwerty es verda, sólo que el motivo de tando problema es que trabajo en Delphi 5 y esto Dateutils es a partír de la versión 6.

Por otro lado contestando sobre almacenar la edad en un campo 'Edad' de la tabla , no veo xq´sea una barbaridad, ya que ésta es simplemente un número de 2 cifras y mostrada en un formulario con los demás campos. De pronto me equivoco , pero no veo claramente cual es el incoveniente.
Nando
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Actualizar campo en una tabla paradox segun fec

Publicado por Kwerty (6 intervenciones) el 19/10/2004 17:10:37
Utilizar información redundante en las tablas no está recomendado, pero evidentemente siempre se debe hacer todo pensando en la funcionalidad y eficiencia del producto final. Si crees que va a serte útil, lo usas y punto. El problema que puede ocurrirte es que la base de datos te pese más y, ciertamente el mayor problemas, es producir información que puede no estar actualizada. La cosa es, deberás ir actualizando periódicamente la información de la tabla para que la edad esté bien (puede que pasado mañana ya haya cumplido un año más) y esto es algo engorroso, sobre todo teniendo en cuenta que el cálculo de a partir de los años lo hace un ordenador en nada. Con respecto a lo de DateUtils, hay una forma de emular la función YearsBetween. Es una cosa así: Anos:=trunc ((Fecha2-Fecha1)/365.25); Pruébala a ver si te va bien y suerte.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Actualizar campo en una tabla paradox segun fec

Publicado por Nando (26 intervenciones) el 21/10/2004 15:47:20
Antes muchas gracias por sus opiniones
Ahora si que se ha puesto salado. A ver....... voy a dar un primer paso :

En Uses declaro SysUtils, ( no olvidar que estoy en la versión 5).

uses SysUtils;

begin
table1.Edit ;
table1Edad:= trunc((Date - table1DataNasc.) / 365);
table1.Post;
end;

En el caso de estar correcto lo coloca en OnClacField de la table 1 ó lo coloco en OnCreate de Events del Form principal? ó que modificaciones uds harían?

Nando

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar