Abro un formulario en Access a partir de la selección de un registro de un combo en otro formulario, pero se abre bloqueado.

Tengo un formulario que se llama "selec PROVtoMODIF", al abrirlo selecciono el proveedor mediante un combo, luego pulso un botón para abrir un formulario en modo edición con los datos del proveedor seleccionado en el primer formulario.

El código del botón es el siguiente:

Private Sub Comando17_Click()
Dim vNifProv As Variant
vNifProv = Me.cbo_nif_PROV.Value
If IsNull(vNifProv) Then Exit Sub
DoCmd.OpenForm "proveedores_MOD", acNormal, , "[nif_PROV] ='" & vNifProv & "'", acFormEdit, acWindowNormal
End Sub

El problema es que cuando se abre el formulario del proveedor está bloqueado y no me deja editarlo. Si abro el formulario directamente sí que puedo seleccionar un proveedor y modificar datos, pero si lo abro a partir del combo del otro formulario no.

¿Sabe alguien cómo solucionar esto?.

1 respuesta

Respuesta
1

Así a bote pronto y sin profundizar, los parámetros acFormEdit y acwindowNormal son opcionales. ¿Has probado sin ellos?

DoCmd.OpenForm "proveedores_MOD", acNormal, , "[nif_PROV] ='" & vNifProv & "'"

Si no te funciona miro con más atención. Saludos >> Jacinto

Hola Jacinto, gracias por el interés. He probado a quitar los parámetros pero nada.

Es como si al haber abierto al formulario utilizando una variable para localizarlo se abre sólo en modo edición, no sé si se puede añadir algo para borrar dicha variable.

¿hay otra forma de abrir un formulario a partir de un combo de otro formulario y que funcione?

Gracias.

Personalmente veo innecesario el Botón

Programa directamente el Evento AfterUpdate del ComboBox, de manera que te quedaría
‘’’’********
Dim CriterioApertura As String
CriterioApertura = “[nif_PROV] = ‘” & Me.[cbo_nif_PROV] & “’”

Docmd.OpenForm “proveedores_MOD”,,,CriterioApertura
CriterioApertura = “”
‘’’’********
En cualquier caso éstas líneas son igualmente aplicables al Botón

Ya me contarás si te resuelto el problema. Saludos >> Jacinto

Quedó cortada mi respuesta y al final ignoro si pudiste solucionar el Problema.

Estaba repasando preguntas sin valoración y ésta es una de ellas.
Te agradeceré si la valoras, o si necesitas información adicional, me comentas.
Saludos >> Jacinto

Hola Jacinto, no avanzo en este tema.

Voy a explicarme de nuevo.

Tengo una tabla proveedores y un formulario que se llama proveedores. He creado otro formulario llamado proveedores_MOD que contiene un combo y un botón abrir con el objetivo de abrir el formulario proveedores y modificar la tabla proveedores.

El caso es que si abro el formulario proveedores directamente me deja modificar todos los campos, pero a través del filtro del formulario del combo ninguno.

Abajo incluyo imágenes de relaciones y formularios a ver si detectas algo mal.

Esto es lo que tengo en el botón abrir como evento al hacer clic:

Private Sub Comando17_Click()
Dim vNifProv As Variant
vNifProv = Me.cbo_nif_PROV.Value
If IsNull(vNifProv) Then Exit Sub
DoCmd.OpenForm "proveedores_MOD", acNormal, , "[nif_PROV] ='" & vNifProv & "'", acFormEdit, acWindowNormal
End Sub

Por cierto, veo que cuando trato de modificar algún dato abajo aparece el mensaje "No se puede actualizar este Recordset".

Juan José: Antes de seguir.

Leyendo con más atención tu último Texto:

"... Formulario llamado proveedores_MOD que contiene un combo y un botón abrir con el objetivo de abrir el formulario proveedores.."

Y la llamada de apertura la haces contra el mismo Formulario

Proveedores_MOD

DoCmd.OpenForm "proveedores_MOD", acNormal, , "[nif_PROV] ='" & vNifProv & "'", acFormEdit, acWindowNormal

Mi pregunta es:

Realmente quieres abrir "proveedores_MOD" en un nuevo Registro, o quieres abrir "Proveedores" con el Registro seleccionado en "proveedores_MOD"

Y otra pregunta:

¿Qué sentido tiene "Crear" un segundo Formulario para Modificar?

Tienes el de Proveedores en el que puedes buscar el Proveedor que necesites y Modificarlo.

No te preocupes que saldrás de ese atasco.

Una vez me aclares esas dudas, seguimos. Saludos >> Jacinto

Vaya, perdona que no me he explicado bien,...

Tengo una tabla que se llama "proveedores", y dos formularios llamados respectivamente: "selec PROVtoMODIF" (este tiene el combo para elegir el proveedor y el botón para abrir el formulario en modo edición) y otro  "proveedores_MOD" que es el formulario de modificación de datos del proveedor. Estos son los de las imágenes que envié antes.

A parte de esto, sí, tengo dos formularios de proveedores, uno lo uso para dar de alta nuevos proveedores (proveedores) y otro para modificar los datos (proveedores_MOD), pero esto es porque son diferentes, cada uno tiene unos botones.

Juan José: Vayamos quitando problemas potenciales.

1.- El ComboBox ha de ser independiente, sin origen de Control, y en origen de la Fila algo así como:

SELECT NombreCampoDelNif, NombreProveedor FROM Proveedores ORDER BY NombreProveedor

En el Código y para evitar conflictos:

If CurrentProject.AllForms("Proveedores").IsLoaded Then DoCmd.Close acForm, "Proveedores"

If CurrentProject.AllForms("Proveedores_MOD").IsLoaded Then DoCmd.Close acForm, "Proveedores_MOD"

Dim vNifProv As Variant
vNifProv = Me.cbo_nif_PROV.Column(0) 'En lugar de Value

Dim CriterioApertura As String
CriterioApertura = “[nif_PROV] = '" & vNifProv & "'"

If IsNull(vNifProv) Then Exit Sub

Docmd.OpenForm “proveedores_MOD”,,,CriterioApertura
Si ésto tampoco te funciona comentamos de nuevo. Saludos >>Jacinto

Hola Jacinto, al final he visto que tenía los "bloqueos del registro" (en la pestaña datos del formulario del combo), lo he puesto en "sin bloquear" y me funciona. Me he quedado blanco.

En todo caso muchas gracias por tu interés !

Juan José:Gracias y no te preocupes, ocurre en las mejores familias. Mis saludos >> Jacinto

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas