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

Montar tablas de datos complejas

Estas en el tema de Montar tablas de datos complejas en el foro de ASP Clásico en Foros del Web. Hola, Actualmente cuando trabajo con ASP y quiero mostrar los datos de una BBDD en una tabla sigo este procedimiento: Acceso BBDD y consulta SQL: ...
  #1 (permalink)  
Antiguo 26/04/2012, 04:12
 
Fecha de Ingreso: noviembre-2009
Mensajes: 11
Antigüedad: 12 años
Puntos: 1
Montar tablas de datos complejas

Hola,

Actualmente cuando trabajo con ASP y quiero mostrar los datos de una BBDD en una tabla sigo este procedimiento:

Acceso BBDD y consulta SQL:

Código:
<%
strSQL = "SELECT Nombre, Apellido FROM Tabla1 WHERE..."
rs.open strSQL, cn
%>
Montaje Tabla en HTML y recuperacion valores de la consulta
Código:
<TABLE 
	<TR>
		<TD Columna fija 1 </TD>
		<TD Columna fija 2 </TD>
	</TR>
	
	<%DO UNTIL rs.EOF %>

	<TR>
		<TD> <% =rs("Nombre") %> 	</TD>
		<TD> <% =rs("Apellido") %> 	</TD>
	</TR>

	<% 
           rs.movenext
	   LOOP
	   rs.close
	%>
	
</TABLE>
Donde tengo unas columnas fijas y un encabezado fijo y luego en un bucle voy rellenando tantas filas como registros me vaya encontrando en la BBDD.

Bien, pues resulta que ahora tengo que montar una tabla per mucho más compleja donde el número de columnas es variable y donde en cada fila tendría que hacer una/varias consultas SQL largas, con operaciones aritméticas por el medio etc. Entonces si sigo la misma estrategia de mezclar la construccion de la tabla en HTML con los accesos SQL a la BBDD, las operaciones, etc me quedaría todo mezcladisimo y poco manejable.

Qué es recomendable hacer en estos casos? Seria una solución buena hacer primero todas las consultas SQL (muchas decenas) y todos los cálculos e ir guardando los resultados a mostrar en una o varias matrices y luego al montar la tabla ir recorriendo esas matrices y recuperar los valores de allí ? Es una buena aproximación o me recomendáis otra?

Gracias.

Última edición por mitteg; 26/04/2012 a las 05:41
  #2 (permalink)  
Antiguo 02/05/2012, 08:44
Avatar de freesoftwarrior  
Fecha de Ingreso: marzo-2006
Mensajes: 362
Antigüedad: 15 años, 8 meses
Puntos: 10
Respuesta: Montar tablas de datos complejas

GetRows(). Te explico con un ejemplo

Cita:
<%
Temp="Select * From Clientes"
Tabla.Open Temp, Conexion
arrDBDataClientes=Tabla.GetRows()
Tabla.Close

Temp="Select * From Ventas"
Tabla.Open Temp, Conexion
arrDBDataVentas=Tabla.GetRows()
Tabla.Close

Temp="Select * From Stock"
Tabla.Open Temp, Conexion
arrDBDataStock=Tabla.GetRows()
Tabla.Close
%>

<table>
<tr>
<td>Cliente</td>
<td>Monto Venta</td>
<td>Producto</td>
...etc
</tr>

<%
For J = 0 To UBound(arrDBDClientes, 2)

'buscando que compras realizó el cliente
For K = 0 To UBound(arrDBDataVentas, 2)
If arrDBDataClientes(1,J) = arrDBDataVentas(2,K) Then 'estoy comparando ID o RUC

'buscando el nombre del producto vendido
For M = 0 To UBound(arrDBDStock, 2)
If arrDBDataStock(0,M) = arrDBDataVentas(8,K) Then
%>

<tr>
<td><%= arrDBDataClientes(5,J) %></td> <!-- nombre del cliente -->
<td><%= arrDBDataVentas(9,K) %></td> <!-- monto de la venta -->
<td><%= arrDBDataStock(3,M) %></td> <!-- nombre del producto -->
...etc
</tr>

<%
End If
Next
End If

Next

Next
%>
</table>
Bueno, esa es la idea, lo he hecho a la volada, pero de que funciona, funciona.
Espero haberte ayudado.

Un saludo desde el Perú
  #3 (permalink)  
Antiguo 06/05/2012, 15:00
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 19 años, 10 meses
Puntos: 146
Respuesta: Montar tablas de datos complejas

Cita:
Bien, pues resulta que ahora tengo que montar una tabla per mucho más compleja donde el número de columnas es variable y donde en cada fila tendría que hacer una/varias consultas SQL largas, con operaciones aritméticas por el medio etc. Entonces si sigo la misma estrategia de mezclar la construccion de la tabla en HTML con los accesos SQL a la BBDD, las operaciones, etc me quedaría todo mezcladisimo y poco manejable.
Bueno, con GetRows te evitarias el paso de meter "a mano" el RS a un arreglo, pero si es cierto eso que dices que por cada fila deberias hacer una o varias consultas, pues igual no se te va a hacer más ligero el tratamiento, amén de que ahora debes de manejar índices en lugar de nombres de campos (claro, siempre puedes usar constantes con los nombres de campos si aplicase), yo lo que pudiera sugerirte, es que analizaras si puedes formar el o los recordSet desde la BD, quizá con un SP, que ahí les hagas UNION o que hagas relaciones más pensadas para que el trabajo de ida y vuelta entre el IIS y la BD no sean tantos, si no queda más remedio que hacerlo como lo suguieres, pues no veo forma de que te quede menos mezclado.

Utilizar el response.flush funcionaría para aligerar la chamba y que el usuario vea algo conforme se procesa la página pero si usas una sola tabla no te va a servir de nada, ya que una TABLE se muestra en el cliente hasta que se cierra, en ese caso debes de, o usar varias tablas una tras otra o simplemente usar CSS.

Por lo que sea manejable ... pues quizá definir algunas subclases para encapsular algo del código te podría ayudar, aunque no creo que sea tan poco manejable como lo estas visualizando ahorita, cosa de programarlo y ver como queda.

Saludos

Etiquetas: asp, montar, sql, tabla, tablas
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 16:36.