innanzitutto grazie! Roby sei sempre disponibile!
ho fatto così:
	codice:
	<select name="localita" onchange="window.location.href='annunci.asp?zona='+this.value;">
<option value="" >Tutte</option>
<% 
	dim rsLocalita, sqlLocalita,zona
	zona = request.QueryString("zona")  -------> la inizializzo qui sennò non riceve nessun valore
	set rsLocalita = server.CreateObject("ADODB.recordset")
	sqlLocalita = "SELECT * FROM Localita"
	rsLocalita.open sqlLocalita, objConn
%>
<option value="<%= rsLocalita("localita")%>"<%if rsLocalita("localita") = zona then%> selected<%end if%>><%= rsLocalita("localita")%></option>
<% DO UNTIL rsLocalita.eof %>
<option value="<%= rsLocalita("localita")%>"><%= rsLocalita("localita")%></option>
<% 
	rsLocalita.movenext 
	loop 
%>
</select>
<select name="quartieri">
<option value="tutti" >Tutti</option>
<%
 'dim zona
 'zona = request.QueryString("zona") -----> qui ho remmato, zona me lo ricavo prima a questo punto
 if zona <> "" then
	dim rs1, sql1
	set rs1 = server.CreateObject("ADODB.recordset")
	sql1 = "SELECT Quartieri.* FROM Localita INNER JOIN Quartieri ON Localita.ID = Quartieri.id_localita Where Localita.localita = '" & zona & "'"
																															  %>
<% DO UNTIL rs1.eof %>
<option value="<%= rs1("quartiere")%>"><%= rs1("quartiere")%></option>
<% 
	rs1.movenext 
	loop 
%>
<% else 
	dim rs2,sql2
	set rs2 = server.CreateObject("ADODB.recordset")
	sql2 = "SELECT * FROM Quartieri" 
	rs2.open sql2, objConn
%>
<% DO UNTIL rs2.eof %>
<option value="<%= rs2("quartiere")%>"><%= rs2("quartiere")%></option>
<% 
	rs2.movenext 
	loop 
%>
<% end if %>
 
Non cambia nulla, tranne per il fatto che una option - la prima - me la scrive due volte..