Desaparecer de listado tras seleccionar de un combo/lista

Tengo una tabla Productos y otra Tiendas. Quiero asignar varios productos a unas tiendas más o menos así:

- En un formulario, selecciono en un combo la tienda.

- En un subformulario, tengo varios combos para asignar varios productos. Lo que quiero es elegir un producto del primer combo y cuando seleccione otro producto del segundo combo, no aparezca el primero ya que ya no está disponible, y así sucesivamente,

No sé si es mejor combos o listas, que no se muy bien como funcionan, pero visualmente estaría genial ver como se actualiza una tabla/lista con todos los productos disponibles, y que al seleccionarlo del combo, automáticamente, desaparezca del segundo combo y de la lista de disponibles.

1 respuesta

Respuesta
2

Puedes hacerlo de varias formas, todo depende de como asignes los productos. Vamos a suponer que en la tabla Productos tienes idproducto, nombre, etc y la casilla (Si/no) Disponible. Por ejemplo, supongamos que el combinado donde eliges el producto, se llama Elegir, y en su origen de la fila, está el nombre del producto. El origen de la fila ponlo como

Select Nombre, disponible from productos where disponible=0;

En el evento después de actualizar del combinado podrías poner

docmd.setwarnings false

docmd.runsql"update productos set disponible=-1 where nombre='" & me.elegir & "'"

Así en el siguiente registro, ya no te aparecen los que estén marcados.

Luego, en el evento Al cerrar( o en otro evento, como Al activar registro, etc) puedes poner

docmd.runsql"update productos set disponible=0"

Así todos los productos te quedan disponibles para el siguiente registro del formulario

Gracias por tu respuesta pero he tenido que modificar el diseño de la base y no sé si me da error por eso. Al final, tengo un combo que me saca el listado de productos de la tabla Productos (IdProducto, CodigoProducto, NombreProducto, Disponible). Este combo está en un subformulario en vista Hoja de datos por lo que puedo elegir varios productos seguidos "en la misma pantalla", y lo que quiero es que al elegir uno o varios productos en el primer combo, ya no me aparezca esos mismos productos en el segundo combo. Puede ser que me de error porque el campo es multivalor??

He puesto lo siguiente:

En Origen de la fila del combo: 

SELECT Productos.IdProducto, Productos.CodigoProducto, Producto.Disponible FROM Productos WHERE (((Productos.Disponible)=True)) 

En el evento Después de actualizar del combo:

Private Sub ElegirProductoOperario_AfterUpdate()
DoCmd.SetWarnings False

DoCmd.RunSQL "update Productos set Disponible=Falso Where CodigoProducto='" & Me.ElegirProducto & "'"
End Sub

Gracias.

Tengo que confesar que, por más que digan, no entiendo para que sirven los campos multivalor y que les tengo un odio visceral. Nunca los uso. Si tengo una tabla Productos

En un formulario una vez que elijo un producto me marca ese producto como no disponible

En el formulario

Como en el registro anterior elegí patatas, en el siguiente ya no me aparecen( la patata engorda).

El combinado Producto no tiene origen de la fila, se lo doy en el evento Al recibir el enfoque y en Después de actualizar le digo que marque ese producto como No disponible( la verdad que el nombre del campo no es el idóneo) pero...

Luego, sólo habría que decirle en el evento Al cerrar del formulario, o en el evento Al activar registro que actualice los campos disponible a 0.

El código es

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas