Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 16-08-2006
Carlos Hurtado Carlos Hurtado is offline
Miembro
 
Registrado: dic 2004
Posts: 30
Poder: 0
Carlos Hurtado Va por buen camino
un evento que funcione con cambio de fecha

Hola amigos , tengo un problema que talvez hurgando mas en el foro encontraria la solucion pero hasta el momento no he podido resolverlo.

Uso Delphi7, IBX y Firebird 1.5.

Estoy programando un sistema de fichas medicas, y estas exigen que el registro de la edad del paciente este actualizado.

El servidor no se apagara en la noche por lo que no puedo hacer una rutina que haga la actualizacion de la edad al encender el computador, ni tampoco confiar en que todos los dias alguien hara un clic para ejecutar una rutina a proposito.

Existe la posibilidad de hacer esto detectando el cambio de fecha para activar un procedimiento almacenado.

Si es asi, como se detecta el cambio de fecha.

Desde ya muchas gracias.
Responder Con Cita
  #2  
Antiguo 16-08-2006
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 24
maeyanes Va por buen camino
Lo primero que se me ocurre es que cada vez que leas un registro de la tabla pacientes desde tu aplicación, verifiques si está cumpliendo o cumplió años, actualices la fecha y lo guardes de nuevo, todo esto antes de mostrarlo en la forma.

Otra forma sería que crees una pequeña aplicación que haga esto mismo y la pongas a que se ejecute diariamente a tal hora, mediante una tarea programada.


Saludos...
Responder Con Cita
  #3  
Antiguo 16-08-2006
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 24
ContraVeneno Va por buen camino
Hombre, pues con que captures la fecha de nacimiento sería suficiente ¿no crees?

La edad sería un simple cálculo.
__________________


Última edición por ContraVeneno fecha: 17-08-2006 a las 01:58:09.
Responder Con Cita
  #4  
Antiguo 16-08-2006
Carlos Hurtado Carlos Hurtado is offline
Miembro
 
Registrado: dic 2004
Posts: 30
Poder: 0
Carlos Hurtado Va por buen camino
Lamentablemente la solucion no sirve

Agradezco enormemente su rapida respuesta, pero las condiciones del sistema, a mi parecer hace inviable las propuestas de uds.

Periodicamente se manda informacion al Ministerio de Salud con estadisticas relacionadas con las edades y , en un universo de 30.000 registros los consumos de tiempo serian importantes.

Insisto, lo ideal seria capturar el cambio de fecha para ocupar recursos en horas en que el servidor esta casi desocupado de tal modo que durante el dia se encuantre toda la base actualizada.

Gracias.
Responder Con Cita
  #5  
Antiguo 16-08-2006
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 24
maeyanes Va por buen camino
Pues la opción de una tarea programada que lance un proceso que haga lo que desees te puede servir. El proceso lo mandas a partir de las 00:00 Horas diario y que solo trabaje con los pacientes que cumplen años en ese momento.

También habría que saber que S.O. tiene el servidor.
Responder Con Cita
  #6  
Antiguo 16-08-2006
nemesio nemesio is offline
Miembro
 
Registrado: nov 2005
Ubicación: Isla de Margarita, Venezuela
Posts: 377
Poder: 19
nemesio Va por buen camino
Si sacas un reporte por Fecha de Nacimiento para enviar al Ministerio, solo tienes que restar la Feha actual y ya tienes la edad.
Lo otro que puedes hacer es usar un TTimer, que verifique cada cierto tiempo si se cambió la fecha del sistema, si es cierto, haces los cálculos que deseas realizar.

Saludos
Responder Con Cita
  #7  
Antiguo 16-08-2006
Avatar de Paoti
Paoti Paoti is offline
Miembro
 
Registrado: may 2003
Ubicación: Monterrey. N.L., México
Posts: 612
Poder: 22
Paoti Va por buen camino
y porque no usas una vista,


en la que un campo de la consulta o vista sea:


Obtener_Años( sysdate - Tabla.Fecha_nacimiento ) as Edad



desconozco la funcion en firebird que te devuelve la fecha y si exista una función que te devuelva los años entre dos fechas, pero eso seria la solución
__________________
Estudia y anda en la calle.... que asi serás el doble de listo que los demás...

análisis de información
análisis y diseño de sistemas

Paoti Rios Reséndiz
Responder Con Cita
  #8  
Antiguo 17-08-2006
bismarck_sierra bismarck_sierra is offline
Miembro
 
Registrado: ene 2004
Ubicación: Morelia, Michoacán, México
Posts: 70
Poder: 21
bismarck_sierra Va por buen camino
Que tal

Yo también soy de la idea de que solo debes guardar la fecha de nacimiento y calcular la edad cuando lo requieras.

Código SQL [-]
SELECT CAST((CAST('NOW' AS DATE) - fecha_nacimiento) / 365 AS SMALLINT) AS edad FROM pacientes

La sentencia anterior te da los años, si requieres más exactitud te recomendaría que hicieras un procedimiento almacenado para que calcule, años, meses, días.

Saludos
Bismarck
Responder Con Cita
  #9  
Antiguo 17-08-2006
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 24
ContraVeneno Va por buen camino
yo preferiría usar datediff(yy, fecha)

eso de dividir entre 365, como que se olvida de los años bisiestos y demás menesteres.
__________________

Responder Con Cita
  #10  
Antiguo 17-08-2006
bismarck_sierra bismarck_sierra is offline
Miembro
 
Registrado: ene 2004
Ubicación: Morelia, Michoacán, México
Posts: 70
Poder: 21
bismarck_sierra Va por buen camino
Estoy de acuerdo contigo Contraveneno, no es exacto, es por eso que recomendaba que hiciera un SP si queria exactitud.

Lo que comentas de DateDiff, al parecer no lo soporta Firebird 1.5. Tendrías que recurrir a una UDF adicional.

Saludos
Bismarck
Responder Con Cita
  #11  
Antiguo 17-08-2006
Mick Mick is offline
Miembro
 
Registrado: may 2003
Posts: 405
Poder: 22
Mick Va por buen camino
Dos opciones:

-Usar un simple campo calculado, de modo que a efectos del programa ni se enteraria de que no es un campo real.

- Si periodicamente se generan unas estadisticas, pues lo logico es que se calcule o actualize la edad precisamente en ese proceso de envio de estadisticas. Alguien tendra que darle a algun boton para generar las estadisticas y enviarlas, pues en ese momento antes de generarlas, realizar el proceso que sea para calcular la edad y listo.

Saludos
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
Evento en una fecha piccolo2101 Varios 2 01-02-2006 13:10:22
Trigger Para Grabar Fecha Cambio Registro ASAPLTDA MS SQL Server 3 19-04-2005 19:35:59
Evitar cambio de Fecha buitrago Varios 1 27-09-2004 16:52:45
Capturar El Evento Del Cambio De Foco En Un Form murci API de Windows 11 21-01-2004 09:39:13
Cambio de Formato de Fecha no funciona DJ VMan Varios 1 01-08-2003 12:28:27


La franja horaria es GMT +2. Ahora son las 20:38:41.


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