Pregunta

Estoy teniendo problemas para configurar el origen de fila de un determinado cuadro combinado en mi formulario (visto como una forma continua, aunque también parecen tener algunos problemas en el modo de forma individual).

El cuadro combinado está enlazado a un campo llamado supplierID, y está destinado a presentar al usuario una lista de todos los posibles proveedores para un elemento. La fila de código que estoy utilizando para el cuadro combinado es:

SELECT DISTINCT Suppliers.name, Suppliers.supplierID
FROM Suppliers
INNER JOIN PartsSuppliers ON Suppliers.supplierID=PartsSuppliers.supplierID 
WHERE PartsSuppliers.partID = partID;

Cuando veo esta consulta en el diseñador de consultas (con un Idpart modificable), que funciona bien - se selecciona todos los posibles proveedores para el elemento escogido, y no muestra cualquier otro artículo. Pero cuando miro a los elementos en el cuadro combinado, se muestra todos los proveedores presentes en la mesa PartsSuppliers (que tiene sólo dos columnas, la cartografía de las partes a los posibles proveedores para ellos).

También he tratado de establecer el cuadro combinado de OrigenDeLaFila el uso de algunos de VBA en caso OnFocus (codificando el valor Idpart en), pero parece que nunca cambia el OrigenDeLaFila. El código VBA que estoy usando es:

Private Sub supplierID_GotFocus()
    Dim query As String

    query = "SELECT DISTINCT Suppliers.name, PartsSuppliers.supplierID "
    query = query & "FROM Suppliers INNER JOIN PartsSuppliers ON Suppliers.supplierID = PartsSuppliers.supplierID "
    query = query & "WHERE (((PartsSuppliers.partID)=" & partID & "));"

    supplierDropDown.RowSource = query
    supplierDropDown.Requery
End Sub

También intentado abrir esa consulta en un conjunto de registros, y luego usar la configuración que RecordSet de registros como el del cuadro combinado, pero que no funcionó bien.

¿Qué estoy haciendo mal, o hay alguna otra manera que debería estar mirando para hacer la correcta inclinación hacia abajo?

N.B. He visto origen de fila personalizada de cuadro combinado de El acceso continuo en , pero esa solución aceptada no funcionaron para mí tampoco.

¿Fue útil?

Solución

Utilice los eventos OnEnter y OnExit que cambiar su RowSource.

Private Sub supplierID_Enter()
    supplierDropDown.RowSource = _
        "SELECT DISTINCT Suppliers.name, PartsSuppliers.supplierID " & _
        "FROM Suppliers INNER JOIN PartsSuppliers ON Suppliers.supplierID = PartsSuppliers.supplierID " & _
        "WHERE PartsSuppliers.partID = " & partID & ";"
End Sub

Private Sub supplierID_Exit()
    supplierDropDown.RowSource = _
        "SELECT DISTINCT Suppliers.name, PartsSuppliers.supplierID " & _
        "FROM Suppliers INNER JOIN PartsSuppliers ON Suppliers.supplierID = PartsSuppliers.supplierID;"
End Sub

Otros consejos

He estado luchando con la forma de evitar los 'blancos' dejado en una hoja de datos una vez que los artículos de Combo están restringidos y no pudieron encontrar ninguna opción recta hacia adelante desde hace mucho tiempo .... hasta ahora!

Dejando todas las opciones disponibles en el cuadro combinado, pero añadiendo una regla de validación temporal, utilizando AlActivarRegistro, hace el truco perfectamente.

Con la esperanza de esto impide que alguien golpeando su cabeza sobre el escritorio durante el tiempo que tengo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top