Access. Duda sobre la relación de tablas varios a varios en BD con pacientes de un hospital

He creado una base de datos en access 2007 sobre pacientes de un hospital con sus respectivos datos, pruebas, etc (separados por fichas cada una en formularios diferentes). Tengo un problema en uno de los casos que no sé como terminar de resolver. A ver si me explico para que me podáis entender:

Uno de los formularios se llama "Pruebas" y refiere a cada una de las pruebas, con su fecha y resultados. Como cada paciente puede tener muchas pruebas y en número creciente, he supuesto ese campo autonumérico. Ahora bien, cada paciente debe de tener su prueba nº1... Hasta la que toque (así que debe de reiniciarse la cuenta de autonumérico para cada uno de los pacientes y que no sea general para la totalidad de ellos). Mis tablas son:

-TblFILIACION (En la que estan los datos del paciente y con el Nº de paciente con el campo PATNO como autonumérico)

-TblPRUEBAS (Con el campo PATNO como número y el campo PRUEBANO como autonumérico)

Nota: Esto es una relación uno a varios que vi que no funcionaba y decidí crear una tercera tabla auxiliar para una relación varios a varios

-TbAUXILIARFILPRU (Con los campos PATNO y PRUEBANO como número y claves principales)

No termino de ver claro como ponerlo para que pueda conseguirlo y espero que se entienda

1 Respuesta

Respuesta
2

Jordi: Supongo que tu estructura de Formularios es "FPacientes" como Formulario principal y

"FPacientesPruebasSunF", como subformulario en el que tienes un Vinculo por PATNO.

Si eso es así en Form_Current del SubFormulario, pones éste código

Private Sub Form_Current()
If Me.NewRecord Then
    Me.PRUEBANO = Nz(DCount("PRUEBANO","TblPruebas","PATNO = " & Me.Parent.PATNO),0)+1
End IF
End Sub

Con ésto, en la Tabla Pruebas, te debe de aparecer en cada Paciente un Correlativo, que comience por 1. Un saludo >> Jacinto

Jacinto: Mi estructura de formularios es un formulario principal "FPacientes" y Subformularios separados en pestañas (de los cuales uno es "FPruebas"). No he creado ningún subformulario de la tabla auxiliar "tblAUXILIARFILPRU" porque no se como llegar a estructurarlo (ya que únicamente tiene dos variables, que son las claves principales vinculadas a las otras dos tablas). 

-Sugieres que cree ese subformulario y que el vínculo, principal y secundario, sea únicamente PATNO? Y todos los datos recogidos en el subformulario "FPruebas" como puedo introducirlos mediante formulario si tengo que usar sólo "FPacientesPruebasSunF" que tiene únicamente PATNO y PRUEBANO?

-No soy demasiado experto a la hora de usar VBA y códigos como el que me comentas es la primera vez que lo escucho. Lo probaré a ver si puedo solucionar algo independientemente de la solución que me das sobre añadir el otro Subformulario.

-Por último una pregunta que seguramente os parezca ridícula. Es necesario crear siempre el Form_current ( ) para cada uno de los subformularios? Porque en algunos subformularios trabajo sin ellos y me va a la perfección.

Gracias 

Saludos

Jacinto: Mi estructura de formularios es un formulario principal "FPacientes" y Subformularios separados en pestañas (de los cuales uno es "FPruebas"). No he creado ningún subformulario de la tabla auxiliar "tblAUXILIARFILPRU" porque no se como llegar a estructurarlo (ya que únicamente tiene dos variables, que son las claves principales vinculadas a las otras dos tablas). 

-Sugieres que cree ese subformulario y que el vínculo, principal y secundario, sea únicamente PATNO? Y todos los datos recogidos en el subformulario "FPruebas" como puedo introducirlos mediante formulario si tengo que usar sólo "FPacientesPruebasSunF" que tiene únicamente PATNO y PRUEBANO?

-No soy demasiado experto a la hora de usar VBA y códigos como el que me comentas es la primera vez que lo escucho. Lo probaré a ver si puedo solucionar algo independientemente de la solución que me das sobre añadir el otro Subformulario.

-Por último una pregunta que seguramente os parezca ridícula. Es necesario crear siempre el Form_current ( ) para cada uno de los subformularios? Porque en algunos subformularios trabajo sin ellos y me va a la perfección.

Gracias 

Saludos

Jordi: No siempre es necesario el Procedimiento Form_Current (Al activar Registro) en Formularios y/o SubFormularios. De hecho no es necesario, salvo que tenga que hacer una acción.

En tu caso concreto y según me cuentas el Evento lo has de programar en el SubFormulario FPruebas. No necesitas ninguna Tabla auxiliar ni Otro SubFormulario.

Con mis nombres, lo único que pretendía resaltar era que la estructura fuera esa, pero ya veo que la tienes. En síntesis el código lo "dice" es >> Si me estás añadiendo un Nuevo Registro (una nueva prueba), he de calcular el Número que corresponda, teniendo en cuenta que será, las pruebas que ya tiene éste paciente (Me. Parent. PATNO) y añadirle 1.

Ejemplo >> Jacinto: Paciente 528 ya tenía 2 Pruebas anteriores en TblPruebas ( da igual cuales fueran). Viene a solicitar una, con lo que el SubFormulario FPruebas ya interpreta que lo es (If Me. NewRecord) En el "Formulario padre" estará el Numero 528 con lo cual al contar >> 2+1

No te olvides de Activar el Código en Propiedades del SubFormulario >> Eventos >> Al activar Registro >> [Procedimiento de Evento]

Mis saludos >> Jacinto

Muchas gracias Jacinto! Mañana intentaré probarlo en la oficina porque tengo la sensación de que la solución que me das es exactamente lo que me faltaba para eliminar esos errores mediante el contador y eliminando la tabla y formularios auxiliares.

Saludos

Después de probar el código me funciona a la perfección, gracias!

Saludos

Llevo unos días encontrándome con este error: 

Me ocurre cuando quiero añadir un paciente nuevo a esa base y me deriva a esta línea:

(Está dentro del Form_current)

Sabríais decirme donde está el error?

Jordi: No sé si la estructura con la que pretendes trabajar es la misma de la Pregunta Original que hiciste de Formulario/SubFormulario, por lo que no tengo base para darte una solución.

Lo que si parece claro es que el Me.Parent... no devuelve ningún valor.

Aprovechando que tienes que hacer esas aclaraciones, y dado que el texto de ésta pregunta ya es muy largo y me temo que nadie lo va a leer, mi sugerencia es que generes una pregunta nueva, para así poder beneficiarte de más de una respuesta y adoptar la solución que más se adapte a tus necesidades. Un saludo >> Jacinto

Si Jacinto, es la misma estructura que usaba para el ejemplo original. 

Si que es verdad que si desde el subformulario le doy al botón de "Añadir exploración" todo funciona tal y como me comentaste y sin problemas. 

El error viene cuando desde el formulario principal intento añadir un paciente nuevo (No una EXPLORACIÓN) me aparece ese error.

Gracias Jacinto, voy a generar esa pregunta de nuevo a ver si obtengo soluciones. No sé si con lo que he puesto arriba es suficiente para entender el causante del error.

Saludos

Jordi: Mi sugerencia es que pongas el código, que ya lo has puesto arriba, el error, que también y el momento.

Situando evidentemente lo que explicas. ... Al dar de alta en el Formulario principal...

Yo miro si tengo un momento para hacer alguna prueba, pero si entre tanto tú recibes una respuesta de algún otro, perfecto. Un saludo >> Jacinto

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas