Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Delphi 7 (https://www.clubdelphi.com/foros/showthread.php?t=62160)

Gbyte 06-12-2008 23:25:38

Delphi 7
 
Hola amigos!
Gracias a ustedes e sacado todas mis dudas, pero nuevamente necesito nuevamente su ayuda.
Un cliente me pidio una aplicación para el control de pacientes en un laboratorio de donaciones de sangre.
Mi problema se radica, en que cuando un hombre luego de hacer una donación, podrá realizarla nuevamente pasando 90 días; una mujer luego de 120 días.
Y la persona que realize mas de 3 donaciones puede delegar un donante, es decir, he diseñado las tablas sin problemas y la aplicación para almacenar los datos, pero como hago para llevar un control temporal de 90 y 120 dias, o sea, una vez registrado el paciente, que se incremente un contador(si es q se utiliza contador o hay otra manera)solo dia tras dia, y cuando la el medico consulta vea si tiene mas o menos de 90 dias, [o 120dias]. Esto lo estoy desarrollando en delphi 7 e InterBase 6.5.
Desde ya muchas gracias.

roman 07-12-2008 00:11:42

Y, ¿cómo diseñaste las tablas? Porque a mi me da la impresión de que más que un problema de delphi, es un problema de diseño. Así, a bote pronto, pienso que debes tener una tabla

donaciones = (id, donador_id, ultima_donacion)

donde ultima_donacion es la fecha de la última vez en que un persona donó. Entonces, si una persona desea donar, tu sistema compara la fecha actual con la fecha de última donación para determinar si ya han pasado los días requeridos.

// Saludos

Gbyte 08-12-2008 16:20:01

Delphi 7
 
Gracias por responder!
Es verdad estoy trabajando con una sola tabla y coincido en que si una persona desea donar que el sistema compare la fecha actual con la fecha de donacion para ver si pasaron los dias requeridos. Pero como hago para que es el sistema compare y me large el resultado deseado.
Gracias por la atencion.

Delphius 08-12-2008 17:44:21

Hola Gbyte,
Eso dependerá de como estás trabajando.
A lo hace referencia roman es que primero se puede calcular la diferencia de días tranquilamente y sin problemas en vez de ir "cronomentrando" o actualizando algún campo de la tabla que se haya destinado a llevar la cuenta de días.

Para obtener la fecha (e incluso la hora) del día, siempre y cuando el reloj del sistema esté bien, basta con hacer uso de la función Now. Algo así:

Código Delphi [-]
FechaActual := Now;

Ahora nos queda simplemente consultar en la tabla correspondiente la última fecha o visita de extracción de sangre de la persona. Con SQL se hace fácil. Una opción podría ser:

Código SQL [-]
select top 1 los_registros from la_tabla where (fecha_visita <= :ParamFechaActual) 
and (id_paciente = :ParamIDPaciente) order by fecha_visita DESC

Entonces si leemos el campo correspondiente a la fecha de última visita, podemos hacer la diferencia.

Código Delphi [-]
UltimaVisita := ElQuery.FieldByName('fecha_visita').asDateTime;

Dias := DaysBetween(...);

Pero además, se puede tranquilamente, si el motor de base de datos lo permite, ya de entrada evitarnos hacer nosotros el cálculo y dejarlo para que el motor lo haga. La mayoría de los motores, por no decir todos, tienen funciones internas que permiten determinar el día actual. Por ejemplo tranquilamente puede consultarse las diferencias de día haciendo algo así:

Código SQL [-]
SELECT (CURRENT_DATE - fecha_visita) AS Dias
FROM la_tabla
WHERE....

La cuestión Gbyte es que para ayudarte lo más posible deberás comentarnos mejor tus problemas, dudas, inquietudes. Por empezar saber como estructuras tus tablas.

Saludos,


La franja horaria es GMT +2. Ahora son las 09:57:11.

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