Cuadro combinado basado en los datos de un textbox del formulario

Es una pregunta para Sveinbjorn El Rojo

Tengo un formulario basado en la tabla "Libros" donde quiero crear un combo cuyos valores deben ser los datos del textbox5 (ordenados alfabéticamente y sin duplicados) que a su vez se corresponden con la columna "E" de la tabla "LIBROS"

Lo que quiero es que cuando yo seleccione uno de esos valores en el combo me devuelva en el formulario vinculado a la tabla "LIBROS", los registros que contienen ese valor en la columna "E" de la tabla "Libros"

Es decir en textbox1 tengo el código de los libros, en textbox2 los títulos, en textbox3 el tomo, en textbox4 el autor, en textbox5 las editoriales, etc. Hasta el textbox11.

En resumen el combo debería tener como valores, las editoriales ordenadas alfabéticamente, sin duplicados y cuando seleccione una editorial en el combo debe mostrárseme en el formulario todos los registros o sea los libros vinculados a esa editorial.

1 respuesta

Respuesta
1

No me ha quedado nada claro lo que quieres, pero voy aventurar algo..

El combo quieres que te devuelva las editoriales, sin duplicados y ordenadas que tienes en un campo (que no columna) llamado "E" de la tabla Libros. Para ello, en su origen de control, has de ponerle esto:

SELECT DISTINCT E FROM LIBROS ORDER BY E

Segunda parte: si el cuadro combinado lo tienes en el encabezado o pie de tu formulario Libros, y lo que intuyo que quieres es filtrar los registros por la editorial seleccionada, en el evento "Después de actualizar" del combo (lo llamaré cboEditorial), pones este código:

Private Sub cboEditorial_AfterUpdate()

If Nz(cboEditorial,"")="" Then Exit Sub

Dim miFiltro as String

miFiltro="E='" & me.cboEditorial & "'"

Me.Filter=miFiltro

Me.FilterOn=True

End Sub

Además, deberías poner un botón para quitar el filtro y ver todos los registros, con este código:

Me.FilterOn=False

Si no era esto lo que querías, acláramelo un poco más, y si puedes, pon alguna imagen de tu tabla y formulario

Hola

Sí, la verdad es que me he explicado fatal pero has acertado de pleno con tu respuesta. Lo que quería era crear un combo donde pudiera seleccionar las editoriales y filtrar los registros por la editorial seleccionada.

Lo de "SELECT DISTINCT E FROM LIBROS ORDER BY E"

lo he puesto en origen de la fila, aunque me comentaste que lo pusiera en "origen del control". Confírmame si he hecho bien, porque donde me decías me daba error. Por cierto lo de "E en realidad es un campo llamado "Coleccion" pero como los datos venían de excel me líe... perdón

Lo único que me falta es que me he dado cuenta que el orden alfabético no me vale para ordenar las editoriales del combo.

De hecho tengo 4 editoriales solo:

Erasmus, Losada, Zeta, Planeta

Y lo que quiero es que tengan un orden personalizado que sería así de arriba a abajo a visualizar al desplegar el combo:

Losada

Zeta

Acantilado

Planeta

A la espera de tu ayuda, muchísimas gracias

Pues si quieres ese orden, no te va a quedar más remedio que crear una tabla "Editoriales" en la que pongas las editoriales en el orden que quieras, y cargues los datos del combo de esa tabla (sin la cláusula order by). Tampoco te haría falta el DISTINCT, pues ya no meterías editoriales repetidas.

Y sí, era origen de la fila y no del control, fallo mío...

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas