Two ways to achieve same without cascading combos:
a) You have lookup tables tblProducts:ProductID, ProductName, ... and tblCategories: CategoryID, CategoryName, ... You create a table tblProductCategories: ProductCategoryID, ProductID, CategoryID. In your form's soutce table/cuery, instead of fields for ProductID and CategoryID, you have a single field ProductCategoryID. And for form you create a single combo linked to ProductCategoryID, with row source like
Code:
SELECT pc.ProductCategoryID, p.ProductName & ": " c.CategoryName As ProductOfCategory
FROM (tblProductCategories pc INNER JOIN tblProducts p ON p.ProductID = pc.ProductID) INNER JOIN rblCategories c ON c.CategoryID = pc.CategoryID'
ORDER BY 2
b) You create a table tblProductCategoryID like above, but in source table/query of your form you have fields for ProductID and CategoryID. You create a combo linked to ProductID. You create text/combo box linked to CategoryID, and set the text box either hidden or disabled (You use combo in case it will be only disabled, so user sees category name instead of it's ID. But having this control visible will be abundant, as the first combo shows both product name and it's category anyway). The main combo will have the row source like
Code:
SELECT p.ProductID, c.CategoryID, p.ProductName & ": " c.CategoryName As ProductOfCategory
FROM (tblProductCategories pc INNER JOIN tblProducts p ON p.ProductID = pc.ProductID) INNER JOIN rblCategories c ON c.CategoryID = pc.CategoryID'
ORDER BY 3
ForCombo, you create an AfterUpdate event, which writes CategoryID into hidden/disabled text box (As I myself never have tried this, I'm not sure about exact syntax here).