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

Como simplificar esta funcion para no usar scripttimeout

Estas en el tema de Como simplificar esta funcion para no usar scripttimeout en el foro de ASP Clásico en Foros del Web. Hola amigos :) En mi web tengo esto en asp num=1 set usd = cnn.execute("select * from usuarios order by posicion") while not usd.eof cnn.execute("update ...
  #1 (permalink)  
Antiguo 13/11/2011, 08:59
 
Fecha de Ingreso: octubre-2008
Mensajes: 171
Antigüedad: 16 años, 2 meses
Puntos: 2
Como simplificar esta funcion para no usar scripttimeout

Hola amigos :)

En mi web tengo esto en asp

num=1
set usd = cnn.execute("select * from usuarios order by posicion")
while not usd.eof
cnn.execute("update usuarios set posicion = '"&num&"' where id = '"&usd("id")&"'")
num=num+1
usd.movenext
wend


Es necesario poner eso, porque cada vez que hacen algo las posiciones van cambiando mucho y es imposible que alguna vez no falle algo y aparezcan dos usuarios en la misma posición, o una posición sin usuario. Y es necesario que esté así, por eso, esta función la ejecuto cada hora.

El caso es que he tenido que poner el server.scriptimeout a 99999999 porque si no daba error, y eso me parece demasiado, que estes en la web y de repente tarde mil años en cargarse porque están actualizandose las posiciones.

¿Se os ocurre una mejor manera de hacer eso? en lugar de tener que actualizar las posiciones de los registros uno por uno, algo de SQL que lo haga todo a la vez, la verdad es que yo de SQL no entiendo mucho.

Gracias!

Última edición por davape9; 13/11/2011 a las 09:05
  #2 (permalink)  
Antiguo 24/12/2011, 00:32
 
Fecha de Ingreso: noviembre-2002
Ubicación: DF
Mensajes: 1.056
Antigüedad: 22 años
Puntos: 37
Respuesta: Como simplificar esta funcion para no usar scripttimeout

Supongo que la tabla se tarda x que estas actualizando el mismo campo por el orden que estas leyendo, entonces el registro, se lee, se actualiza, debido al nuevo valor, se vuelve a formar y asi sucesivamente.

"order by posicion"

Dependiendo de tu logica, debieras validar que el ID o registro que ya actualizaste no se vuelva a leer o bien no se vuelva a actualizar, quiza con algo como:.
UPDATE tabla SET procesado="N"

tu codigo con ciclo
SELECT * FROM tabla WHERE procesado = "N"

update .... ... , set procesado = 'S'


Saludos

Etiquetas: asp, funcion, select, server, simplificar, sql, usar
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 04:49.