Mostrar el contenido de lista desplegable, algo complejo.

Tengo un inconveniente con muestra el contenido de una lista desplegable, ya que tengo un formulario con un subformulario de entrada de datos el cual esta hecho para ventas con la característica que el precio es variable.

Por lo tanto el problema que tengo es el siguiente al momento de elegir la lista me muestra todas las variables de precios en los productos existentes (la toma del valor correspondiente es correcta), pero solo quiero que muestre la lista con las variables correspondientes al id producto que se esta ingresando en ese momento. Por ejemplo en la imagen de la lista variable a la azúcar granulada solo le correspondería que se viera la variable Predeterminado y PrecioPrueba que son los que le he asignado a ese producto.

Como podría resolver esto mediante VBA

2 respuestas

Respuesta
1

No dices como están construidas las tablas de Productos y ¿PrecioProductos?. Vamos a suponer que en la tabla PrecioProductos tienes los campos IdProducto Y Variable, como

Id Producto Variable

      5                        Predeterminado

      5                       Precio Prueba

. Personalmente, al cuadro combinado del formulario no le pondría origen de la fila, y en sus propiedades eventos- Al recibir el enfoque crearía un procedimiento de evento y pondría

me.Variable.rowsource="select Variable from PrecioProductos where [id producto]=" & me.[id producto] & ""

Así, cuando pusieras el cursor en él, buscaría que Variables corresponden al Id producto que tienes en el control Id producto.

Hola amigo muchas gracias por tu tiempo y bueno lo he puesto tal cual como me indicas ya que la estructura de las tablas es tal cual lo has adivinado , pero al momento de dar click en la lista me arroja este error.

comprobé que los nombres de los campos estén correctos, pero aun así me muestra este error al seleccionar la variable.

Es que en la imagen, aparece como nombre del control Variable, pero veo en el código que el nombre del combinado es Medida. En ese caso, y suponiendo que la columna dependiente sea la de Id Producto, aunque no se muestre, sería

medida.rowsource="select variable from preciosvariables where [id producto]=" & me.[id producto] & ""

En caso de que Id producto sea texto y no numérico, sería

medida.rowsource="Select variable from PreciosVariables where [Id producto]='" & me.[id producto] & "'"

Respuesta
1

También lo puede hacer modificando el origen de la fila del cuadro combinado. Algo como:

Reemplace Formulario2 por el nombre de su subformulario.

Quedaría así:

Se requiere del siguiente código en el cuadro combinado. Eventos, Al recibir el enfoque y Después de actualizar.

Private Sub cboVariable_AfterUpdate()
 If IsNumeric(Me.salida) Then
   Me.TotalValor = Me.salida * Me.cboVariable.Column(2)
 End If
End Sub
Private Sub cboVariable_GotFocus()
  Me.cboVariable.Requery
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas