¿Como evitar datos duplicados en access 2010?

Tengo una base de datos muy sencilla, con dos tablas. Una de ellas contiene el número de ingreso de los pacientes de una residencia ( clave principal) y nombre y apellidos. La otra contiene el número, y las consultas hospitalarias a especialistas( fecha, especialidad, hora y algún dato más). A veces modifican la fecha de una cita y no te avisan que es un cambio en una cita q ya tenía, el problema es que al registrarla, sin darse cuenta tengo dos citas, la antigua y la nueva, con distinta fecha u hora, sin saber cual es la válida. Mi pregunta es, como evitar al introducir el nuevo dato en el formulario estas duplicidades, es decir que bloquee registros donde el campo número de paciente y especialidad coincidan siempre y cuando la fecha de la cita sea posterior a la del día en que se hace el registro ( porque habrá fechas anteriores de consultas pasadas de esta especialidad, pero futuras solo puede haber una). De momento lo solucioné insertando un informe con las citas futuras del residente en el formulario de registro, pero sólo es a modo de aviso y podríamos no fijarnos. No me he explicado muy bien, además mis conocimientos en access son muy limitados.

2 respuestas

Respuesta
1

Si los conocimientos son escasos voy a extenderme. Personalmente haría un formulario con subformulario. El formulario con los datos del paciente que nunca cambian como número, nombre FechaNac, etc. y el subformulario con las citas, pero... supongamos que los datos de las citas los ponen en el formulario Citas y los rellenas en el orden NumPaciente, especialidad, fecha... En vista diseño del formulario, en las propiedades del cuadro de texto Fecha, en Eventos-Antes de actualizar puedes poner

If dcount("numpaciente","citas","numpaciente= " & me.numpaciente &" and especialidad= '" & me.especialidad & "' and fecha<#" & me.fecha & "#")<=1 then

Msgbox"ya existe una cita en esta especialidad con fecha anterior", vbokonly, "Yo te aviso, tu sabrás"

Docmd. Cancelevent

end if

Te explico. Si pone un numpaciente que ya estaba citado en una especialidad que ya estaba guardada y escribe una fecha, le aparece un mensaje de que ya existe esa cita. Como no has puesto de lo que quieres que haga en ese caso, solo le he puesto que no la acepte y el cursor se vuelva al campo Fecha.

De todas formas, si ves que parece complicado y quieres, repito, si quieres, mándame un mensaje a [email protected] y te mando un ejemplo. Si lo haces, en el asunto del mensaje pon tu alias Mara, ya que si no sé quien me escribe ni los abro.

Respuesta
1

Yo modificaría la tabla de citas creando un indice sin duplicados, por ejemplo:

IdPaciente+IdEspecialidad+fechaCita.... Sin duplicados. Con esto al repetir la cita te genera el error 3022, este lo capturo en el evento Antes de Actualilzar, algo como

Sub .....

on error goto hay_error

hay_error_exit:

     cancel=true  

exit sub

hay_error:

        if err.number=3022 then

               msgbox "Ya existe la cita en esta fecha para el paciente",vbInformation,"Error..."

        else

                msgbox Err.Description,vbinformation,"Error.."

        end if

       resume hay_error_exit

end  sub

Inclusive el código se puede modificar para filtrar el formulario con la información del paciente para editar fecha y hora de la cita-

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas