Realizar una encuesta con ASP y SQL Server


El presente articulo expone de manera practica el funcionamiento de una encuesta en ASP utilizando una base de datos SQL Server.

Antes de utilizar este código, hay que crear la base de datos en SQL Server.
Para este ejemplo, la tabla se llama 'Encuesta', la cual dispone de 3 campos:
  1.- e_si - INT
  2.- e_no - INT
  3.- IP - NVARCHAR(15)

La imagen denominada barra.gif, es esta:


<table border=1 CELLSPACING=0 CELLPADDING=5 WIDTH=200 bordercolor="#3a6ea5">
  <tr>
    <td>
      <table border=0 CELLSPACING=0 CELLPADDING=0 WIDTH=100%>
        <tr>
          <td><font face="Arial" size=2>
            Crees que el programa Napster está incurriendo en alguna ley contra el mercado discográfico?
            <%
            'Abrimos la base de datos
            set objBase=server.CreateObject("ADODB.Connection")
            set objTabla=server.CreateObject("ADODB.RecordSet")
            'Servidor=Dirección de nuestro servidor
            'BaseDatos=Nombre de nuestra base de datos
            objbase.Open "PROVIDER=SQLOLEDB;DATA SOURCE=Servidor;UID=Usuario;PWD=Password;DATABASE=BaseDatos"
            'Consulta SQL Sobre la tabla Encuesta, la cual nos devuelve el primer y unico registro.
            set objtabla=objbase.Execute("select * from Encuesta")
            varsi=clng(objtabla.Fields("e_si"))
            varno=clng(objtabla.Fields("e_no"))
            'Comprobamos que la IP del usuario sea distinta de la que hay en al base de datos
            ipUser=cstr(Request.ServerVariables("REMOTE_ADDR"))
            cor=False
            if ipuser=objtabla.Fields("ip") then Cor=true
            if Request.QueryString("Encuesta")="true" and cor=false then
              if Request.QueryString("Valor")="Si" then
                'Aumentamos en uno el valor de si, y guardamos la IP en la Tabla
                varsi=varsi+1
                set objtabla=objbase.Execute("UPDATE Encuesta SET e_si=" & varsi & ",ip='" & ipuser & "'")
              end if
              if Request.QueryString("Valor")="No" then
                'Aumentamos en uno el valor de no, y guardamos la IP en la Tabla
                varno=varno+1
                set objtabla=objbase.Execute("UPDATE Encuesta SET e_no=" & varno & ",ip='" & ipuser & "'")
              end if
            end if
            objbase.close%>

            <center>
            <%if Request.QueryString("Valor")="" and cor=false then%>
            <!--Muestra el formulario para realizar la votación-->
              <form method=GET action="inicio.asp" id=form1 name=form1>
              <input type="hidden" name="Encuesta" value="true">
              <table border=0 cellpadding=0 cellspacing=0 width=100%>
                <tr>
                  <td align=center><font face="Arial" size=2>
                    <input type="radio" name="Valor" Value="Si">Si
                    <BR><input type="radio" name="Valor" Value="No">No
                  </td>
                  <td align=center><font face="Arial" size=2>
                    <input type="submit" value="Enviar" id=submit1 name=submit1>
                  </td>
                </tr>
              </table>
              </form>
            <%else%>
              <font face="Arial" size=2 color="#ff0000"><P><B>GRACIAS por colaborar</B><P></font>
            <%end if%>
            </center>
            <%
            'Mostramos el gráfico si ya han participado en la encuesta
            if varsi<>0 or varno<>0 then
              total=varsi+varno
              pos_si=(varsi*100)/total
              pos_no=(varno*100)/total
              %>

              <table border=0 width=100% cellpadding=0 cellspacing=1>
                <tr>
                  <td align=center colspan=3>
                    <!--Mostramos el total de usuarios que han participado en la encuesta en formato español-->
                    <font face="Arial" size=2>Resultado de <%=replace(formatnumber(total,0),",",".")%> usuarios.
                  </td>
                </tr>
                <tr>
                  <!--Mostramos la gráfica-->
                  <td>
                    <font face="Arial" size=2>SI  
                  </td>
                  <td>
                    <%if pos_si>0 then%>
                      <img src="barra.gif" height=15 width=<%=cint(pos_si)%>>
                    <%end if%>
                  </td>
                  <td align=right>
                    <font face="Arial" size=2><%=formatnumber(pos_si,2)%>%
                  </td>
                </tr>
                <tr>
                  <td>
                    <font face="Arial" size=2>NO  
                  </td>
                  <td>
                    <%if pos_no>0 then%>
                      <img src="barra.gif" height=15 width=<%=cint(pos_no)%>>
                    <%end if%>
                  </td>
                  <td align=right>
                    <font face="Arial" size=2><%=formatnumber(pos_no,2)%>%
                  </td>
                </tr>
              </table>
            <%end if%>
          </td>
        </tr>
      </table>
    </td>
  </tr>
</table>


El resultado del código es:

Leyenda:
  El código de este color, determina el código de ASP
  El color verde determina los textos explicativos en ASP
  El código de color negro indica el código HTML
  El color gris determina los textos explicativos en HTML