in effetti hai ragione l'esempio che mi era stato dato si riferica ad un campo id sicuramente numerico io ho sostituito con un campo stringa

qui prelevo i valori

--- code ----------------------
<%
'da qui in poi cerco il record con questo username
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("/dbase/db.mdb")

set objRS=server.createObject("ADODB.Recordset")

'controllo se l'utente è effettivamente registrato
sql = "SELECT * FROM locali WHERE username = '" & username2 & "'"

objRS.Open sql, objConn,3,3
dim categoriascelta
categoriascelta =objRS("categorialocale")
%>

mentre poi ho modificato cosi

--- code --------------------------------

if objRS("categorialocale") = categoriascelta then
response.write "<option value='"& objRS("categorialocale")&"' SELECTED>"& objRS("categorialocale")&"</option>"
else
response.write "<option value='"& objRS("categorialocale")&"'>"& objRS("categorialocale")&"</option>"
end if



ma pare non vada lo stesso