| |||
ASP + Excel + Pantalla de espera Hola a todos, bueno hace ya bastante tiempo que estoy renegando con este tema. Lo que quiero hacer es lo siguiente, tengo una consulta a una base de datos que tarda demasiado (5 min aprox) luego de realizar esta consulta el resultado lo exporto a un archivo de Excel. Tengo una pagina que es la que muestra el mensaje de espera junto con una imagen de carga (tipico loading animado) y quiero que en segundo plano realice la consulta y cuando esta este terminada me permita guardar el archivo excel con el resultado. Ya he probado de varias maneras, primero cargue la pagina con la imagen de espera y redireccione a la pagina que realiza la consulta pero el gif deja de funcionar ya que se cargo la pagina que realiza la consulta. Tambien trate de hacerlo con AJAX y si bien funciona todo como deberia nunca me exporta el archivo excel y se que la pagina se la llama ya que he puesto varios punto de interrupcion y pasan. Espero que me den una idea de como solucionarlo. Gracias. Última edición por richard07; 03/02/2009 a las 12:11 |
| |||
Respuesta: ASP + Excel + Pantalla de espera Si lo prove pero no me sirve. Lo que necesito es sencillo, pagina de espera y en segundo plano se ejecuta la consulta. Cuando la consulta esta lista se exporta a Excel y ahi termina. |
| ||||
Respuesta: ASP + Excel + Pantalla de espera ok entonces si probaste tendrás algunos códigos porque no los pegas y veremos que podemos hacer. se me ocurre probar con flush te parce? EDITADO: Pegas el codigo funcional para poder ayudarte ¡???
__________________ JuanRa Pérez San Salvador, El Salvador |
| |||
Respuesta: ASP + Excel + Pantalla de espera Lo que pasa con el Response.flush es que obliga al servidor a enviar lo que tiene cargado en el cache, esto no me sirve ya que si quiero mostrar una pagina completa (header-body-footer) no lo hace ya que no tiene todo cargado. Aqui te muestro la pagina principal, como veras tiene implementado el objeto XMLHTTPRequest, al cargarse la pagina llama a la funcion que hace la peticion a la pagina que realiza la consulta y exportacion a excel mientras muestra el mensaje con un gif de espera. Una vez realizada la exportcion (que no la hace) me redirecciona a otra pagina que contiene un mensaje que le avisa al usuario que el proceso finalizo. El problema para mi esta en que al no devolver nada ni en los header o en la URL el objeto XMLHTTPRequest interpreta como que no sucedio nada. Aqui el codigo:
Código:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <link rel="stylesheet" type="text/css" href="style.css"> <title>INDEX</title> <script language="javascript" type="text/javascript"> function handleHttpResponse() { if (http.readyState == 4) { // completado if (http.status == 200) { // OK location.href='fin.asp' enProceso = false; } } } function realizaConsulta() { if (!enProceso && http) { var url = "excel.asp"; http.open("GET", url, true); http.onreadystatechange = handleHttpResponse; enProceso = true; http.send(null); } } function getHTTPObject() { var xmlhttp; /*@cc_on @if (@_jscript_version >= 5) try { xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } catch (E) { xmlhttp = false; } } @else xmlhttp = false; @end @*/ if (!xmlhttp && typeof XMLHttpRequest != 'undefined') { try { xmlhttp = new XMLHttpRequest(); } catch (e) { xmlhttp = false; } } return xmlhttp; } var enProceso = false; // lo usamos para ver si hay un proceso activo var http = getHTTPObject(); // Creamos el objeto XMLHttpRequest </script> </head> <body onLoad="realizaConsulta()"> <div id="contenedor"> <div id="cabecera"> <img src="images/header_internet.jpg" width="775" height="128"> </div> <div id="cargando"> <p>Procesando datos. Por favor espere...</p> <img src="images/loading.gif"> </div> <div id="pie">Copyright © 2008</div> </div> </body> </html> |