Abrir un formulario en modo edición utilizando otro formulario con dos combos para filtrar

Un poco de luz en este túnel me ayudaría, he diseñado una base de datos con la que gestionamos, evaluamos y mantenemos la homologación de nuestros proveedores. Estas son las relaciones de la base de datos:

Lo que necesito es poder abrir el siguiente formulario para modificar los datos de un contacto concreto ya creado (tabla "contactos") de un proveedor:

En el anterior formulario, arriba se pueden ver los datos de un contacto concreto y abajo a modo informativo el listado de contactos existentes dados de alta de ese proveedor.

El tema es que para abrir ese registro concreto de la tabla de "contactos" tendría que filtrarlo, mi idea es crear un nuevo formulario y:

  • Mediante un primer combo seleccionar la empresa.
  • Mediante un segundo combo seleccionar el contacto concreto de esa empresa (claro, este combo debería de filtrar y mostrar sólo los contactos de la empresa seleccionada en el primer combo.
  • Acto seguido, mediante un "botón abrir", poder abrir el formulario mostrado arriba en el registro deseado para modificarlo.

A ver si alguien lo tiene claro y me ayuda.

1 respuesta

Respuesta
1

Juan José: Tal como tienes la estructura, que dicho sea de paso y sin profundizar, me parece muy buena, lo más simple y práctico que podrías hacer, es:

Tu idea básica OK.

En el Formulario de arriba, que además veo ya tienes un SubFormulario en vista de Tabla, solo debes tener ComboEmpresa y ComboDepartamento y el SubFormulario, los datos de los Contactos.

Ambos y lógicamente los tienes que relaconar con un Campo que será el NIF_PROV

Si la idea te encaja, me lo comentas y seguimos, o bien me dices si con ésto desarrollas tu el resto. Saludos >> Jacinto

Hola de nuevo Jacinto, gracias !. Ya lo he solucionado.

He conseguido lo que buscaba de una forma creo que sencilla:

  • En el formulario con los dos combos he generado un primer combo que me busca la empresa concreta en la tabla de datos del proveedor, sencillo.
  • En el segundo combo he hecho una consulta sobre la tabla de datos de contactos haciendo que filtre los que coincidan con el NIF de la selección del primer combo (ver imagen adjunta).
  • Ahora, en el botón que abre el registro del contacto concreto he añadido el siguiente código (al hacer clic) con dos condiciones where.

Private Sub Comando17_Click()
Dim vNifProv As Variant
Dim vContact As Variant
vNifProv = Me.cbo_nif_PROV.Value
vContact = Me.cbo_CONTACT.Value
If IsNull(vNifProv) Then Exit Sub
If IsNull(vContact) Then Exit Sub
DoCmd.OpenForm "contactos_MOD", acNormal, , "[nif_PROV] ='" & vNifProv & "' And [nomCont_PROV] ='" & vContact & "'", acFormEdit, acWindowNormal
DoCmd.Close acForm, "selec CONTACTtoMODIF", acSaveNo
End Sub

El siguiente código es cuando el segundo combo contiene un dato tipo fecha (lo pongo por el tema de la sintaxis del dato fecha):

Private Sub Comando17_Click()
Dim vNifProv As Variant
Dim vEv As Variant
vNifProv = Me.cbo_nif_PROV.Value
vEv = Me.cbo_EV.Value
If IsNull(vNifProv) Then Exit Sub
If IsNull(vContact) Then Exit Sub
DoCmd.OpenForm "evaluaciones", acNormal, , "[nif_PROV] ='" & vNifProv & "' And [fecha] =#" & vEv & "#", acFormEdit, acWindowNormal
DoCmd.Close acForm, "selec EVtoMODIF", acSaveNo
End Sub

Por otro lado, al primer combo le he puesto un procedimiento de evento "después de actualizar":

Private Sub cbo_nif_PROV_AfterUpdate()
Me.cbo_EV.Requery
End Sub

Lo ideal sería si supiese como hacer para que si modifico el dato seleccionado del primer combo (porque cambien de idea, o si me  equivoco de selección), el segundo se quede en blanco para que seleccione de nuevo.

Juan José: Obliga a tener que seleccionar siempre un valor en el Segundo combo, cuando selecciones el primero:

Private Sub cbo_nif_PROV_AfterUpdate()
Me.cbo_EV.Requery

Me.cbo_EV = Null
End Sub

Si vas de acuerdo, no olvides valorar la respuesta por favor. >> Jacinto

Juan José: Con el fin de cerrar temas, y dado que ésta pregunta me sale pendiente te ruego la valores o en su caso me comentes si necesitas información adicional. Saludos >> Jacinto

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas