you will need to edit the recordset for the subcategories list to use a join query, something like:
INNER JOIN categories
ON subcategories.categoryID = categories.categoryID
the exact SQL for your database will be a bit different depending on table and column names. the idea is to create a recordset that returns subcategories based on the active status in the categories table.
see the following page for more details on join queries:
for the issue with editing the menu: no there is not a way to prevent the edits to the recordsets from being overwritten.