Its not a bad thing re-submitting the page to achieve your objective. However why use multiple forms??? there is no need.
I would:
> get rid of multiple forms, use only one.
> when you call your onChange function submit the form!!
> you should check if your record set is empty when you create your select lists, this is just good code practice.
Anyhow here is how I would code up your first select list includig the code to ensure the previous selection remains selected:
NOTE - The below method will only work for you if each time you call the onChange function the form is submitted
strSQL = "SELECT distinct class from s6test;"
objRS.Open strSQL, objconn
if not objRS.eof then %>
<select name="xclass" onchange="reload(this.form)">
<option value="">Class</option>
<% Do While Not objRS.EOF %>
<option value="<%= objRs("class") %>" <% if trim(request.form("xclass")) <> "" then
if trim(request.form("xclass")) = objRs("class") then
response.write " selected "
end if
end if %>><%= objRs("class") %></option>
<% objRS.MoveNext
Loop
objRs.Close %>
</select>
<% else %>
<i>No records found</i>
<% end if %>
Wind is your friend
Matt
www.elitemarquees.com.au