mat41,
Firstly, thank you for your prompt reply. However, its still not retaining the values for some reason.

So, I stripped the code to the following (I do plan to handle the exception if the result set is empty):
================================================== ===================
<%
set rst=Server.CreateObject("adodb.recordset")
strSQL = "SELECT * FROM POPD_FY_DRIVE"
Set rst=conn.execute(strSQL,,1)
%>
<select ID="drive" name="drive" language="javascript" onchange="return drive_onchange(Results_Report)">
<option id=0 value=0>Select a new Drive Period...</option>
<% do while not rst.Eof %>
<option value="<%= rst("FY_DRIVE_ID") %>"
<% if (cint(rst("FY_DRIVE_ID")) = cint(Request.Form("drive"))) then response.write " selected " end if %>> <%= rst("YEAR_KEY")& " " & rst("YEAR_DRIVE_DESC") %>
</option>
<% rst.moveNext
loop %>
</select>
================================================== ===================
1. Yes, they're both integers. 'drive' being the id for the value selected.
2. Will add for those cases.
3. Tired that, still doesn't stick.
I am very sure the Form, after getting submitted, is getting the correct text entered in the textfield box and the id for the Drive period selected, because I am printing those out after storing them in a variable.
Do you also have any suggestions for how to retain value in the text field?