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

Mostrar una tabla y cortarla por rubros

Estas en el tema de Mostrar una tabla y cortarla por rubros en el foro de ASP Clásico en Foros del Web. Hola buenas tardes! Tengo una página en la que debo montar una tabla que extrae los valores de una tabla de la base de datos ...
  #1 (permalink)  
Antiguo 16/09/2004, 15:27
yag
 
Fecha de Ingreso: febrero-2004
Ubicación: Ccs
Mensajes: 54
Antigüedad: 20 años, 4 meses
Puntos: 0
Exclamación Mostrar una tabla y cortarla por rubros

Hola buenas tardes!

Tengo una página en la que debo montar una tabla que extrae los valores de una tabla de la base de datos de mi intranet, la cual tiene una serie de campos entre los cuales existe uno llamado "rubro" el cual indica un tipo de operación, este campo puede repetirse n cantidad de veces, pero hay varios tipos de rubros, todos se manejan con un valor numérico del 1 al 6.

Yo hago la consulta SQL para mostrar los datos y los ordeno por rubro, mi problema está en que necesito que cada vez que se corta un rubro se inserte una fila más en la tabla para totalizarlos y a partir de esa fila, es decir, hacia abajo, continuen los rubros siguientes, calculando sus totales igual que para el caso anterior.

Aqui les pego el código que tengo para montar la estructura de la tabla desde la sentencia SQL, para que por favor, si pueden, me echen una manito con esto.

De Antemano Gracias

Código:
<%
SQL="SELECT * from credito order by rubro"
set rs=oConn.Execute(SQL)
If not rs.eof then
While not rs.eof
id=id+1
%>
    <td height="34" bordercolor="#CCCCCC" class="texto"><%=id%></td>
    <td bordercolor="#CCCCCC" class="texto"><%=rs.fields("nombre_cliente")%></td>
    <td bordercolor="#CCCCCC" class="texto"><%=rs.fields("numero_cliente")%></td>
    <td bordercolor="#CCCCCC" class="texto"><%=rs.fields("modalidad")%>&nbsp;</td>
    <td bordercolor="#CCCCCC" class="textoNum"><%
		monto1=monto1+rs.fields("monto")
		Response.Write(FormatNumber(rs.fields("monto"),2))
		%></td>
    <td bordercolor="#CCCCCC" class="texto"><div align="center"><%=rs.fields("salida")%>&nbsp;</div></td>
    <td bordercolor="#CCCCCC" class="texto"><div align="center"><%=rs.fields("cupo")%>&nbsp;</div></td>
    <td bordercolor="#CCCCCC" class="texto"><%=rs.fields("garantia")%>&nbsp;</td>
    <td bordercolor="#CCCCCC" class="texto"><div align="center"><%=rs.fields("tasa")%>%</div></td>
    <td bordercolor="#CCCCCC" class="texto">&nbsp;</td>
    <td bordercolor="#CCCCCC" class="texto"><div align="center"><%=rs.fields("plazo")%></div></td>
    <td bordercolor="#CCCCCC" class="texto">&nbsp;</td>
    <td bordercolor="#CCCCCC" class="texto">&nbsp;</td>
    <td bordercolor="#CCCCCC" class="textoNum"><%=FormatNumber(rs.fields("prom_indiv"),0)%></td>
    <td bordercolor="#CCCCCC" class="textoNum"><%=FormatNumber(rs.fields("riesgo_indiv"),0)%></td>
    <td bordercolor="#CCCCCC" class="textoNum"><%=FormatNumber(rs.fields("prom_grupal"),0)%></td>
    <td bordercolor="#CCCCCC" class="textoNum"><%=FormatNumber(rs.fields("riesgo_grupal"),0)%></td>
    <td bordercolor="#CCCCCC" class="textoNum"><%=FormatNumber(rs.fields("dpf"),0)%></td>
    <td bordercolor="#CCCCCC" class="textoNum"><%=rs.fields("rubro")%></td>
  </tr>
  <tr class="texto"> 
    <td height="16" colspan="4" bordercolor="#CCCCCC" class="texto">TOTALES</td>
    <td colspan="3" bordercolor="#CCCCCC" class="textoNum">&nbsp;</td>
    <td colspan="11" bordercolor="#CCCCCC" bgcolor="#000000" class="texto">&nbsp;</td>
    <td bordercolor="#CCCCCC" class="textoNum">&nbsp;</td>
  </tr>
    <%
  rs.MoveNext
  wend
  end if
  %>
Gracias
  #2 (permalink)  
Antiguo 16/09/2004, 22:56
 
Fecha de Ingreso: abril-2004
Ubicación: México D.F.
Mensajes: 1.724
Antigüedad: 20 años, 1 mes
Puntos: 4
Bueno asi porque sí la verdad no te entiendo y menos a tu código,
Si ponemos las cosas como queremos las salida uno se da una mayor idea no?

Describe la salida :

Quiero que aparezca así .....

Rubro 1 .... blablabla...
total.....
  #3 (permalink)  
Antiguo 17/09/2004, 05:02
yag
 
Fecha de Ingreso: febrero-2004
Ubicación: Ccs
Mensajes: 54
Antigüedad: 20 años, 4 meses
Puntos: 0
Exclamación Descripción de la salida

Debe ser algo así la salida:

Comité de Credito

ID | Cliente | Nro Cuenta | Monto | Modalidad
------------------------------------------------------------
1 | Cliente A | 88215253322 | 20000000 | linea de crdt
2 | Cliente B | 98415896321 | 10000000 | pagare comc
------------------------------------------------------------
Total Descuentos Comerciales | 30000000
------------------------------------------------------------
3 | Cliente C | 66919875320 | 40000000 | Carta de crdt
4 | Cliente D | 32415896321 | 5000000 | MCPRE Ccom
------------------------------------------------------------
Total Eliminación de Lineas | 45000000
------------------------------------------------------------
Total Creditos a Comité | 75000000,00
------------------------------------------------------------

Los rubros son por ejemplo estos dos, descuento comercial y eliminación de lineas, dentro de la base de datos se identifican con un valor numérico, las operaciones que corresponden a descuentos comerciales equivalen a un "01", las eliminaciones de líneas, equivalen a un "06", y así sucesivamente.

Al final hago una suma de todos los rubros, el problema es para cortar en cada uno y subtotalizar.

Espero ahora si me haya explicado un poco mejor.

Gracias!
  #4 (permalink)  
Antiguo 17/09/2004, 08:10
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 4 meses
Puntos: 146
algo rapido:

rubro_ant = rs("rubro")
suma=0
While not rs.eof
%>tabla html<%
suma=suma+rs("monto")
rs.movenext
if rs("rubro") <> rubro_ant
%>fila donde muestras el total<%
rubro_ant = rs("rubro")
suma=0
end if
wend

¿era eso?
  #5 (permalink)  
Antiguo 17/09/2004, 10:40
yag
 
Fecha de Ingreso: febrero-2004
Ubicación: Ccs
Mensajes: 54
Antigüedad: 20 años, 4 meses
Puntos: 0
Exclamación Ocurrio una excepcion

Myakire, estuve haciendo el cambio que me dijiste y monté una captura rápida para ver si funcionaba y no leer todos los campos de la bd, pero no funcionó, aqui te pego todo el codigo de la aplicacion para que veas si entiendes por qué me da error. El IE arroja, ocurrió una "excepción 80020009"

Código:
<%
Dim oConn, rs, SQL, suma, id, monto, rubro, rubro_ant
id=0
set oConn=Server.CreateObject("ADODB.Connection")
oConn.open "DSN=intranet"
SQL="SELECT * from credito order by rubro"
set rs=oConn.Execute(SQL)
rubro_ant=rs.fields("rubro")
suma=0
While not rs.eof
Id=id+1
Response.Write(id)
Response.Write(rs.fields("nombre_cliente"))
Response.Write(rs.fields("numero_cliente"))
Response.Write(rs.fields("rubro"))
suma= suma + monto
rs.MoveNext
if rs("rubro") <> rubro_ant then%>
 <br> totales: 
 <%Response.Write(suma)%>
 <br> 
<%
rubro_ant=rs.fields("rubro")
suma=0
end if
wend
%>
Gracias!
  #6 (permalink)  
Antiguo 17/09/2004, 10:54
 
Fecha de Ingreso: abril-2004
Ubicación: México D.F.
Mensajes: 1.724
Antigüedad: 20 años, 1 mes
Puntos: 4
mmm. Tienes identificados los rubros ??? Me imagino que si...
Yo tuve algo similar... eran unos estados de cuenta detallados

lo busco y te posteo la idea. Ok... y las pantallas
  #7 (permalink)  
Antiguo 17/09/2004, 12:25
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 4 meses
Puntos: 146
Bueno, como lo escribi rápido, la verdad es que no medite mucho sobre el mismo, pero el ropoblema puede ser que al llegar a EOF (rs.movenext) intentamos hacer referencia a rs("rubro"), lo cual esta mal.

Si movemos el código un poco se soluciona esto:

Código:
set rs=oConn.Execute(SQL)
rubro_ant=rs.fields("rubro")
suma=0
While not rs.eof
   if rs("rubro") <> rubro_ant then%>
    <br> totales: <%=suma%> <br> 
   <%
     rubro_ant=rs.fields("rubro")
     suma=0
   end if
   Id=id+1
   Response.Write(id)
   Response.Write(rs.fields("nombre_cliente"))
   Response.Write(rs.fields("numero_cliente"))
   Response.Write(rs.fields("rubro"))
   suma= suma + monto
   rs.MoveNext
wend
   %> <br> totales: <%=suma%> <br> <%
%>
El útimo desplegado es para el último total (ya que se haya llegado al EOF).
  #8 (permalink)  
Antiguo 17/09/2004, 13:41
yag
 
Fecha de Ingreso: febrero-2004
Ubicación: Ccs
Mensajes: 54
Antigüedad: 20 años, 4 meses
Puntos: 0
Muchas Gracias Myakire - Orharo2003

Con algunos pequeños cambios, ya está listo.

¡Muchas Gracias por la ayuda!

Saludos
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:06.