Foros del Web » Programando para Internet » ASP Clásico »

Error en tabla de visitas ACCESS - Pagina ASP

Estas en el tema de Error en tabla de visitas ACCESS - Pagina ASP en el foro de ASP Clásico en Foros del Web. Hola a todos, este es mi primer post. Tengo el siguiente problema: Tengo una pagina web donde registro cada una de las visitas. Todas se ...
  #1 (permalink)  
Antiguo 18/02/2011, 14:20
 
Fecha de Ingreso: febrero-2011
Mensajes: 6
Antigüedad: 13 años, 3 meses
Puntos: 0
Exclamación Error en tabla de visitas ACCESS - Pagina ASP

Hola a todos, este es mi primer post.

Tengo el siguiente problema: Tengo una pagina web donde registro cada una de las visitas. Todas se guardan en una tabla de datos de access donde guardo el numero de visita, fecha y hora e IP.

El problema es que, a veces falla al guardar los datos. En lugar de guardarme los datos al final, me los guarda el principio y por lo tanto el contador de visitas deja de funcionar!

Aca pego la parte del codigo que uso y mas abajo un ejemplo de tabla fallada:

'===================================='
' OBTENCION DE LA IP DEL VISITANTE '
'===================================='
IP = Request.ServerVariables("HTTP_X_FORWARDED_FOR")
If IP ="" Then IP = Request.ServerVariables("REMOTE_ADDR")

Set oConn = Server.CreateObject ("ADODB.Connection")
Set RS = Server.CreateObject ("ADODB.RecordSet")
oConn.open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Request.ServerVariables("APPL_PHYSICAL_PATH") + "/Otros/DB.mdb;Jet OLEDB:Database Password=12345678;"

sql = "SELECT * FROM Visitas"
RS.Open sql, oConn, 1,3

If RS.EOF then
oConn.Execute"INSERT INTO Visitas(Cuenta,IP,Fecha,Hora) VALUES(1,'"&IP&"',Date(),'"&Temp&"')"
Cuenta=1
Else
RS.Movelast
Fecha=RS("Fecha")
Hora=RS("Hora")
Cuenta=RS("Cuenta")+1
oConn.Execute"INSERT INTO Visitas(Cuenta,IP,Fecha,Hora) VALUES(('"&Cuenta&"'),('"&IP&"'),Date(),'"&Temp&"' )"
End if

'================================'
' CIERRE Y LIMPIEZA DE OBJETOS '
'================================'
RS.Close
oConn.Close
Set RS = nothing
Set oConn = nothing

Un ejemplo de resultado correcto:

1 127.0.0.1 18/02/2011 17:12
2 127.0.0.1 18/02/2011 17:13
3 127.0.0.1 18/02/2011 17:14
4 127.0.0.1 18/02/2011 17:15

EL RESULTADO INCORRECTO QUE OBTENGO:

5 127.0.0.1 18/02/2011 17:16
5 127.0.0.1 18/02/2011 17:17
5 127.0.0.1 18/02/2011 17:18
5 127.0.0.1 18/02/2011 17:19

1 127.0.0.1 18/02/2011 17:12
2 127.0.0.1 18/02/2011 17:13
3 127.0.0.1 18/02/2011 17:14
4 127.0.0.1 18/02/2011 17:15

Si miran bien, ejecuta la instruccion: MOVELAST -> Obtiene el valor de visitas -> Suma 1 -> Va al principio de la tabla y mete el registro (ahi es donde la pifia)

Creo que el error esta cuando la pagina se refresca muy seguido o entran mas de 2 personas a la vez... pero no estoy seguro. Segun los foros de access INSERT INTO siempre agrega al final...

Les agradezco su ayuda! Siempre recurro a alguna solucion de este foro!!

Saludos!
  #2 (permalink)  
Antiguo 18/02/2011, 14:57
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 3 meses
Puntos: 535
Respuesta: Error en tabla de visitas ACCESS - Pagina ASP

Bienvenido. Probaste algo así?:

Cita:
oConn.Execute"INSERT INTO Visitas(Cuanta,IP,Fecha,Hora) VALUES(((SELECT MAX(Cuenta) FROM Visitas) + 1),('"&IP&"'),Date(),'"&Temp&"' )"
__________________
...___...
  #3 (permalink)  
Antiguo 18/02/2011, 15:05
 
Fecha de Ingreso: febrero-2011
Mensajes: 6
Antigüedad: 13 años, 3 meses
Puntos: 0
Respuesta: Error en tabla de visitas ACCESS - Pagina ASP

Ya lo probe:

Microsoft JET Database Engine error '80004005'

Unspecified error

/home.asp, line 45 -> La linea que me pasaste :(
  #4 (permalink)  
Antiguo 18/02/2011, 16:20
 
Fecha de Ingreso: febrero-2011
Mensajes: 6
Antigüedad: 13 años, 3 meses
Puntos: 0
Respuesta: Error en tabla de visitas ACCESS - Pagina ASP

Un dato mas: El error es ALEATORIO...

Es decir, no siempre pasa... viene funcionando bien hasta que en algun momento, por algun motivo desconocido se troncha. Hace un rato por ejemplo se trababa en la visita nro 12 y estuvo asi como una hora y ahora parece andar bien...
  #5 (permalink)  
Antiguo 18/02/2011, 17:26
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 4 meses
Puntos: 146
Respuesta: Error en tabla de visitas ACCESS - Pagina ASP

Cita:
El problema es que, a veces falla al guardar los datos. En lugar de guardarme los datos al final, me los guarda el principio y por lo tanto el contador de visitas deja de funcionar!
No rices tanto el rizo, agrega un campo autonumérico en la tabla y hazlo llave, con eso tienes para que siempre se guarden en el orden correcto.

saludos
  #6 (permalink)  
Antiguo 18/02/2011, 17:44
 
Fecha de Ingreso: febrero-2011
Mensajes: 6
Antigüedad: 13 años, 3 meses
Puntos: 0
Respuesta: Error en tabla de visitas ACCESS - Pagina ASP

hola Myakire. Acabo de hacer lo que me pusiste, por ahora funciona.

No recuerdo porque en el momento que diseñe la pagina opte por no hacerlo de esa forma (la habia pensado) pero bueno, si funciona bienvenida sea!

Voy a tenerla en prueba por unos dias y si me funciona bien cierro el tema.

Saludos!
  #7 (permalink)  
Antiguo 18/02/2011, 21:46
 
Fecha de Ingreso: febrero-2011
Mensajes: 6
Antigüedad: 13 años, 3 meses
Puntos: 0
Respuesta: Error en tabla de visitas ACCESS - Pagina ASP

Hola, no me sirve porque cuando borro la tabla de visitas el valor autonumerico continua desde el ultimo valor aunque haya borrado la tabla.

A ver si a alguien se le ocurre algo...
  #8 (permalink)  
Antiguo 19/02/2011, 13:46
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 4 meses
Puntos: 146
Respuesta: Error en tabla de visitas ACCESS - Pagina ASP

Cita:
Hola, no me sirve porque cuando borro la tabla de visitas el valor autonumerico continua desde el ultimo valor aunque haya borrado la tabla.
y?

El autonumérico como llave era para solucionar el supuesto problema de que a veces el registro que insertabas te lo ponía al inicio y no al final, no para que usaras el ID generado como contador, así hubiera funcionado tu código inicial sin moverle un carácter.

Lo que te dije fue para resolver un problema puntual que tenias, pero en realidad ni siquiera lo necesitas, deberías usar el resultado del RecordCount de la tabla como indicador de visitas totales (filtrado o no por fecha), es decir ese campo con el +1, es un campo calculado, se puede obtener por otros medios y no es necesario que este en la estructura de la tabla.

Ahora, si a fuerzas quieres tener el valor en un campo y usar el ID como contador de visitas ¿has buscado algo como resetear autonumperico access en google?, compactas la BD y listo.


Saludos
  #9 (permalink)  
Antiguo 19/02/2011, 16:15
 
Fecha de Ingreso: febrero-2011
Mensajes: 6
Antigüedad: 13 años, 3 meses
Puntos: 0
Respuesta: Error en tabla de visitas ACCESS - Pagina ASP

Hola de nuevo.

Una solucion impecable. Sinceramente estoy tan estancado de cosas que no me fije que habia en el google. Pido disculpas.

Aca publico el nuevo codigo, es algo mas compacto que antes:

sql = "SELECT * FROM Visitas"
RS.Open sql, oConn, 1,3

//ESTO ES PORQUE MI PAGINA INFORMA CUANDO FUE LA ULTIMA VISITA ANTES QUE LA NUESTRA
if not RS.EOF then
RS.Movelast
Fecha=RS("Fecha")
Hora=RS("Hora")
end if

Cuenta=RS.RecordCount+1
oConn.Execute"INSERT INTO Visitas(IP,Fecha,Hora) VALUES(('"&IP&"'),Date(),Time())"

Entonces cuando se quiere resetear la base de datos se eliminan los registros y se compacta la base de datos. Eso es todo.

Saludos y gracias por solucionarme el problema!!
  #10 (permalink)  
Antiguo 21/02/2011, 08:51
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 4 meses
Puntos: 146
Respuesta: Error en tabla de visitas ACCESS - Pagina ASP

Me alegro que te haya servido, en el código que pones no le encuentro utilidad a la sentencia Cuenta=RS.RecordCount+1 pero supongo que quizá más adelante utilizas esa variable

saludos!

Etiquetas: access, asp, insert
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:04.