Ir para conteúdo

POWERED BY:

Arquivado

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

barenco

Contador Asp com banco de dados

Recommended Posts

Amigos

 

Estou implementando um sistema de contador de páginas em meu site e estou usando um código pronto que recebi. Não sou um especialista em ASP. Muito pelo contrário, trabalho na base de erros e acertos.

O sistema que estou usando usa banco de dados Access e através de include permite contar diversas páginas diferentes. O acesso ao banco de dados está funcionando perfeitamente. Quando abro a página de teste o contador mostra a contagem. Mas quando mando atualizar a página, recebo a seguinte mensagem de erro:

 

ADODB.Field error '800a0bcd'

 

Either BOF or EOF is True, or the current record has been deleted. Requested operation requires a current record.

 

/old/contador.asp, line 34

Além disso, se fecho o navegador e abro novamente, ele retorna com o mesmo numero anterior. Ou seja: a página apenas mostra o valor pré-gravado no BD, mas não atualiza a contagem.

 

A página de teste é: http://www.maxicar.com.br/old/pagina1.asp

E o código da página do contador segue abaixo.

Ficaria imensamente agradecido se pudessem me dar alguma dica.

 

<%
'Declara as variáveis
Dim Conn, RsQuery, Pagina, Counter
'Atribui o endereço da página atual a uma variável (Pagina)
Pagina = Request.ServerVariables("SCRIPT_NAME")
'Atribui a variável Conn uma instancia do objeto Connection
'ou seja, a variável passa a propriedade de conexão
Set Conn = Server.Createobject("ADODB.Connection")
'Abre a conexão com o banco de dados usando o Server.MapPath, que localiza o banco com esse nome 

cnpath=server.mappath("/")
cnpath=left(cnpath, len(cnpath)-3) & "dados\contador.mdb"
Conn.Open "Data Source=" & cnpath & ";Provider=Microsoft.Jet.OLEDB.4.0;"

'Verifica se a Session Pagina ja contem algum valor, no caso o valor (visitada)
If Len(Session(Pagina)) = 0 Then
	'Atribui a variável RsQuery a consulta executada no banco de dados
	Set RsQuery = Conn.Execute("SELECT * FROM acesso")
	'Atribui a variável Counter o valor atual de visitas
	Counter = RsQuery("acesso")+1
	'Atribui a variável RsQuery a atualização feita no banco de dados
	'Repare que desta maneira você pode usar esse Banco de Dados para várias páginas
	'porque apenas será atualizada linha que corresponde a (url = '" & Pagina & "')
	'url é o endereço atual
	Set RsQuery =  Conn.Execute("UPDATE acesso SET acesso = " & Counter & " WHERE url = '" & Pagina & "'")
	'Atribui a Session(Pagina) o valor "visitada", onde só será contado como uma nova visita quando a sessão for encerrada (a sessão se encerra após 20 minutos de página estática, ou ao fechar o browser)
	Session(Pagina) = "visitada"
'Caso a Session Pagina não contenha o valor (visitada), será contado como mais uma visita
Else
	'Atribui a variável RsQuery a consulta atualização feita no banco de dados
	Set RsQuery = Conn.Execute("SELECT * FROM acesso WHERE url = '" & Pagina & "'")	
	'Atribui a variável Counter recebe o número de visitas
	Counter = RsQuery("acesso")
	'Fecha o conexão com o banco de dados
End If
'Fecha o conexão com o banco de dados
Conn.Close
'Caso a Session Pagina não contenha o valor (visitada), será contado como mais uma visita
Set Conn = Nothing
'É impresso o total de visitas
Response.Write Counter
%>

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.