Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 19-07-2013
Avatar de radenf
radenf radenf is offline
Miembro
 
Registrado: oct 2007
Ubicación: Viña del Mar,Chile
Posts: 608
Poder: 19
radenf Va por buen camino
Cita:
Empezado por jafera Ver Mensaje
Necesito algo dinámico en cuanto al año en curso ya que no voy a estar año tras año variando el valor del año del que restar y he pensado en una variable año que tengo para otros menesteres en el programa.
Estimado jafera :

Yo utilizo siempre esta función, que alguien que no recuerdo, alguna vez publicó en el foro:

Código Delphi [-]
procedure TForm1.DBEdit1Change(Sender: TObject);
function Edad(FechaNacimiento:string):integer;
var
iTemp,iTemp2,Nada:word;
Fecha:TDate;
begin
Fecha:=StrToDate(FechaNacimiento);
DecodeDate(Date,itemp,Nada,Nada);
DecodeDate(Fecha,itemp2,Nada,Nada);
if FormatDateTime('mmdd',Date) <
FormatDateTime('mmdd',Fecha) then Result:=iTemp-iTemp2-1
else Result:=iTemp-iTemp2;
end;
begin
Label1.Caption:=intToStr(Edad (EditFecha.Text));
end;

Utiliza la propiedad OnChange del DBEdit en el que visualizas la fecha y te entrega en años la edad actualizada en el Label1

Ojalá te sirva
Salu2
Responder Con Cita
  #2  
Antiguo 20-07-2013
Avatar de radenf
radenf radenf is offline
Miembro
 
Registrado: oct 2007
Ubicación: Viña del Mar,Chile
Posts: 608
Poder: 19
radenf Va por buen camino
Corrijo la última línea del código, debiendo ser:

Código Delphi [-]
Label1.Caption:=intToStr(Edad (DBEdit1.Text));

Perdón y Salu2
Responder Con Cita
  #3  
Antiguo 20-07-2013
Avatar de jafera
jafera jafera is offline
Miembro
 
Registrado: may 2007
Ubicación: Llagostera (Girona)
Posts: 585
Poder: 20
jafera Va por buen camino
Hola a todos de nuevo.

Gracias por vuestras repuestas y vuestro tiempo.

Igual no me expresé bien, no quiero calcular la edad en el formulario de entrada de corredores, esto ya lo hago y funciona.

Lo d guardar la ya lo hago en la tabla de las carreras, así siempre se que edad y categoris tenía el corredor en el momento de celebrarse la carrera.

Lo que necesito es hacer un update masivo despues de hacer la importacion de datos del txt que me reste del año actual el año de la fecha de nacimiento y asi tengo la edad, sin importar dia ni mes.

Saludos

Josep
Responder Con Cita
  #4  
Antiguo 20-07-2013
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.681
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
De la forma que te he dicho lo hace automáticamente siempre.
Responder Con Cita
  #5  
Antiguo 20-07-2013
Avatar de jafera
jafera jafera is offline
Miembro
 
Registrado: may 2007
Ubicación: Llagostera (Girona)
Posts: 585
Poder: 20
jafera Va por buen camino
Gracias de nuevo, pero me da error al crear la tabla con el campo computed.

Me dice expression evaluation no supported.

Esta es la creacion de la tabla

Código SQL [-]
 
CREATE TABLE "CTR0003"
(
  "DORSAL" INTEGER,
  "DORSAL2" INTEGER,
  "COGNOM1" VARCHAR(25) CHARACTER SET ISO8859_1 COLLATE ES_ES,
  "COGNOM2" VARCHAR(25) CHARACTER SET ISO8859_1 COLLATE ES_ES,
  "NOM" VARCHAR(20) CHARACTER SET ISO8859_1 COLLATE ES_ES,
  "CODI_CAT" INTEGER,
  "NACIO" VARCHAR(3) CHARACTER SET ISO8859_1 COLLATE ES_ES,
  "LLICENCIA" VARCHAR(14) CHARACTER SET ISO8859_1 COLLATE ES_ES,
  "DNI" VARCHAR(12) CHARACTER SET ISO8859_1 COLLATE ES_ES,
  "CODIUCI" VARCHAR(12) CHARACTER SET ISO8859_1 COLLATE ES_ES,
  "CODI_CLUB" INTEGER,
  "CLUB" VARCHAR(25) CHARACTER SET ISO8859_1 COLLATE ES_ES,
  "ABR_CLUB" VARCHAR(3) CHARACTER SET ISO8859_1 COLLATE ES_ES,
  "PUBLICITAT" VARCHAR(25) CHARACTER SET ISO8859_1 COLLATE ES_ES,
  "SEXE" VARCHAR(1) CHARACTER SET ISO8859_1 COLLATE ES_ES,
  "FEDERAT" VARCHAR(1) CHARACTER SET ISO8859_1 COLLATE ES_ES,
  "DATA_NAIX" DATE,
  "EDAT" COMPUTED BY (EXTRACT(YEAR FROM 'NOW' - DATA_NAIX)),
  "CATEGORIA" VARCHAR(5) CHARACTER SET ISO8859_1 COLLATE ES_ES
);

Mi Firebird es 1.5

Saludos

Josep
Responder Con Cita
  #6  
Antiguo 20-07-2013
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.681
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Cita:
Empezado por jafera Ver Mensaje
Me dice expression evaluation no supported.
"EDAT" COMPUTED BY (EXTRACT(YEAR FROM 'NOW' - DATA_NAIX)),
¿El campo data_naix es date o timestamp?, ¿estás usando dialecto 1 ó 3?
Prueba a crearlo después, algo así como:

Código SQL [-]
alter table CTR0003 add edat computed by (extract(year from ('now'-data_naix)))

Ah, creo que olvidaste el paréntesis después del from, no recuerdo si era así, te hablo de memoria.
Responder Con Cita
  #7  
Antiguo 20-07-2013
Avatar de jafera
jafera jafera is offline
Miembro
 
Registrado: may 2007
Ubicación: Llagostera (Girona)
Posts: 585
Poder: 20
jafera Va por buen camino
Pues tampoco, me sigue dando el mismo error

Ya lo dejo para el lunes, que mañana tengo que montar la piscina en casa

Saludos

Josep
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Actualizar campo con dblookupcombobox MLROJO Conexión con bases de datos 4 18-06-2011 10:37:00
actualizar campo codigo voldemmor Varios 6 14-03-2009 01:54:31
Actualizar campo de dbgrid jorelivi Varios 44 27-04-2007 22:23:19
actualizar un campo juangabriel1786 API de Windows 1 19-10-2006 19:30:55
Actualizar un campo micayael Firebird e Interbase 2 28-10-2005 21:42:14


La franja horaria es GMT +2. Ahora son las 17:08:28.


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