フォームで特定のコンボ ボックスの行ソースを設定する際に問題があります (連続フォームとして表示されますが、単一フォーム モードでも問題があるようです)。
コンボボックスは と呼ばれるフィールドにバインドされてsupplierID
おり、アイテムのすべての可能なサプライヤーのリストをユーザーに提示することを目的としています。コンボボックスに使用している行ソースは次のとおりです。
SELECT DISTINCT Suppliers.name, Suppliers.supplierID
FROM Suppliers
INNER JOIN PartsSuppliers ON Suppliers.supplierID=PartsSuppliers.supplierID
WHERE PartsSuppliers.partID = partID;
クエリ デザイナーでこのクエリを表示すると (partID がハードコードされています)、問題なく動作します。選択したアイテムの可能なすべてのサプライヤーが選択され、他のアイテムは表示されません。しかし、コンボボックスの項目を見ると、テーブルに存在するすべてのサプライヤーが表示されPartsSuppliers
ます (2 つの列しかなく、部品を可能なサプライヤーにマッピングします)。
また、OnFocus イベントで VBA を使用してコンボ ボックスの RowSource を設定しようとしましたが (partID 値をハードコーディング)、RowSource が変更されることはありません。私が使用している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
また、そのクエリを RecordSet で開き、その RecordSet をコンボ ボックスの RecordSet として設定しようとしましたが、どちらも機能しませんでした。
私は何を間違っていますか、または正しいドロップダウンを作成するために見るべき他の方法はありますか?
NB Access でコンボボックスのカスタム行ソースを連続形式で見たことがありますが、その受け入れられた解決策も私にとってはうまくいきませんでした。