Ver Mensaje Individual
  #1 (permalink)  
Antiguo 21/08/2006, 12:04
slashpage15
 
Fecha de Ingreso: agosto-2006
Mensajes: 3
Antigüedad: 18 años, 8 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%>