Hacer que un cuadro de lista de opción múltiple me traiga los valores que tengan la misma terminación que mi campo de proyecto

A tod@s

Tengo un formulario de proyectos en el tengo entre otros campos

El campo de Codigo de proyectos y Codigo de productos, lo que quiero hacer es que en el campo de Codigo de productos (que es un cuadro de lista de opcion multiple ) me traiga solamente losproductos que tengan la misma terminacion que el codigo de proyectos. Por ejemplo

Codigo de proyecto

PR00001

Codigo de los productos

P00001_PR00001

P00002_PR00001

Osea que me traiga solamente los productos que corresponden a ese proyecto para asi no estar buscandolos entre todos los productos que he dado de alta.

1 respuesta

Respuesta
1

Te propongo una forma:

En el evento "Después de actualizar" de tu campo "Código de proyectos" o en uno de estos eventos del cuadro de lista, "Al entrar" o "al recibir el enfoque" le pones este código:

Private Sub...
Dim miSQL As String
miSQL=" SELECT ID, [Codigo de productos] FROM TUTABLA WHERE [Codigo de proyecto] LIKE '*" & Nz(Me.txtCodProyecto,"") & "'"
Me.lstProductos.Rowsource=miSQL
Me.lstProductos.Requery
End Sub

Es decir, tienes que construir una SQL (puedes copiar la que tienes en la propiedad "origen de la fila" de tu cuadro de lista) y filtrarla por el valor que tengas en el cuadro "Codigo de proyecto" de tu formulario (es la parte del WHERE). Luego se la asignas como "origen de la fila" y recargas el cuadro.

Hola primero que nada muchas gracias porla respuesta

Me sale un error medice error de compilación :

No se encontró el método o el dato miembro

Y me señala esta parte del código

Código del proyecto se llamami campo donde meto el código del proyecto en el formulario

& Nz(Me.codigo_del_proyecto,"") & "'"

espero me puedas ayudar

Saludos

Si te da ese error es porque tu cuadro de texto (en el formulario) no se llama codigo_del_proyecto (o codigo de proyecto). Puedes comprobarlo fácilmente si sacas las propiedades de ese cuadro y vas a la pestaña Otras->Nombre.

Ese será el nombre que tengas que usar en el código. Si el nombre llevara algún acento (código), lo mejor es que lo pongas entre corchetes:

& Nz(Me.[código_del_proyecto],"") & "'"

A ver si así lo resuelves.

Esta parte no te funciona porque no has puesto los nombres que tu tienes en tu BD, sino que has pegado literalmente la SQL que te puse yo de ejemplo (y que obviamente no podía estar bien al desconocer tus campos).

Este es el código que funciona en tu caso concreto:

Private Sub Codigo_del_proyecto_AfterUpdate()
Dim miSQL As String
miSQL = "SELECT [Productos].[Codigo], [Productos].[Categorias], [Productos].[Precio] FROM Productos WHERE [Codigo] LIKE '*" & Nz(Me.Codigo_del_proyecto, "") & "'"
Me.Codigo_de_los_productos.RowSource = miSQL
Me.Codigo_de_los_productos.Requery
End Sub

¡Ah! Para que te funcione correctamente, y el valor se te actualice al navegar por los registros, has de ponerle el mismo código al evento "al activar registro" del formulario

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas