create 3 recordsets:
rsBrands:
SELECT id, name FROM kpc_brand
rsCategories:
SELECT catID, brandID, catName FROM kpc_category
rsSubCategories:
SELECT subCatID, parentBrandID, subCatName FROM
set the Brands select list to be dynamic, and to use the id column for the value, and the name column for the label.
in the server behaviors panel, click the plus button, and select WebAssist -> Dynamic Drop Downs -> Create Dynamic Array.
for the recordset, selct rsCategories. Set the parent ID to the brandID column, the Child ID to the catID column and the Child Name to the catName column.
repeat this again, this time select the rsSubCategories recordset. set the parent ID to the parentBrandID column, child id to the subCatID column and child name to the subCatName column.
in design view, select the brand list. In the behaviors panel (note: not server behaviors) click the plus button and select WebAssist -> WA Dynamic Dropdowns -> Populate list from array. Select the rsCategories array. for the parent list, selct the brands list, and the child list, select the categories list.
repeat this step and this time use the rsSubCategories array, and set the child list to the sub categories select list.
NOTE: your original search page passed the brand, category and subcategory names. this new search page will p[ass the ID's instead. Your results page will need to be changed to make use of the ID values instead of relying on the names.