Contador en asp

Hola, amigo gaditano. Muchas gracias por tu contestación del otro día, me fue de gran ayuda. Ya conseguí que me funcionara perfectamente. Ahora tengo otro puqueño problema con un código para llevar un contador de visitas y no encuentro donde esta el problema. A ver si me puedes echar un cable como el otro día. Te pongo el código y te explico lo que me sucede.
' Si es una nueva visita, la variable estará vacía.
if Session("visitado")="" then
Session("visitado")=False
end if
'Y ahora, miro esta variable antes de insertar
' Se pone a verdadero
if Session("visitado")=False then
Session("visitado")=True
set rs=Server.CreateObject("ADODB.Recordset")
rs.Open "visitas", conexion, 1, 2
if rs.EOF then
' Es la primera visita hoy, por eso no hay ningún
' registro con la fecha actual
rs.AddNew
rs.Fields("Fecha")=Date()
rs.Fields("Hits")=1
rs.Update
else
' Tengo que sumar 1 a los Hits de hoy
visita=rs.Fields("Hits")
rs.Fields("Fecha")=Date()
rs.Fields("Hits")=visita+1
rs.Update
end if
end if
Ese es el código para realizar el contador. Ahora te pongo el response con el que lo muestro en la página:
<%=rs.Fields("Hits")%>
Pues si entro en la página por primera vez, funciona bien, pero si actualizo la página o navego por las otras páginas y luego vuelvo a la página principal, donde está el contador, me sale el siguiente error:
Error de Microsoft VBScript en tiempo de ejecución error '800a01a8'
Se requiere un objeto: ''
/mipagina/principal.asp, line 382
Que es la linea donde esta el response que muestra el resultado por pantalla.

1 Respuesta

Respuesta
1
El problema debe estar en ese response:
<%=rs.Fields("Hits")%>
Ya que cuando lo llamas ta has actualizado el registro con
rs.Update
y pierdes el valor
Yo te recomendaría que guardaras el valor en una variable Aplication que se mantiene siempre e en memoria mientras el servidor web este activo o no caiga. La puedes definir en el fichero global. Asa.
Coges el valor justo antes del
rs.Update asi:
rs.Fields("Hits")=visita+1
Apliation("visitas")=rs.Fields("Hits")
rs.Update
y cuando kieras ponerla a cero porque se el dia nuevo pones
Apliation("visitas")=0
Otra opción sería que siempreque vayas a sacar el valor de <%=rs.Fields("Hits")%> hagas un recordset que extraiga el valor de la tabla y lo cierres.
Muchísimas gracias, amigo. Ya me funciona el contador. Me tenía bastante amargado, porque no daba con el fallo.
1 saludo desde Almería.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas