質問

私は(私もシングルフォームモードでいくつかの問題を持っているように見えるものの、連続フォームとして見て)私のフォーム上の特定のコンボボックスの行ソースを設定する問題を抱えています。

コンボボックスはsupplierIDというフィールドにバインドされ、項目のすべての可能なサプライヤーのリストをユーザに提示するためのものです。私はコンボボックスのために使用していますが、行のソースは、次のとおりです。

SELECT DISTINCT Suppliers.name, Suppliers.supplierID
FROM Suppliers
INNER JOIN PartsSuppliers ON Suppliers.supplierID=PartsSuppliers.supplierID 
WHERE PartsSuppliers.partID = partID;
私は(ハードコードされpartID付き)クエリデザイナーでこのクエリを表示すると、

、それが正常に動作 - それは、選択された項目のすべての可能な取引先を選択し、他の項目を表示しません。私は、コンボボックス内の項目を見ると、それは(彼らのために可能なサプライヤーに部品をマッピングし、ちょうど2つの列があります)PartsSuppliersテーブルに存在するのすべてののサプライヤーを示しています。

私も(中partID値をハードコーディング)ONFOCUSイベントでいくつかのVBAを使ってコンボボックスの値集合ソースを設定しようとしたが、値集合ソースを変更するようではありません。私が使用していますVBAコードは、次のとおりです。

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

私はまた、レコードセット内のそのクエリを開いて、その後、コンボボックスのレコードセットとしてそのレコードセットを設定し使用してみましたが、それはどちらか動作しませんでした。

私は間違って何をやっている、または私がダウンして、正しいドロップを作るために見てしなければならない他のいくつかの方法がありますか?

N.B。私は、コンボボックスのカスタム行ソース内を見てきましたアクセスするで連続用紙が、それ受け入れソリューションは、いずれかの私のために動作しませんでした。

役に立ちましたか?

解決

あなたのOnEnterを変更するOnExitRowSourceイベントを使用します。

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

他のヒント

私は今まで....コンボ項目が制限され、長い時間のための任意のまっすぐオプションを見つけることができなかったら、データシートに残さ「空白」を回避する方法で苦労してきた!

コンボボックスで使用可能なすべてのオプションを残したがOnCurrent使用して、一時的な検証ルールを追加し、完全にトリックを行います。

これは限り私が持っているために机の上に自分の頭を叩いて誰かを防ぐ願ってます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top