Abrir un formulario con un registro que se ha elegido en un cuadro cuadro combinado de otro formulario.

Quiero abrir un formulario en el que me salga un registro solo buscado en el cuadro combinado de otro formulario.

Quiero decir que abro un formulario con un cuadro de búsqueda que tenga todos los registros de una tabla, elijo uno por medio de un campo, por ejemplo apellidos, y al aceptar con un botón, quiero que se abra otro formulario mostrándome solo ese registro.

He dado por ahí con un ejemplo, "Como ejecutar una consulta en base al valor seleccionado en un desplegable _ 5incoaprendices", pero hace referencia a una consulta. Y por mas que he cambiado el código del botón, me ha sido imposible hacer lo que yo quería.

2 respuestas

Respuesta
2

Si estás en esta situación:

SELECT PERSONAS.Apellidos, PERSONAS.Nombre, PERSONAS.NIP FROM PERSONAS;

Y la columna dependiente es la 1, si hay dos personas con los mismos apellidos, ¿qué pasará?

Podría ser que, aunque la columna dependiente fuera la de los apellidos, si yo en tu respuesta la modifico así: docmd.openform"nombreotroformulario",,,"NIP='" & me.elegir & "'", me saliera bien.

la modificación que tendrías que hacer sería esta:

DoCmd.OpenForm "nombreotroformulario",,,"NIP='" & me.elegir.Column(2) & "'"

Fíjate que para "llamar" a la tercera columna uso el 2. Esto es porque en Access, casi todo por defecto es base 0, y el primer elemento es el índice 0, el segundo el 1 y así sucesivamente.

Muchas gracias por tu respuesta. Lo he hecho como decías, pero me da error

¿Tal vez sea porque el campo NIP sea autonumérico e índice?

Si es numérico y no texto, te sobran las comillas simples, es decir:

DoCmd.OpenForm "FrModificaciones",,,"NIP=" & Me.CbBcMod.Column(2)

Funciona, muchas gracias, pero..., ya puestos, si dejo el cuadro de búsqueda en blanco, al pulsar buscar me da otro error

¿Se puede evitar?

If Nz(Me.CbBcMod,"")="" Then Exit Sub
DoCmd.OpenForm "FrModificaciones",,,"NIP=" & Me.CbBcMod.Column(2)
Respuesta
1

Vamos a suponer que el cuadro de texto donde eliges el apellido se llama Elegir y vamos a suponer que en el segundo formulario tienes un control donde aparece el apellido y se llama YoQueSe. En el evento Después de actualizar del cuadro de texto Elegir puedes poner

docmd.openform"nombreotroformulario",,,"yoquese='" & me.elegir & "'"

Es decir, abre el otro formulario en aquel registro en el que el valor del control Yoquese sea el mismo apellido que figura en el control Elegir de este mismo formulario.

Muchas gracias por tu pronta respuesta.

Aún no lo he puesto en práctica, pero se me ocurre que si yo busco el dato con estos campos: SELECT PERSONAS.Apellidos, PERSONAS.Nombre, PERSONAS.NIP FROM PERSONAS;

y la columna dependiente es la 1, si hay dos personass con los mismos apellidos, ¿que pasará?

Podría ser que, aunque la columna dependiente fuera la de los apellidos, si yo en tu respuesta la modifico así: docmd.openform"nombreotroformulario",,,"NIP='" & me.elegir & "'", me saliera bien.

Es cierto que un solo apellido se puede repetir, pero eso depende de como esté construido el formulario, de si se usa todo el nombre y apellidos(que sería el que yo utilizara), o se usa un id en la columna dependiente. Evidentemente un DNI sería ideal, ya que es único. Por ejemplo, supongamos que tengo la tabla Clientes

En un formulario, construyo un combinado(aunque podría ser cualquier otro control), que tiene dos columnas la dependiente que es IDcliente con una anchura de 0 y otra que muestra los nombres de clientes(por tanto voy a trabajar con el idcliente, aunque muy bien podría ser el dni) y elijo un cliente, en este caso a Christina

En el momento que la elijo

En este caso, en el evento Después de actualizar del combinado YoQueSe le pongo

Private Sub YoQueSe_AfterUpdate()
DoCmd.OpenForm "clientes", , , "idcliente=" & Me.YoQueSe & "", , acDialog
End Sub

Puedes comprobar que los nombres son los mismos

Muchas gracias y perdona la tardanza en contestar.

Me da un error, del que te pongo imagen.

El campo NIP, te lo digo por si acaso, es clave y autonumérico

Ten en cuenta, que la columna dependiente es texto por tanto tendrías que ponerla como

DoCmd.OpenForm "clientes", , , "NIP='" & Me.cbccmod & "'", , acDialog

Ahora me da otro error

Vamos a hacer una cosa. Si quieres, repito si quieres mándame una copia con datos inventados si los que tienes son confidenciales a [email protected] y la miro, porque tendría que funcionar.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas