Ver Mensaje Individual
  #1 (permalink)  
Antiguo 18/02/2011, 14:20
rocketfuel
 
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!