He estado toda la tarde trasteando en código y ahora no me funciona nada. Lo he simplificado en lo posible. A ver si alguien sabe porque no chuta el invento:
' ---------- COMPROBAR USUARIO ----------------------------------------------
On Error Resume Next
Set Conexion = Server.CreateObject("ADODB.Connection")
Conexion.Open="----"
strSQL = "SELECT * FROM usuarios WHERE nick_usuario_id like '"& usuario_dat & "'"
Set miConexion = Conexion.Execute(strSQL)
'--------------------- CONTROLO QUE NO SE CUELA NADIE (paso_dat está igualada a una variable de control que envio con request.form)
if miConexion("control_usuario_id")=paso_dat then
miConexion.Close
Conexion.Close
Set miConexion = Nothing
Set Conexion = Nothing
On Error Resume Next
Set Conexion = Server.CreateObject("ADODB.Connection")
Conexion.Open="---"
'---------- usuario_dat está igualado a la variable que viene con el REQUEST.FORM
strSQL = "SELECT * FROM encuesta WHERE usuario_encuesta_db like '"& usuario_dat & "'"
Set miConexion = Conexion.Execute(strSQL)
'----- Intento controlar que no existe para grabar el resulatado del voto y que ninguno de los usuarios repita
If miConexion("usuario_encuesta_db")="" Or miConexion(usuario_encuesta_db)="null" then
Dim Valores
Valores = "'" & Request.Form("usuario") & "', '" & Date & "', '" & Request.Form("foro") & "'"
On Error Resume Next
strSQL = "INSERT INTO encuesta (usuario_encuesta_db, fecha_encuesta_db, voto_encuesta_db) VALUES (" & Valores & ")"
Set miConexion = Conexion.Execute(strSQL)
else
' Y si no ya ya le pondremos que sólo se vota una vez.
response.write "ya existe"
End If
Else
%><script language='JavaScript'>location.replace('../principal_noreg.asp');</script><%
End If
miConexion.Close
Conexion.Close
Set miConexion = Nothing
Set Conexion = Nothing
%>
Parece sencillo... Pues no funciona

A ver si alguien sabe algo, gracias
