Es logico que te muestre el último registro ya que cada vez que se ejecuta el ciclo se sobreescribe el contenido que tenia codi
ahora bien lo que no entiendo es para que quieres tener esa variables?
nos podrias explicar eso?
ahora bien si no quieres explicarnos jeje, pues la solución esta en que codi sea un arreglo
<%
'Generamos el menu desplegable
i=1
do while not RS.eof
i=i+1
%>
<option><%=RS("servicio")%>& lt;/option>
<%codi(i)=rs("codigo")%>
<%
RS.movenext
loop
%>
y para recorrer sus valores
for i=1 to Ubound(codi)
response.Write codi(i)
Next
saludos