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

Mensaje de Carga

Estas en el tema de Mensaje de Carga en el foro de ASP Clásico en Foros del Web. Hola a todos, quiero pedirles una ayuda, tengo el siguiente problema. Tengo una pagina de opciones, pero cuando el usuario escoge sus opciones, tengo que ...
  #1 (permalink)  
Antiguo 02/04/2003, 14:21
 
Fecha de Ingreso: febrero-2002
Mensajes: 157
Antigüedad: 23 años, 1 mes
Puntos: 0
Mensaje de Carga

Hola a todos, quiero pedirles una ayuda, tengo el siguiente problema.

Tengo una pagina de opciones, pero cuando el usuario escoge sus opciones, tengo que hacer una consulta a la B.D, y es una consulta muy grande, por lo que demora mucho en cargarse la segunda pantalla, y me gustaria dejar la pantalla en blanco de las opciones mientras se ejecuta la consulta y colocar un mensaje de que se esta cargando la pagina, hasta que se recuperen todos los datos y mostrarlos.

Si alguien me puede ayudar con algun codigo que resuleva mi problema, de antemano se lo agradezco.
  #2 (permalink)  
Antiguo 02/04/2003, 15:06
Avatar de MsTech.DotNet  
Fecha de Ingreso: marzo-2003
Ubicación: Maracay - Edo. Aragua
Mensajes: 605
Antigüedad: 22 años
Puntos: 0
Precarga de Pagina....

Aqui tienes el codigo para mostrar un mensaje de Cargando... mientras se ejecuta la consulta a la base de datos y se arma la pagina con los resultados...

Código:
<html> 
<head> 

<!-- PRIMER PASO: Copiar dentro del tag HEAD --> 
<script language="JavaScript"> 

ns=document.layers 
ie=document.all 

function esconde() { 
if (ie) precarga.style.visibility="hidden"; 
if(ns) document.pregarga.visibility="hide"; 
} 
// --> 
</script> 

<style> 
#precarga{position:absolute; width:100%; height:100%; top:0; left:0} 
</style> 

</head> 

<body> 
<!-- SEGUNDO PASO: Copiar dentro del tag BODY --> 
<body onload="esconde();"> 
<script language="JavaScript"> 
if(ie || ns) document.write('<div id="precarga" align="center"><br><b>Cargando....</b><br>Por Favor Espere...!!!</div>'); 
</script> 
</body> 
</html>
Espero que te funcione....

Si tienes alguna otra inquietud... no dudes en comentarla...

Saludos...
__________________
Ing. Javier Ugalde
Desarrollador de Aplicaciones Web / Windows
Director de Desarrollos Web
Ing. en Información
Email: [email protected]
Telf. Hab: +[58] - (243) - 232.02.06
Telf. Cel: +[58] - (414) - 455.26.80
  #3 (permalink)  
Antiguo 02/04/2003, 15:23
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 24 años, 1 mes
Puntos: 535
Sólo un comentario para ver si estoy en lo correcto...


El IIS 5 trae el buffer seteado a true por defecto. Con lo que, si no estoy errado, absolutamente todo se queda en el servidor hasta que se termina la ejecución del script, incluyendo el onload. Con lo que la función esconde() no tendría efecto

Si esto es correcto, creo que se podría modificar el script que te pasó MsTech.DotNet de la siguiente manera:

Código:
...
...
...
<body> 
<!-- SEGUNDO PASO: Copiar dentro del tag BODY --> 
<body onload="esconde();"> 
<script language="JavaScript"> 
if(ie || ns) document.write('<div id="precarga" align="center"><br><b>Cargando....</b><br>Por Favor Espere...!!!</div>'); 
</script> 
<%
Response.Flush
' Aquí while para iterar el recordset
%>

</body> 
</html>


no se.. no se... es correcto lo que digo???
  #4 (permalink)  
Antiguo 02/04/2003, 15:40
Avatar de MsTech.DotNet  
Fecha de Ingreso: marzo-2003
Ubicación: Maracay - Edo. Aragua
Mensajes: 605
Antigüedad: 22 años
Puntos: 0
mmm podria ser...

Lo que comentas suena bien...

Pero lo que pasa es que con el codigo que puse se crea una capa sobre la pagina que se esta cargando y una vez que este cargada entonces con la funcion esconde() me setea a hide la capa... entonces si como comentas no usaremos el esconde() va a quedar el mensaje de cargando......... habria que probarlo..

De todos modos investigue sobre lo del buffer y flush de asp...

Aqui les coloco algo...

Propiedad Buffer: Puede estar True o False. Si está en True el servidor procesa todo y luego lo envia. Si está en False va enviando a medida que procesa.

Método Flush: Se puede utilizar solamente cuando el Buffer está en True. ¿Para que sirve? Dijimos que cuando el Buffer está en true, toda la información se envia cuando es procesada completamente. Con Response.Flush pediremos todo lo que está procesado hasta ese momento.
Es útil para usarlo después de fragentos "pesados" (imagenes, menues), porque de esta manera será enviado el menu y luego seguirá con el resto de la página.

<%
Response.Buffer = True
'parte pesada de la página...
....
Response.Flush
'Continuamos con la página.
...
%>

Método Clear: Se utiliza para borrar todo el Buffer. Su sintaxis es simple <% Response.Clear %>

Método End: Se utiliza para terminar la ejecución de un Script. Su uso más comun es para detener cualquier página si detectamos que el usuario no está más. Eso lo hacemos de este modo:

<%
'parte pesada de la página.
...
'comprobamos si el cliente sigue activo.
if not Response.IsClientConnected then
Response.End
end if
%>

Con esto quiere decir que se puede hacer de la siguiente manera...


<%
Response.Buffer = True
'parte pesada de la página... osea la conexion a la bd y las consultas y eso...
....
Response.Flush
'Continuamos con la página.... osea el despliege de los datos y resultados que envia el servidor...
...
%>

Pero entonces me surge una duda... de que manera manejamos que se muestre y se oculte el mensaje de "Cargando... Por Favor Espere..!!" porque si eliminamos la funcion esconde entonces la capa quedaria activa una vez que termine de cargar los datos porque lo que tengo entendido el flush muestra los datos una vez procesados siempre y cuando el respose.buffer este en true...

Otra cosilla con el script que yo hice se podrá fusionar con el metodo flush???... para que ponga una capa con el texto cargando y cuando el servidor este listo para mostrar los datos que esconda la capa y muestre los resultados...

Otro detalle la propiedad buffer y el metodo flush tambien trabajan en IIS 5.1???

Bueno espero que con esto podamos ir armando la solucion a nuestro amigo puyehue...

Saludos...
__________________
Ing. Javier Ugalde
Desarrollador de Aplicaciones Web / Windows
Director de Desarrollos Web
Ing. en Información
Email: [email protected]
Telf. Hab: +[58] - (243) - 232.02.06
Telf. Cel: +[58] - (414) - 455.26.80
  #5 (permalink)  
Antiguo 02/04/2003, 16:17
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 24 años, 1 mes
Puntos: 535
Cita:
...entonces si como comentas no usaremos el esconde() va a quedar el mensaje de cargando...

No! No dije en ningún momento que no se use esconde(), sino que, en el script original, no realizaría el efecto deseado. Veamos...

(asumamos que response.buffer = true)

1- El intérprete ASP comienza a leer el archivo.
2- Al encontrarse con bloques ASP, los procesa (independientemente de dónde se encuentren en el archivo -inicio, intermedio, final-)
3- Como "buffer=true", no va a entregar nada al cliente hasta que finalizó de interpretar todo bloque ASP.
4- Una vez finalizado este proceso, el cliente recibe absolutamente todo el archivo HTML resultante (desde <html> hasta </html>)

Con lo que, el cambio entre la capa "cargando... por favor espere" y la desaparición de la misma es instantanea (o casi).



Con mi propuesta, los pasos anteriores quedarían así:

1- El intérprete ASP comienza a leer el archivo.
2- Si al inicio hay bloques ASP los procesa y no entrega nada al cliente (como un chequeo de autorización de acceso, por ejemplo)
3- Antes de realizar el while para recorrer el recordset e inmediatamente después del javascript que nos crea la capa que nos alerta a esperar, se coloca el response.flush y se envía al cliente todo el HTML hasta ese punto (con lo cual la capa ya es visible al usuario y además el onload ya existe para el cliente).
4- El IIS continúa trabajando el recordset y generando el HTML con sus datos.
5- Cuando termina le envía eso al cliente, finaliza la carga de la página y, por lo tanto, se ejecuta el onload (digamos, se oculta la primer capa)


Bueno, espero que hasta aquí se halla entendido

Ahora, con respecto a...

Cita:
Otro detalle la propiedad buffer y el metodo flush tambien trabajan en IIS 5.1???
La verdad que no lo se



Saludos
  #6 (permalink)  
Antiguo 02/04/2003, 17:47
 
Fecha de Ingreso: diciembre-2001
Mensajes: 262
Antigüedad: 23 años, 3 meses
Puntos: 0
Vaya, Muy bien....

Lo he puesto a funcionar y va de maravilla

(le he añadido el Response.Flush )

Sencillo, rapido, y limpio.

  #7 (permalink)  
Antiguo 02/04/2003, 18:25
Avatar de MsTech.DotNet  
Fecha de Ingreso: marzo-2003
Ubicación: Maracay - Edo. Aragua
Mensajes: 605
Antigüedad: 22 años
Puntos: 0
ya entendi...

Jajajajaja ahh ok ahora si entendi... tu propuesta era unir los dos scripts puesto que como se trata de asp entonces en este caso el script por si solo no trabajaria correctamente, entonces habria que agregarle el response.flush y tener la propiedad response.buffer en true y bueno seguir los pasos que colocastes en el post... cierto???

Si bueno la idea era organizar todo el html el script y el asp... para que funcione correctamente y creo que como lo pusistes ira de maravilla

Bueno de cualquier modo le solucionamos el problema a nuestro amigo puyehue porque como almaluz ya lo probo y funciono bien entonces caso cerrado...

Cualquier otra pregunta estamos abiertos a responderla...

Saludos...
__________________
Ing. Javier Ugalde
Desarrollador de Aplicaciones Web / Windows
Director de Desarrollos Web
Ing. en Información
Email: [email protected]
Telf. Hab: +[58] - (243) - 232.02.06
Telf. Cel: +[58] - (414) - 455.26.80
  #8 (permalink)  
Antiguo 02/04/2003, 19:24
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 24 años, 1 mes
Puntos: 535
Cita:
como se trata de asp entonces en este caso el script por si solo no trabajaria correctamente
Jeje... claro. Estamos en el foro ASP, no?

Igual te comento que no estaba seguro que funcionase ya que no lo probé antes

Pero afortunadamente lo hizo


Saludos
  #9 (permalink)  
Antiguo 03/04/2003, 15:56
 
Fecha de Ingreso: febrero-2002
Mensajes: 157
Antigüedad: 23 años, 1 mes
Puntos: 0
Les agradezco mucho su ayuda, en estos momentos debo implementar ese codigo, y si ALMALUZ ya lo probó y funciono, no creo tener problemas para implementarlo.

Se pasaron, no habia recivido tan buena ayuda antes, bueno muy buena suerte y gracias por la manito....

Puyehue
  #10 (permalink)  
Antiguo 03/04/2003, 18:02
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 24 años, 1 mes
Puntos: 535
MsTech.DotNet debería decirte "de nada" puesto que la idea general fue suya

Yo sólo metí un bocadillo

Ahora, y ya que agradecés a ambos, te digo de nada


Salud
  #11 (permalink)  
Antiguo 07/04/2003, 20:20
Avatar de MsTech.DotNet  
Fecha de Ingreso: marzo-2003
Ubicación: Maracay - Edo. Aragua
Mensajes: 605
Antigüedad: 22 años
Puntos: 0
Salud..... Hip... Coooo... Ya estoy borracho es que tarde en responder y te podras imaginar cuanto he bebido... jajajajaja

Saludos...
__________________
Ing. Javier Ugalde
Desarrollador de Aplicaciones Web / Windows
Director de Desarrollos Web
Ing. en Información
Email: [email protected]
Telf. Hab: +[58] - (243) - 232.02.06
Telf. Cel: +[58] - (414) - 455.26.80
  #12 (permalink)  
Antiguo 07/04/2003, 21:08
 
Fecha de Ingreso: febrero-2002
Mensajes: 442
Antigüedad: 23 años, 1 mes
Puntos: 2
Muy Bueno! hace un tiempito pregunte lo mismo y NADA!!!
__________________
tech-nico.com
  #13 (permalink)  
Antiguo 07/04/2003, 21:16
Avatar de MsTech.DotNet  
Fecha de Ingreso: marzo-2003
Ubicación: Maracay - Edo. Aragua
Mensajes: 605
Antigüedad: 22 años
Puntos: 0
Para eso son los foros.... siempre habrá alguien que nos saque la pata del barro en algun momento...

Saludos...
__________________
Ing. Javier Ugalde
Desarrollador de Aplicaciones Web / Windows
Director de Desarrollos Web
Ing. en Información
Email: [email protected]
Telf. Hab: +[58] - (243) - 232.02.06
Telf. Cel: +[58] - (414) - 455.26.80
  #14 (permalink)  
Antiguo 07/04/2003, 21:29
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 24 años, 1 mes
Puntos: 535
Cita:
Mensaje Original por MsTech.DotNet
Para eso son los foros.... siempre habrá alguien que nos saque la pata del barro en algun momento...
Cierto. Y, además, agregaría:

Siempre habrá alguien que nos haga ver otras posibilidades

En lo que me toca con respecto a ello, ante la pregunta de "mostrar un mensaje de espera mientras se generan los resultados" siempre dije: es imposible (sólo con ASP. Y como en javascript no estoy muy puesto... )


Salud!

PD: Cuando digo "Salud" no significa nada más que un saludo "diferente"
  #15 (permalink)  
Antiguo 07/04/2003, 21:40
Avatar de MsTech.DotNet  
Fecha de Ingreso: marzo-2003
Ubicación: Maracay - Edo. Aragua
Mensajes: 605
Antigüedad: 22 años
Puntos: 0
Jajajajajajaja ta buena esa...

Si bueno en realidad las bondades de los foros son infinitas.... y gracias a ellos es posible que uno intercambie sus concociemientos y experiencias y por ende aprender cada dias mas de los demas y que los demas aprendan cada dias mas de ti...

Jejejejeje con lo de Salud lo dije por echar broma, Hip , jajajajaja

Salud!!

Cya...
__________________
Ing. Javier Ugalde
Desarrollador de Aplicaciones Web / Windows
Director de Desarrollos Web
Ing. en Información
Email: [email protected]
Telf. Hab: +[58] - (243) - 232.02.06
Telf. Cel: +[58] - (414) - 455.26.80
  #16 (permalink)  
Antiguo 08/04/2003, 05:12
 
Fecha de Ingreso: febrero-2002
Mensajes: 442
Antigüedad: 23 años, 1 mes
Puntos: 2
Dear Friends:
Hola amigos tengo un problemita....
yo tengo un bloque de asp bastante grande donde primero hay un par de pasos donde chequeo errores etc etc... despues de todo eso... viene el asp donde muestro los rows de la consulta resultante. Por lo que el Javascript lo tengo que escribir con ASP.
El problemita es que al no manejar bien JS me tira unos errorcitos de sintaxis que no puedo solucionar....
Algun Capo que me de una mano ???


jijiji me habia olvidado de poner el codigo

response.write("<script language='JavaScript'>")
response.write("if(ie || ns) document.write('<div id='precarga' align='center'><br><b>Cargando....</b><br>Por Favor Espere...!!!</div>');")
response.write("</script>")
Response.Flush()
__________________
tech-nico.com

Última edición por OXIGENO; 08/04/2003 a las 05:16
  #17 (permalink)  
Antiguo 08/04/2003, 07:01
 
Fecha de Ingreso: febrero-2002
Mensajes: 442
Antigüedad: 23 años, 1 mes
Puntos: 2
Eso ya lo solucione... pero ahora me pone que "precarga no esta definido"... y me tira el error en la funcion esconde()

function esconde() {
if (ie) precarga.style.visibility="hidden";
if(ns) document.precarga.visibility="hide";
}

El estilo esta definido en el head... mas arriba de este JS que me tira error... alguien que me ayude!
__________________
tech-nico.com
  #18 (permalink)  
Antiguo 09/04/2003, 11:44
 
Fecha de Ingreso: febrero-2002
Mensajes: 442
Antigüedad: 23 años, 1 mes
Puntos: 2
Por que nadie responde ?
alguien que me de una ayuda ???

El estilo esta bien definido... pero me sigue tirando el error de que "precarga" no esta definido...

estoy seguro que es una pabada lo que falta solo que no me doy cuenta!.... y llego a esta conclusion porque cuando lo pruebo... me aparece el mensaje... pero en ves de que me lo ponga en el LAYER me lo escribe arriba de la tabla del resultado sql
Es como que no la capa(layer) no existiera...
__________________
tech-nico.com
  #19 (permalink)  
Antiguo 09/04/2003, 12:10
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 24 años, 1 mes
Puntos: 535
Es que ahora tu problema pasa por javascript... yo no te puedo ayudar. Te recomiendo hagas la pregunta en el foro javascript a ver que te dicen los que saben del tema
__________________
...___...
  #20 (permalink)  
Antiguo 09/04/2003, 17:19
 
Fecha de Ingreso: febrero-2002
Mensajes: 442
Antigüedad: 23 años, 1 mes
Puntos: 2
Thank u baby!
__________________
tech-nico.com
  #21 (permalink)  
Antiguo 31/03/2006, 06:43
 
Fecha de Ingreso: enero-2006
Mensajes: 72
Antigüedad: 19 años, 2 meses
Puntos: 0
Información objeto Response error 'ASP 0156 : 80004005'

Hola a todos, Sres estoy tratando de implementar este codigo para entretener al usuario mientras se validan algunas cosas a nivel de ASP, sin embargo cuando, redirecciono a una tercera pagina que es la que me hace otro trabajo....se dispara este error:
Código HTML:
objeto Response error 'ASP 0156 : 80004005' 

Error de encabezado 

/misitio/miSeccion/procesarMiPagina.asp, line 218 

Los encabezados HTTP ya están escritos en el explorador cliente. Cualquier cambio en los encabezados HTTP se debe hacer antes de escribir el contenido de la página.
y la linea 218 es precisamente la redireccion a otra pagina que termina de hacer otro trabajo, la sintaxis de la linea es la siguiente:
Código HTML:
response.Redirect("../SysG/ParadasxTiempos.asp?fechaDesde1="&strFechaDesde&"&fechaHasta1="&strFechaHasta&"&idReferencia1="&strIdReferencia&"&idLocalizacion1="&strIdLocalizacion&"&idEquipo1="&strIdEquipo&"&tipoParada1="&strTipoParada&"&codProblema1="&strCodProblema&"")
. La pregunta es, existe otra forma de redireccionar y/o pasarle el control a la pagina "ParadasxTiempos.asp" sin tener problemas con el encabezado del HTTP o existe alguna forma de manipularlo? Si es de otra cosa...estoy atento a escucharles......Gracias de antemano!
  #22 (permalink)  
Antiguo 31/03/2006, 11:01
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 24 años, 1 mes
Puntos: 535
no podés hacer un response.redirect posterior a un un response.flush
__________________
...___...
  #23 (permalink)  
Antiguo 03/04/2006, 07:07
 
Fecha de Ingreso: enero-2006
Mensajes: 72
Antigüedad: 19 años, 2 meses
Puntos: 0
Esa es la pregunta!

Que tal AZ, alli es donde esta el meollo del asunto...que alternativa se podria aplicar en este caso? Disculpa la insistencia.
  #24 (permalink)  
Antiguo 03/04/2006, 11:13
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 24 años, 1 mes
Puntos: 535
No sé, no se me ocurre.
Tampoco me parece que valga la pena entretener al usuario mientras se validan algunas cosas a nivel de ASP ;)
__________________
...___...
  #25 (permalink)  
Antiguo 03/04/2006, 11:47
Avatar de JuanRAPerez
Colaborador
 
Fecha de Ingreso: octubre-2003
Mensajes: 2.393
Antigüedad: 21 años, 5 meses
Puntos: 27
una de las formas de entretener a los usuarios mientras validas asp podrian ser

creas tu pagina asp en la que recoges informacion (tu formulario por ejemplo)
pasas tus variables por un ASP temporal que solo haga eso, pasar variables.

por ejemplo

formulario.asp

contiene formulario con criterios de busqueda.
el formulario lo mandas a enespera.asp

enespera.asp
en enespera.asp recoges las variables que mandas de la pagina anterior
pones una tabla
centras la tabla 100% x 100%
haces una animacion flash que diga
"Te estoy entreteniendo jejejejej"
y en esa pagina pones un response.redirect a tu pagina de resultados
y envias ahi las variables que necesitas para poder hacer tu proceso de validacion o de busqueda

mostrar.asp
recibe varibales y ejecuta el proceso
__________________
JuanRa Pérez
San Salvador, El Salvador
  #26 (permalink)  
Antiguo 03/04/2006, 14:05
 
Fecha de Ingreso: enero-2006
Mensajes: 72
Antigüedad: 19 años, 2 meses
Puntos: 0
Desacuerdo

Bueno...AZ, en funcion de que eres MODERADOR de este foro, pienso en que deberias de tener una actitud mas colaborativa con las dudas que aqui se plantean...y no juzgar el tal o cual de como se deben hacer las cosas, como desarrollador debes saber que el cliente te pide un producto y de forma logica se debe explicar, plasmar y/o ilustrar como se va a mostrar lo que el esta pidiendo....mas no a imponer una u otra forma de como te parece hacerlo....digo todo esto por la respuesta que das a una simple pregunta:

Cita:
Iniciado por Al Zuwaga
No sé, no se me ocurre.
Tampoco me parece que valga la pena entretener al usuario mientras se validan algunas cosas a nivel de ASP ;)

Si no se te ocurre...como comentas dejemos que otro le de respuestas..tal cual lo hizo el camarada JuanRAPerez, pero simplemente por que no se me ocurra nada voy a contestar una soquetada. De todas formas igualmente agradecido por tu comentario...y al camarada Juan....Gracias por su tiempo!

Y el objetivo de todo esto es no presentar una pantalla "FRIA" por tanto tiempo (Unos 80 segundos), mientras que se va a una BD AS400 con unos 300.000 registros a 1ro Hacer una validación y luego buscar unos datos para luego transformalos y posteriormente mostrarlos...por eso es mi pregunta.
  #27 (permalink)  
Antiguo 03/04/2006, 14:23
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 24 años, 1 mes
Puntos: 535
Cita:
Tampoco me parece que valga pena...
No dije una verdad absoluta, no generalicé, no dije que para vos o para tu cliente no valga la pena. Solamente expresé una opinión personal.

¿Tanto escándalo por eso?
__________________
...___...
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 14:55.