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

ASP + Excel + Pantalla de espera

Estas en el tema de ASP + Excel + Pantalla de espera en el foro de ASP Clásico en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 03/02/2009, 12:04
 
Fecha de Ingreso: abril-2007
Mensajes: 6
Antigüedad: 17 años, 1 mes
Puntos: 0
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
  #2 (permalink)  
Antiguo 03/02/2009, 12:28
Avatar de JuanRAPerez
Colaborador
 
Fecha de Ingreso: octubre-2003
Mensajes: 2.393
Antigüedad: 20 años, 7 meses
Puntos: 27
Respuesta: ASP + Excel + Pantalla de espera

ummm hay varios post con temas similares

entre las ideas estaba un response.flush no se si has probado
__________________
JuanRa Pérez
San Salvador, El Salvador
  #3 (permalink)  
Antiguo 03/02/2009, 12:33
 
Fecha de Ingreso: abril-2007
Mensajes: 6
Antigüedad: 17 años, 1 mes
Puntos: 0
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.
  #4 (permalink)  
Antiguo 03/02/2009, 15:17
Avatar de JuanRAPerez
Colaborador
 
Fecha de Ingreso: octubre-2003
Mensajes: 2.393
Antigüedad: 20 años, 7 meses
Puntos: 27
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
  #5 (permalink)  
Antiguo 04/02/2009, 08:32
 
Fecha de Ingreso: abril-2007
Mensajes: 6
Antigüedad: 17 años, 1 mes
Puntos: 0
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 &copy; 2008</div>
	</div>
</body>
</html>
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 22:06.