Estoy desarrollando una base de datos en el programa Microsoft Acess para una clínica.

Les parecerá extraño este e-mail pero necesito la siguiente ayuda:
Estoy desarrollando una B.DE en Access 97 para una clínica y la llevo en un 70%. Les quiero entregar en uno de los informes un consolidado del personal y es allí donde encuentro el obstáculo.
Resulta que debo garantizar que cuando ocurra una novedad de ingreso o retiro de nómina de uno de los empleos internos las fecha de un nuevo reingreso no se cruze con el rango de fecha del anterior ingreso-retiro (me explico):
Pepito perez Tiene como fecha de ingreso el 15/03/2001 y lo retiré el 30/3/2001 . Pero a pepito perez lo volvieron a contratar el 15/6/2001 (Novedad de Ingreso) y por error del administrador que alimenta la base de datos le colocó como fecha de reingreso el 20/3/2001. Es de lógico que el sistema debe detectar que ese reingreso no debe cruzarse y que debe ser superior o igual al 30/3/2001 ya que es imposible que pepito tenga 2 contratos...
El concepto lo tengo claro:
Yo estoy razonando de la siguiente manera:
Tengo 2 campos: fecha de ingreso y fecha de retiro:
Prohíba ingresar fecha de retiro1 si fecha de retiro1 is <= fecha ingreso1. De lo contrario permita el ingreso del dato.
Ahora, cuando se crea una nueva novedad:
Prohíba ingresar fecha de ingreso2 si fecha de ingreso2 is <= fecha de retiro1
Otro caso: Prohíba ingresar fecha de ingreso2 si fecha de retiro1 isNull.
Ahora, ¿qué fue lo que me quedó grande?... Que no sé como capturar el valor del último registro de fecha retiro (fecharetiro1) ya que los condicionales que coloco en Visula Basic me consultan sobre el registro o fila activa, me explico:
Registro1: fechaingreso1: 15/3/2001..... Fecharetiro1: 30/3/2001.
Registro2: Fechaingreso2: 6/6/2001.... Fecharetiro2: 7/7/2001.
Ahora intencionalmente voy a meter :
Registro3 Fechaingreso3: 30/6/2001... Que se debe hacer.. Que el sistema consulta el valor de fecharetiro2 y tome la decisión si dejar entrar el dato o no.
Pero el sistema en vez de consultar fecharetiro2 espera a que entre fecha retiro3 y toma la decisión sobre fecharetiro3 y no con fecharetiro2 como lógicamente de ser.
Tengo el manual para craeciónde aplicaciones para usuarioa avanzados de
Access y no lo he podido hacer
¿Ustedes dirán y para qué esto?... Por lo siguiente... Yo estoy generando un listado de pacientes atendidos por los doctores en las fechas que el consultante quiera... Y quiero mostrar adjunto de ese informe cual era la nómina de doctores en ese periodo consultado y así mostar cuales "no atendieron pacientes"..
Rogándoles una pronta respuesta de su parte ... Estoy urgido ya que debo entregarlo lo más pronto posiblr y me detiene este informe.
Atentamente:
Luis Fernando Arana
Cali (valle) Colombia.
[email protected]
Respuesta
1
Creo que es sencillo,
Dim RsTmp as recordset
set rstmp=datos.openrecordset("Select Max(FechaRetiro2) as UltFecRetiro from [Tabla]")
if fechaingreso3<rstmp!UltFecRetiro then
Msgbox "TENEMOS UN ERROR"
endif
' Estoy suponiendo que
' Tenemo una variable tipo Database (DATOS) que apunta a la base de datos que contiene las tablas
Para cualquier otra duda no te cortes

3 respuestas más de otros expertos

Respuesta
1
La verdad que ya llevas la solución bastante avanzada, y aunque estas letras queden muy claras para ti, no lo están para una persona que no conoce la aplicación. Si todo es como yo he entendido, lo puedes solucionar con la siguiente instrucción SELECT:
SELECT max(FechaRetiro)
FROM TuTabla
WHERE Empleado = CodigoElegido
Te devuelve el valor máximo de la fecha, es decir la última vez que se dio de baja para ese empleado. Si lo que quieres es la última vez que se dio de alta, te vale la misma cambiando FechaRetiro por FechaIngreso.
También, por si necesitases las N últimas fechas:
SELECT TOP 5 FechaIngreso
FROM TuTabla
WHERE Empleado = CodigoElegido
ORDER BY FechaIngreso DESC
Este ejemplo te devuelve las 5 últimas, Cambiando el valor de TOP puedes obtener las que quieras, incluso si le pones el valor 1, te devolvería el mismo resultado que el primer ejemplo.
Pd. Si te ha solucionado el problema, no olvides valorarme, si no dime tus dudas.
Respuesta
-1
Entiendo lo que quieres hacer, ¿podrías enviarme algo de código para que lo analice con más clama y pueda darte una respuesta mejor?
Respuesta
-1
Una solución que veo para tu problema es la que tu apuntas. Antes de entrar un registro nuevo, debes comprobar que los datos son correctos. Si la introducción de los datos la realizas en un formulario solo puedes consultar los datos del registro actual. El access es un poquito flojo en este aspecto.
Lo que deberías hacer es una macro, o un modulo, que te preguntara los datos, comprobara si son correctos e insertara en la BD el registro.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas