I'm sure you can do it in a single recordset... but I'm not entirely confident I understand your recordset table structure well enough to give an example... I'll give it a shot:
SELECT * FROM downloads WHERE ((Aberdeen = 1 AND AberdeenParam = 1) OR (Borders= 1 AND BordersParam = 1) OR (Dundee= 1 AND DundeeParam = 1) OR (Edinburgh= 1 AND EdinburghParam = 1) OR (Glasgow= 1 AND GlasgowParam = 1) OR (Inverness= 1 AND InvernessParam = 1) OR (Perth= 1 AND PerthParam = 1)) AND ((Lead = 1 AND LeadParam = 1) OR (Practitioner= 1 AND PractitionerParam = 1) OR (Custom= 1 AND CustomParam = 1))
and then you set up parameters set to each of the session variables to match the Param variables in the sql statement.