Problemas al abrir formulario desde otro formulario

Tengo el siguiente formulario:

Al hacer clic en el botón "MIEMBROS DE JUNTA", se abre el siguiente formulario continuo.

El campo con fondo azul ubicado a la izquierda del formulario continuo esta codificado en el evento "al hacer Clic para abrir el siguiente formulario:

Si hacemos clic en el botón Documentos para asociar un archivo

Vemos que en el campo "Expediente" aparece el núm. De expediente del registro del formulario inicial desde donde estábamos al principio.

el código del botón "documentos" es el siguiente:

Private Sub Documentos_Click()
DoCmd.OpenForm "F_Documentos", acNormal, , "Expediente like'" & Me.DNI_SOC & "'", , acDialog
End Sub

En el evento "Al activar registro" del formulario le tengo puesto este codigo:

ElseIf CurrentProject.AllForms("FORM_SOCIOS"). IsLoaded Then
Expediente = Forms!FORM_SOCIOS!DNI_SOC

Es decir; en el camppo expediente me pones el DNI del socio para que los documentos queden vinculados a es persona.

Si el formulario se abre directamente, el código funciona perfectamente, es decir, me pone el DNI del socio en el campo Expediente, pero si lo abrimos siguiendo el procedimiento antes descrito descrito, me pone el expediente del registro desde donde iniciamos la llamada.

¿Hay alguna forma de corregir esto?.

Se que es complejo de explicar, y no se si habré conseguido hacerme entender.

Respuesta
1

José María: Para mí es un poco difícil de entender, pero a bulto veo que un ElseIf como primera condición no es correcto.

https://docs.microsoft.com/es-es/dotnet/visual-basic/language-reference/statements/if-then-else-statement 

Puede o no que ahí esté o no el error.

De otro lado, ese LIKE lleva a que si hay más de un dato coincidente en Expediente... resultado incierto.

Sin conocer el entorno me atrevo a decir que sería >> "Expediente = '" & Me.DNI_SOC &"'"

Si es que expediente es una cadena de texto. Si Número >> "Expediente = & Me.DNI_SOC

Saludos >> JTJ

Muchas gracias por tu interés Jacinto.

No, no está  ahí el error, el cogido funciona bien cuando el formulario se abre directamente, el fallo se produce cuando lo abrimos desde el otro formulario.

De todas formas, reitero mi gratitud, por dedicarme parte de tu tiempo. GRACIAS

José María: Lo más importante es que al final la ayuda te sirva para resolver el problema.

Si se te presenta al abrir el Formulario desde el otro Formulario puede que el Control no se llame >>

DNI_SOC

Si ves que puedo seguir indagando con alguna indicación tuya adicional, me comentas. >> JTJ

2 respuestas más de otros expertos

Respuesta
1

Creo que falta el nombre del campo en :

Expediente = Forms!FORM_SOCIOS!DNI_SOC   

Esta asignando solo el nombre del formulario y falta el nombre del campo, algo como:

Expediente = Forms!FORM_SOCIOS!DNI_SOC!DNI

No Eduardo.

Lo he puesto como indicas y el problema persiste.

Como le digo al otro experto, el código funciona bien, si  abrimos el formulario directamente. El problema se plantea cuando lo abrimos desde el otro formulario que, no se por que, arrastra  el expediente del registro desde donde lo abrimos.

De todas formas, agradezco tu interés amigo.

Pruebe con una variable pública a nivel de módulo para almacenar el contenido de FORM_SOCIOS! DNI_SOC del formulario respectivo y hace Expediente igual a esta variable. Realmente sin ver en detalle es difícil acertar en la respuesta.

Respuesta

José María, lo que te indicó Joaquín es lo correcto. De todas formas, permíteme un error de concepto (aunque sigue funcionando igual). En la instrucción del botón le dices, Ábreme el formulario en aquel registro... etc. ¿Y si en el formulario F_Documentos no hay ningún registro con ese DNI?

De todas formas, si tengo la tabla Socios como

Y tengo la tabla F_documentos como

Donde puedes ver que solo hay un registro del DNI 333....

Si con ambas construyo sus formularios respectivos y, en este caso, voy a estar en un registro de Form_socios que no tiene contrapartida en F_documentos

Cuando pulso el botón Documentos

Por el contrario, cuando estoy en el registro que si tiene un DNI igual en F_documentos

Y pulso el botón

Y los códigos son exactamente iguales a los que tienes. El del botón

Private Sub Documentos_Click()
DoCmd.OpenForm "F_documentos", , , "dni_soc like '" & Me.DNI_SOC & "'", , acDialog
End Sub

Y el del evento Al activar el registro lo mismo

Private Sub Form_Current()
If CurrentProject.AllForms("Form_socios").IsLoaded Then
DNI_SOC = Forms!form_socios!DNI_SOC
End If
End Sub

¡Gracias!  Julian

Perdona el retraso en valorar tu respuesta, pero ya se sabe. con esto de la pandemia, andamos un poco enredaos. de todas formas aun no he resuelto la cuestión, hace días que ni lo miro, ya le echaré un vistazo y probare lo que me dices,  a ver si damos con la solución

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas