te recomiendo esta funcion que cree hace tiempo:
Código ASP:
Ver originalfunction PonerCombo(vStrSQL ,nombrecombo,eventoycuerpo)
set rsCombo = createobject("ADODB.Recordset")
on error resume next
rsCombo.open vStrSQL, Conex
if err then
MandarError "Lo siento, " & err.description
end if
if not rsCombo.eof then
response.Write "<select name=""" & nombrecombo & """ id=""" & nombrecombo & """ " & eventoycuerpo & ">"
response.Write "<option selected value=""0"">[Seleccione]</option>"
do while not rsCombo.eof
on error resume next
selected = ""
if request(nombrecombo)<>"" then
if cstr(rsCombo(0)) = cstr(request(nombrecombo)) then selected = "selected"
end if
if not isnull(valoractual) then
if cstr(rsCombo(0)) = cstr(valoractual) then selected = "selected"
end if
if err then err.clear
response.Write "<option " & selected & " value=""" & rsCombo(0) & """>" & server.HTMLEncode(ucase(rsCombo(1))) & "</option>"
rsCombo.movenext
response.flush
loop
response.Write "</select>"
rsCombo.close
else
response.write "Sin datos que mostrar"
end if
set rsCombo = Nothing
CierraConexion
on error goto 0
end function
la pones en tu include
y para llamarle, segun tu caso seria asi (la consulta debe pasar dos campos, el id y el texto):
'Creamos la sentencia SQL y la ejecutamos
Código ASP:
Ver originalsSQL="Select id,nombre From personal Order By Id_personal"
'imprimo el combo
ponercombo sSQL, "Dato1","class=""label_list"" id=""Dato1"""
la variable valoractual es para decirle si queremos un valor en especifico, previamente debemos saber el valor, si lo omites, tomara el valor pasado por post o get, si es que se envio algun form
espero te ayude y funcione sin problemas, cualquier error, postealo