Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

simas

Fazendo uma enquete

Recommended Posts

Olá pessoal, estou tendo um probleminha nesse scripit, talvez seja besteira para quem entende.

A situação é o seguinte tenho 4 arquivos: conexão.asp, enquete.asp, send_enquete.asp e resultado.asp.

 

O que deveria acontecer, o usuário entra na pág. enquete.asp, faz a sua escolha e é direcionada para a pág send_enquete, que esta direciona o usuário para a pág. resultado.asp.

 

O problema é que a pág sen_enquete.asp não direciona, quando o usuário confirma o voto dá o seguinte erro

 

Microsoft JET Database Engine error '80004005'

 

Operation must use an updateable query.

 

/enquete/send_enquete.asp, line 14

 

( A linha 14 da pág send_enquete.asp é conexao.execute(sql)

Estou enviando os códigos das páginas, para que possam tenter resolver o problema, após resolvido quem quiser posta aqui que eu mando todo o arquivo

 

Conexao.asp

<%

'------------------------------------------------------------------------------------------

' Este ASP cria a conexão com o banco de dados sem usar DSN

'------------------------------------------------------------------------------------------

 

' Construo o caminho do HD do servidor que contem o banco de dados para poder fazer uma conexao ao banco de dados sem DNS

 

caminho=left(Server.mappath(Request.ServerVariables("PATH_INFO")),InstrRev(Server.mappath(Request.ServerVariables("PATH_INFO")),"\"))'

 

Crio o objeto de conexao ADO

 

Set conexao = Server.CreateObject("ADODB.Connection")

conexao.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&caminho&"db\enquete.mdb"

 

' Abro a conexão

conexao.open

%>

 

enquete.asp

 

<!--Inclusão da string de conexao ao banco de dados -->

(<!--#include file="conn/conexao.asp"-->

 

<%

' Seleciono todas as perguntas por ordem decrescente de data

sql="SELECT * FROM enquete_pergunta ORDER BY data DESC"

set rs_enquete_pergunta=conexao.execute(sql)

' Seleciono todas as respostas da pergunta de data mais recente

sql="SELECT * FROM enquete_respostas WHERE ID_enquete="&rs_enquete_pergunta(0)&" ORDER BY id_resposta "

set rs_enquete_respostas=conexao.execute(sql)

%>

 

<BODY BGCOLOR="#FFFFFF">

<table width="300" border="0" class=enquete>

<tr>

<%

' Coluna que contem um link para poder ver os resultados desta enquete sem votar

%>

 

<td align=center bgcolor="#009999" class=nav><a href="resultados.asp?id=<%=rs_enquete_pergunta(0)%>" class=nav><font color="#FFFFFF">ENQUETE</font></a></td>

</tr>

<tr>

<td>

<%

' Formulário que vai enviar o ID da resposta para adicionar mais um hit

%>

<form name="enquete" method="post" action="send_enquete.asp">

<%

' Coluna que contem o texto da pergunta

%>

<%=rs_enquete_pergunta(1)%><br>

<%

' Enquanto houver respostas para esta pergunta....

%>

<%do while not rs_enquete_respostas.eof%>

<%

' Cria um conjunto de radio buttons com o valor do ID da resposta e o texto da resposta

%>

<input selected type="radio" name="resposta" value=

"<%=rs_enquete_respostas(0)%>"><%=rs_enquete_respostas(2)%>

<%rs_enquete_respostas.movenext%>

<%loop%>

</form>

</td>

</tr>

<tr>

<%

' Coluna que contem o butão que efetua o envio do formulário para o ASP que adiciona hits ás respostas%>

 

<td><input type="submit" name="Submit" value=" Enviar " OnClick="document.enquete.submit()" class="formu"></td>

</tr>

</table>

</BODY>

 

 

Send_enquete.asp

 

<!--#include file="conn/conexao.asp"-->

<%

'------------------------------------------------------------------------------------------

' Este ASP adiciona um hit á resposta da enquete

'------------------------------------------------------------------------------------------

 

' Obtenho o ID da resposta a que tenho de adicionar +1 id_resposta=request.form("resposta")

' Uso esse ID para saber quantos hits essa resposta já tem

 

sql="SELECT ID_enquete, hits FROM enquete_respostas WHERE ID_resposta="&id_resposta

set resposta=conexao.execute (sql)

' Atualizo o banco de dados com o valor atual de hits + 1 sql="UPDATE enquete_respostas set hits="&resposta("hits")+1&" WHERE id_resposta="&id_resposta

conexao.execute(sql)

' Redireciono o browser do usuário para a página que exibe os resultados das enquetes

 

response.redirect "resultados.asp?id="&resposta(0)

%>

 

resultado.asp

 

<!--#include file="conn/conexao.asp"-->

 

' Obtenho o ID da pergunta da qual vou exibir os resultados

id=request.querystring("id")

' Se o ID estiver vazio então exibe a pergunta de data mais recente

if isempty(id) then

sqlend=" ORDER BY data"

else

' Senão exibe a pergunta do ID dado

sqlend=" WHERE ID_enquete="& id

end if

' Transformo esse ID num valor númerico

valor=cint(id)

' Selecciono todas a pergunta do ID

sql="SELECT * FROM enquete_pergunta "& sqlend

set enquete_pergunta=conexao.execute(sql)

%>

 

<%

' Se não existir pergunta do ID exibe mensagem de erro

if enquete_pergunta.eof then%>

<tr>

<td colspan=3 class=nav align=center>Pergunta inexistente</td>

</tr>

<%'Senão seleciona e exibe respostas

else

' Selecciono todas as respostas dessa pergunta

sql="SELECT * FROM enquete_respostas WHERE ID_enquete="& enquete_pergunta("ID_enquete") &" ORDER BY id_resposta "set enquete_respostas=conexao.execute(sql)

 

' Selecciono todas as perguntas ordenadas por data crescente

 

sql="SELECT * FROM enquete_pergunta ORDER BY data "

set perguntas=conexao.execute(sql)

%>

<tr bgcolor="#3366CC">

<%

' Linha com o texto da pergunta do ID

%>

<td colspan=3 align=center class=nav><%=enquete_pergunta(1)%></td>

</tr>

 

<%

' Se não tiver respostas exibe a mensagem seguinte

%>

<%if enquete_respostas.eof then%>

<tr>

<td colspan=3 class=enquete>Nenhumas respostas existentes</td>

</tr>

<%

' Se tiver respostas exibe-as

%>

<%else%>

<%total=0%>

<%

' Enquanto as respostas não chegarem ao fim....

%>

 

<%do while not enquete_respostas.eof

 

' Calculo o valor total dos Hits

 

total=total+enquete_respostas("hits")%>

<tr>

 

<%

' Coluna com o texto da resposta

%>

 

<td width="20%" nowrap class=enquete><%=enquete_respostas(2)%>

</td>

<%

' Coluna com as imagens que compoem o grafico de barra desta resposta

%>

<td width="78%" class=enquete>

<%

 

' Imagem do inicio da barra

 

%><img src="imgs/barraopen.gif">

 

<%

' Cilco for que colona o número de hits da resposta * n, sendo n=5, para dar comprimento á bala, dependendo da grossura do gif, poderá ter mais ou menos valor o n

' Imagem do meio da barra

 

n=1

for x=0 to enquete_respostas("hits")*n%>

<img src="imgs/barramidle.gif">

<%next

' Imagem do Fim da barra

%>

<img src="imgs/barraclose.gif"></td>

<%

' Valor real dos hits dessa resposta

%>

<td width="2%" nowrap class=enquete><%=enquete_respostas("hits")%>

</td>

</tr>

<%

' Passo á resposta seguinte

enquete_respostas.movenext%>

<%loop%>

 

<%

' Linha em que exibo o valor sumatório dos hits de todas as respostas

%>

<tr>

 

<td width="20%" nowrap class=enquete><font color="#009999">Total</font></td>

<%

' Coluna que exibe o grafico da barra, mesmo mecanismo das respostas descrito nas linhas anteriores

%>

<td width="78%" class=enquete><img src="imgs/barraopen.gif"><%for x=0 to Total*n%>

<img src="imgs/barramidle.gif"><%next%>

<img src="imgs/barraclose.gif"></td>

<td width="2%" nowrap class=enquete><%=total%></td>

</tr>

<%end if%>

</table>

<%

' Tabela que vai exibir outras enquetes que não a que estiver a ser exibida

%>

<table width="100%" align=center class=nav>

<tr>

<td colspan=2 align=center class=nav>Resultados de Enquetes anteriores</td>

</tr>

<tr class=grey1>

<td align=center width="29%">Data</td><td width="100%" align=center>Pergunta</td>

</tr>

<%

' Enquanto não chegar ao fim das perguntas....

%>

<%do while not perguntas.eof%>

<%

' Se o ID da pergunta for diferente da pergunta atual, então essa pergunta vai aparecer na lista

%>

<%if cint(perguntas("id_enquete"))<>cint(enquete_pergunta("ID_enquete")) then%>

<tr class=grey2>

<%

' Coluna com o texto da data com link para exibir as respostas dessa pergunta

%>

<td align=center><a href="resultados.asp?id=<%=perguntas("id_enquete")%>" class=enquete><%=perguntas("data")%></a></td>

<%

' Coluna com o texto da pergunta com link para exibir as respostas dessa pergunta

%>

<td align=center><a href="resultados.asp?id=<%=perguntas("id_enquete")%>" class=enquete><%=perguntas("pergunta")%></a>

</td>

</tr>

<%end if%>

<%

' Passo á pergunta seguinte

%>

<%perguntas.movenext%>

<%loop%>

<%end if%>

</table>

:lol: Após resolvido me peçam que eu mando a enquete completinha.

Obrigado a todos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

B) Olá,

Acho q o erro se encontra na send_enquete.asp, acho que parte em negrito abaixo do cod deve ser alterada:

<!--#include file="conn/conexao.asp"--><%'------------------------------------------------------------------------------------------' Este ASP adiciona um hit á resposta da enquete'------------------------------------------------------------------------------------------' Obtenho o ID da resposta a que tenho de adicionar +1 id_resposta=request.form("resposta")' Uso esse ID para saber quantos hits essa resposta já temsql="SELECT ID_enquete, hits FROM enquete_respostas WHERE ID_resposta="&id_respostaset resposta=conexao.execute (sql)' Atualizo o banco de dados com o valor atual de hits + 1 sql="UPDATE enquete_respostas set hits="&resposta("hits")+1&" WHERE id_resposta="&id_respostaconexao.execute(sql)' Redireciono o browser do usuário para a página que exibe os resultados das enquetesresponse.redirect "resultados.asp?id="&resposta(0)%>
Acho que se você retirar a vírgula ele aceita...

De:

sql="SELECT ID_enquete, hits FROM enquete_respostas WHERE ID_resposta="&id_resposta

Para:

sql="SELECT ID_enquete hits FROM enquete_respostas WHERE ID_resposta="&id_resposta

 

Espero que seja isso...

Fuiz :lol:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Eu fiz a modificação mas continuou com o mesmo erro. Mesmo assim, obrigado pela tentativa. ;) Espero outras opinõesGrato.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.