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

Problema raro en asp con matrices

Estas en el tema de Problema raro en asp con matrices en el foro de ASP Clásico en Foros del Web. Realmente tengo un problema muy raro, que no logro entender . Estoy haciendo una exportacion de un conjunto de tablas, eso funciona bien que es ...
  #1 (permalink)  
Antiguo 21/08/2006, 12:04
 
Fecha de Ingreso: agosto-2006
Mensajes: 3
Antigüedad: 17 años, 9 meses
Puntos: 0
Problema raro en asp con matrices

Realmente tengo un problema muy raro, que no logro entender .

Estoy haciendo una exportacion de un conjunto de tablas, eso funciona bien que es lo siguiente:

SQL_st_1="SELECT t1.*,t2.motivo,mot.desc_motivo des_motivo ,tur.desc_turno,c.nombre," &_
"c.domicilio,c.zona_escolar ze,c.servicio,ser.desc_servicio des_serv,c.sostenimiento sosnmto," &_
"sos.desc_del_sostenimiento des_sost,c.municipio,c.nombre_de_municipio nom_mun," &_
"c.localidad,c.nombre_de_localidad nom_loc,c.categoria_poblacion catpob,c.region," &_
"c.des_region,c.subregion,c.des_subregion des_subreg" &_
" FROM pri_dir t1 (index idx_cic_cve),pri_adm t2 (index idx_cic_cve)," &_
"motivos mot (index pk_motivos),dbvistacct..vista_cct c (index clv_inv)," &_
"dbvistacct..turno2 tur (index pk_turno),dbvistacct..servicios ser (index clvinv)," &_
"dbvistacct..sostenimientos sos (index clvinv)" &_
" where (t1.clave2=t2.clave2) and" &_
" (t1.ciclo=t2.ciclo) and" &_
" (t2.motivo*=mot.motivo) and" &_
" (substring(t1.clave2,10,1)=c.elemento_verificador) and" &_
" (substring(t1.clave2,6,4)=c.numero_progresivo) and" &_
" (substring(t1.clave2,4,2)=c.identificador) and" &_
" (substring(t1.clave2,3,1)=c.clasificador) and" &_
" (t1.turno2=tur.turno) and" &_
" (c.servicio=ser.clv_servicio) and" &_
" (c.clasificador=ser.clave_clasificador) and" &_
" (c.dependencia_administrativa=sos.dep_administrati va) and" &_
" (c.clasificador=sos.clave_clasificador) and" &_
" (c.sostenimiento=sos.clv_del_sostenimiento) and" &_
" (t1.ciclo='"&val_ciclo&"') order by t1.clave2"


lo cual desplego de la siguiente manera:

<%' esto es para los encabezados
for x = 0 to RS.Fields.Count-1 %>
<td><%=(RS.Fields(x).Name)%></td>
<%
next
%>
</tr>
<% ' fin de poner encabezados
tabla=RS.GetRows
RS.close
set RS=nothing
OC_st.close
set OC_st=nothing

for I = 0 to UBound(Tabla,2)
response.write "<tr>"
for J = 0 to UBound(Tabla,1)
response.Write("<TD>" & Tabla(J,I) & "</TD>")
next
response.write "</tr>"
next

al ejecutar me marca error la pagina, he detectado que si paso que si cambio los valores de los for ejemplo me sigue fallando el 1700 lo cambio por 1500 y funciona de maravilla, lo mismo me pasaba cuando utilizaba el recorset , tenia que modificar los valores, por eso cambie a getrows, para quitarme de propiedades del recorset, pero presenta el mismo problema , siento que no puede, se pierde el control de cuando finaliza o empieza la matriz o no la puede interpretar y es pesado para el servidor, por favor si alguien tiene una respuesta,, se lo agredaceria, la verdad es que ese es el problema ya le he dado muchas vueltas...


for I = 0 to 1700 'por decir y a un asi no jala tengo que bajarlo a 1500
response.write "<tr>"
for J = 0 to 251' UBound(Tabla,1)
response.Write("<TD>" & Tabla(J,I) & "</TD>")
next
response.write "</tr>"
next


este es el error que me marca:

error '80020009'
/persidec/exporta_pri.asp, línea 24



este es el programa completo: con sus osbervaciones en rojo:

<!-- #include file="funciones.asp" -->
<%

Set OC_st = Server.CreateObject("AdoDB.Connection")
Set RS = Server.CreateObject("AdoDB.RecordSet")
Set RS_aux = Server.CreateObject("AdoDB.RecordSet")
Set RS_exp = Server.CreateObject("AdoDB.RecordSet")
OC_st.Open "DSN=persidec_web;UID=persidec_usr;PWD=persi10 "



val_ciclo= request.form("ciclos")
val_archivo= request.form("archivo")

SQL_exp = "SELECT exportar FROM ciclosfin where ciclo='"&val_ciclo&"'"
RS_exp.Open SQL_exp, OC_st

If rs_exp("exportar")="S" or trim(session("g_registro"))="SUPERVISOR" then

if val_archivo="PERSONAL DIRECTIVO Y DOCENTE" then
val_arch_real="pri_dir"

if val_ciclo<>"TODOS" then
' este es el select completo,funciona y si lo ejecuto este no es capas de mostrarse completo , ya comprobe y el select esta bien si se ejecuta bien , el problema es al recorrerlo para desplegarlo en pantalla o en formato excel
SQL_st="SELECT t1.*,t2.motivo,mot.desc_motivo des_motivo ,tur.desc_turno,c.nombre," &_
"c.domicilio,c.zona_escolar ze,c.servicio,ser.desc_servicio des_serv,c.sostenimiento sosnmto," &_
"sos.desc_del_sostenimiento des_sost,c.municipio,c.nombre_de_municipio nom_mun," &_
"c.localidad,c.nombre_de_localidad nom_loc,c.categoria_poblacion catpob,c.region," &_
"c.des_region,c.subregion,c.des_subregion des_subreg" &_
" FROM pri_dir t1 (index idx_cic_cve),pri_adm t2 (index idx_cic_cve)," &_
"motivos mot (index pk_motivos),dbvistacct..vista_cct c (index clv_inv)," &_
"dbvistacct..turno2 tur (index pk_turno),dbvistacct..servicios ser (index clvinv)," &_
"dbvistacct..sostenimientos sos (index clvinv)" &_
" where (t1.clave2=t2.clave2) and" &_
" (t1.ciclo=t2.ciclo) and" &_
" (t2.motivo*=mot.motivo) and" &_
" (substring(t1.clave2,10,1)=c.elemento_verificador) and" &_
" (substring(t1.clave2,6,4)=c.numero_progresivo) and" &_
" (substring(t1.clave2,4,2)=c.identificador) and" &_
" (substring(t1.clave2,3,1)=c.clasificador) and" &_
" (t1.turno2=tur.turno) and" &_
" (c.servicio=ser.clv_servicio) and" &_
" (c.clasificador=ser.clave_clasificador) and" &_
" (c.dependencia_administrativa=sos.dep_administrati va) and" &_
" (c.clasificador=sos.clave_clasificador) and" &_
" (c.sostenimiento=sos.clv_del_sostenimiento) and" &_
" (t1.ciclo='"&val_ciclo&"') order by t1.clave2"

' este es un select mas ligero no involucro tablas de la otra base de datos y este si funciona me despliega bien todos lo datos no causa error al meterlo a lo ciclos for
SQL_st_2="SELECT t1.*,t2.motivo,mot.desc_motivo des_motivo" &_
" FROM pri_dir t1 (index idx_cic_cve),pri_adm t2 (index idx_cic_cve)," &_
"motivos mot (index pk_motivos)" &_
" where (t1.clave2=t2.clave2) and" &_
" (t1.ciclo=t2.ciclo) and" &_
" (t2.motivo*=mot.motivo) and" &_
" (t1.ciclo='"&val_ciclo&"') order by t1.clave2"



RS.Open SQL_st, OC_st
else
SQL_st = "SELECT pri_dir.*,pri_adm.motivo FROM pri_dir,pri_adm where (pri_dir.clave2=pri_adm.clave2) and (pri_dir.ciclo=pri_adm.ciclo) order by pri_dir.ciclo"
RS.Open SQL_st, OC_st
end if
end if



if val_archivo="RECURSOS COMPUTACIONALES Y AUDIOVISUALES" then
val_arch_real="pri_recomp"
if val_ciclo<>"TODOS" then
SQL_st = "SELECT r.*,pri_adm.motivo FROM recursos_comp r,pri_adm where (r.clave=pri_adm.clave2) and (r.ciclo=pri_adm.ciclo) and (r.ciclo='"&val_ciclo&"') and (r.nivel=""2"") order by r.clave"
RS.Open SQL_st, OC_st
else
SQL_st = "SELECT r.*,pri_adm.motivo FROM recursos_comp r,pri_adm where (r.clave=pri_adm.clave2) and (r.ciclo=pri_adm.ciclo) and (r.nivel=""2"") order by r.ciclo "
RS.Open SQL_st, OC_st
end if
end if

Response.ContentType = "application/vnd.ms-excel"


param_arch="filename="&val_arch_real&".xls;"
Response.AddHeader "Content-Disposition", param_arch
' lets print the fields on top

%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title></title>
</head>
<body>
<form name="f" method="post" action="exporta_pri.asp">
<table width="100" border="1" cellspacing="0" cellpadding="0">
<tr>
<td>Nivel De Primaria</td>
</tr>
<tr>
<td></td>
</tr>
<tr bgcolor="#CCCCCC" >
<%' aqui desplego lo encabezados directo del recordset
for x = 0 to RS.Fields.Count-1 %>
<td><%=(RS.Fields(x).Name)%></td>
<%
next
%>
</tr>
<% ' aqui libero recordset y paso a getrows
tabla=RS.GetRows
RS.close
set RS=nothing
OC_st.close
set OC_st=nothing

' este es el ciclo de llenado de la tabla, lo curioso es que con el select completo (sql_st) no jala y con el otro (sql_st2) si funciona y lo mismo pasa , haciendolo del recorset directo presenta la misma falla, estoy pensando en dividir los select hacerlo en dos partes y ver , pero antes quiero ver si me pueden ayudar , ...o dar alguna pista, si sirve de referencia el numero de renglones de la matriz o recorset esde 1719 por 252 campos o columnas y no las puede tengo que modificar 1719 por 1500 como maximo para que funciones en la sentencia for de la I
for I = 0 to UBound(Tabla,2)
response.write "<tr>"
for J = 0 to UBound(Tabla,1)
response.Write("<TD>" & Tabla(J,I) & "</TD>")
next
response.write "</tr>"
next
%>


</table>
</form>
</body>
</html>
<%else
Set RS_exp = Nothing
NoExporta
End if%>
  #2 (permalink)  
Antiguo 21/08/2006, 21:26
Avatar de trasgukabi  
Fecha de Ingreso: septiembre-2004
Mensajes: 2.749
Antigüedad: 19 años, 9 meses
Puntos: 18
Ni puta idea porque a ver quién es el guapo que se lee todo eso y deduce cual es la línea 24.

léete ésto que igual te ayuda:
http://support.microsoft.com/kb/175239
  #3 (permalink)  
Antiguo 22/08/2006, 07:55
Avatar de verinchi  
Fecha de Ingreso: septiembre-2004
Ubicación: Buenos Aires
Mensajes: 647
Antigüedad: 19 años, 8 meses
Puntos: 2
Por como posteas tu problema se hace un poco difícil encontrar el error...
Sería interesante primeramente que buscaras en la página de microsoft el código de error a ver de qué se trata, y si aún así no le encontrás la vuelta, al menos indicar cuál de las líneas corresponde a la 24 (la del error)
Como para que se haga mas fácil revisar el código.
Bueno, eso eso es todo.
Fijate que muchas veces la descripción del error que te da microsoft te da una idea clara de como solucionarlo... Suerte con eso!
__________________
Why can't we not be sober?
www.partitorium.com.ar
  #4 (permalink)  
Antiguo 22/08/2006, 13:09
Avatar de diegopedro  
Fecha de Ingreso: agosto-2006
Ubicación: Santiago
Mensajes: 120
Antigüedad: 17 años, 10 meses
Puntos: 0
ve esto

support.microsoft.com/default.aspx/kb/175239
  #5 (permalink)  
Antiguo 23/08/2006, 14:23
 
Fecha de Ingreso: agosto-2006
Mensajes: 3
Antigüedad: 17 años, 9 meses
Puntos: 0
listo , esta resuelto

por si al alguien le puede pasar lo mismo que a mi ahi les va, el problema no es de programación , es de configuracion del servisor web , ya que aqui tenemos un servidor dedicado , me puse a investigar ya que despues de varias pruebas obtuve el error de buffer insuficiente, y con algo de logica deduci que entonces el problema estaba en la capacidad del servidor web , ya investigando , la solucion fue modificar las variables de aspbufferlimit el archivo metabase.xml del servidor y eso fue la solucion , ya que exporto tablas de 255 campos con 1720 registros aproximadamante , por lo cual el buffer no era capas de almacenar y por consecuencia el programa no erea capaz de interpretar...

gracias y hsta luego espero y les sirva de algo...
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 23:57.