Domanda

Ho problemi impostare l'origine riga di una certa casella combinata sulla mia forma (visto come una forma continua, anche se mi sembrano anche avere alcuni problemi nella modalità a singola).

Il combo-box è associata a un campo chiamato supplierID, ed è pensato per presentare all'utente un elenco di tutti i possibili fornitori per un elemento. La fila-source che sto usando per il combo-box è:

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

Quando osservo questa query in Progettazione query (con un partid hard-coded), funziona benissimo - seleziona tutti i possibili fornitori per l'elemento selezionato, e non mostra tutti gli altri elementi. Ma quando guardo le voci nella combo-box, mostra tutti i fornitori presenti nella tabella PartsSuppliers (che ha solo due colonne, la mappatura delle parti alle possibili fornitori per loro).

Inoltre ho cercato di impostare origine riga della casella combinata utilizzando alcuni VBA in caso OnFocus (hardcoding il valore PartID in), ma non è mai sembra cambiare l'origine riga. Il codice VBA che sto usando è:

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

Inoltre ho provato ad aprire quella query in un recordset, e quindi utilizzando l'impostazione che RecordSet come RecordSet del combo-box, ma che non ha funzionato neanche.

Che cosa sto facendo di sbagliato, o c'è qualche altro modo che dovrei essere a guardare per fare la corretta discesa?

NB. Ho visto origine riga personalizzato per casella combinata modulo continuo in Access , ma che soluzione accettata non ha funzionato per me.

È stato utile?

Soluzione

Utilizzare gli eventi OnEnter e OnExit di cambiare il vostro 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

Altri suggerimenti

ho lottato con il modo di evitare i 'vuoti' lasciati in una scheda tecnica volta che gli articoli Combo sono limitate e non riusciva a trovare alcuna opzione dritto in avanti per molto tempo .... fino ad ora!

Lasciando tutte le opzioni disponibili nella casella combinata, ma l'aggiunta di una regola di convalida temporanea, utilizzando Su corrente, fa perfettamente il trucco.

Nella speranza questo impedisce a qualcuno sbattere la testa sulla scrivania per tutto il tempo che ho.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top