Relacionar un formulario como un subformulario siendo modal y emergente

Tengo un formulario llamado internos con los campos

IdInterno auto numérico

Interno texto

Modulo Texto...

Y otro formulario llamado dietas con los campos

IdDietas auto numérico

IdInterno Numérico

fechaInicio Fecha...

Mi pregunta es la siguiente, actualmente tengo ambos formularios relacionados como formulario y subformulario. Pero se podría relacionar el subformulario dietas al formulario internos con se ha seleccionado las opciones modal y emergente y que al cambiar un registro del formulario internos se cambien también en el formulario dietas que saldría en modo modal y emergente.

1 respuesta

Respuesta
1

Juan, honestamente, no entendí la pregunta. Un subformulario no deja de ser un control más de un formulario, como puede ser, un cuadro de texto, un combinado, etc. Por tanto si el formulario es modal y emergente, el subformulario seguirá apareciendo dentro del formulario, y al estar ambos relacionados( por Idinterno, supongo), cuando en el formulario te desplaces a otro registro, el subformulario lo "acompaña".

No sé si era eso lo que querías.

Hola, gracias por responder.

Quizás no me expliqué bien.

Lo que busco es que  a través de un botón me abra el subformulario (que desvincularía del formulario) y abra el formulario dietas en una ventana emergente, que también le puse modal, no se si será lo correcto.

Ahora el subformulario dietas al quitarlo, sería un formulario emergente llamado dietas y en relación a esto, ¿Cómo podría vincular el formulario emergente dietas  al formulario principal internos?  Porque no encuentro como vincularlo.

Gracias de nuevo

Si tengo la tabla Internos

Y la tabla Dietas, que como puedes ver está vacía.

Con ambas hago los respectivos formularios. Al primero, sólo le digo que sea emergente, de modal nada de nada, y al segundo no le digo absolutamente nada. Cuando abro el formulario Internos

Cuando pulso el botón, como en ese momento no tiene ninguna dieta asignada, me abre el formulario Dietas, en un registro nuevo, y en el control IdInterno me pone el que figura en ese momento en el formulario Internos

Aunque no lo parezca el otro está abierto y detrás. Escribo lo que tenga que escribir

Más adelante, si me voy a ese formulario Internos

Y pulso el botón Abrir Dietas, como la tabla Dietas ya tiene registros asociados a ese Interno

El código del evento Al hacer clic del botón es

Private Sub Comando5_Click()
If Nz(DCount("*", "dietas", "idinterno=" & Me.IdInterno & "")) = 0 Then
DoCmd.OpenForm "dietas", , , , acFormAdd, acDialog
Else
DoCmd.OpenForm "dietas", , , "idinterno=" & Me.IdInterno & "", , acDialog
End If
End Sub

Es decir, primero cuéntame si la tabla Dietas tiene registros asociados a ese interno. Si no los tiene ábreme en vista diálogo el formulario Dietas en un registro nuevo y por el contrario, si los tiene ábreme el formulario Dietas con aquellos registros que tengan el mismo IdInterno que el que figura en ese momento en el formulario Internos.

Por otro lado, para que el control Idinterno del formulario Dietas "coja" el valor de Idinterno del formulario Internos, en las propiedades del formulario Dietas-Eventos-Al activar el registro le pongo

Private Sub Form_Current()
If CurrentProject.AllForms("internos").IsLoaded Then
IdInterno = Forms!internos!IdInterno
End If
End Sub

O sea, que siempre que abras el formulario Dietas, en el control Idinterno te aparecerá el valor de IdInterno de Internos.

Hola de nuevo, he creado el ejemplo que me has mandado y me sale perfecto, pero lo intento plasmar en mi base y no hay manera, es cierto que tengo algún cambio, pero intento que salga y no hay manera.

En mis tablas el NIS es tipo texto (esto influye)'?

Luego en el evento del botón he puesto

Private Sub Comando126_Click()

DoCmd.OpenReport "INFANTIL", , , , acFormAdd, acDialog (sale amarillo)
Else
DoCmd.OpenForm "INFANTIL_Madres", , , "NIS=" & Me.NIS & "", , acDialog
End If

y en el evento del formulario emergente

Private Sub Form_Current()
If CurrentProject.AllForms("FInternas").IsLoaded Then
NIS = Forms!FInternas!NIS
End If

En que fallo?

Vamos por partes. Yo no tengo relacionada la tabla Internos con la tabla Dietas. En ésta última, al tener, el campo IdInterno, "uso" el valor que aparece en la tabla Internos. Por eso lo de 

If currentproject....

Por otro lado, cuando una campo es tipo texto para referise a él hay que ponerlo con

apostrofe comillas & y cierra & comillas apostrofe comillas Por ejemplo

If Nz(DCount("*", "infantil", "NIS='" & me.nis & "'")) = 0 Then

Si lo has puesto tal como aparece en tu pregunta, te has olvidado de poner un If en el evento Al hacer clic del botón. Es decir, cuando haces clic en el botón Si sucede esto entonces haz... Sino haz lo otro.

Además, en la primera línea le dices que imprima el informe directamente. Si lo que quieres es verlo antes, tienes que ponerlo como

Docmd.openreport"Infantil_madres",acpreview

Y en los informes no se va a un registro nuevo, por eso lo de acformadd en un informe no puede ser.

Mira, si quieres, repito, si quieres, haz una copia con datos inventados y me la mandas a [email protected] para que la corrija.

Si lo haces, en el asunto del mensaje pon tu alias Juan Fernández, ya que si no sé quien me escribe ni los abro.

¡Gracias! 

No se que hacía el "OpenReport" en lugar del "OpenForm". Gracias por la explicación  de las comillas para campos de texto y el currentproject.

Muy agradecido

Juan

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas