Ver Mensaje Individual
  #9 (permalink)  
Antiguo 11/01/2008, 14:45
Avatar de Myakire
Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 23 años, 3 meses
Puntos: 146
Re: Problema con rangos, cargando excel en asp

mmmm ..... intentas cargarlos por tramos ...... creo entender que lo que quieres es que en lugar de leer los 20000 registros en una sola llamada al servidor, hacer X llamadas en 20000/X veces ¿es así?, si esto es cierto creo que es la primera vez que veo que alguien pretenda darle solución a la consecuencia (el error de timeout) en lugar de al problema (mostrarle tantos registros al usuario); debes valorar en lo inútil que es para el usuario el tener una grilla con 20,000 registros, al usuario se le entregan solo aquellos que va a consultar o a actualizar, para ello se le colocan filtros y/o totalizados para que solo vea aquello que le es de utilidad, pero en fin.

para hacerlo eso yo lo haría de esta forma:

Código:
<%
    Dim sSourceXLS

    sSourceXLS = Server.MapPath(".") & "..\Excel\RollosCosteados.xls"
 
    Dim oConn
    Set oConn = Server.CreateObject("ADODB.Connection")
    oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
               "Data Source=" & sSourceXLS & ";" & _
               "Extended Properties=""Excel 8.0;HDR=YES;"""

		TotBloque = 1000
		RegBloque = 100
		Inicio = 1
    Dim oRS
    Set oRS = Server.CreateObject("ADODB.Recordset")
		
		%>
		<table width="100%" border="1">
		<%
		For j=1 to TotBloque / RegBloque
       Fin = RegBloque * j
       oRS.Open "Select * from [Rollos$A" & Inicio & ":Y" & Fin & "]", oConn, 1, 3
       Do While Not (oRS.EOF)
   		%><tr><%
           For i = 0 To 24
               		%><td><%=oRS.Fields(i).Value%><%
           Next
           oRS.MoveNext
       Loop
       oRS.Close
			 Inicio = i * RegBloque + 1
		Next
		%>
		</table>
		<%
    
    Set oRS = Nothing
    
    oConn.Close
    Set oConn = Nothing
%>
Eso lo hice a la primera y funciona, claro, pero el tiempo de respuesta es sin duda perceptiblemente mayor que si la lectura hubiera sido en una sola pasada.