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

Mostrar resultados en dos columnas

Estas en el tema de Mostrar resultados en dos columnas en el foro de ASP Clásico en Foros del Web. Hola, me gustaría saber como puedo mostrar los resultados de una consulta a la base de datos en dos columnas distinas en vez de una, ...
  #1 (permalink)  
Antiguo 27/01/2002, 08:27
 
Fecha de Ingreso: enero-2002
Mensajes: 26
Antigüedad: 22 años, 5 meses
Puntos: 0
Mostrar resultados en dos columnas

Hola, me gustaría saber como puedo mostrar los resultados de una consulta a la base de datos en dos columnas distinas en vez de una, es decir, por ejemplo, cuando llegue al registro 6 que este registro aparezca en la segunda columna o que la mitad aparezaca en una y la otra mitad en otra. Gracias
  #2 (permalink)  
Antiguo 27/01/2002, 10:37
 
Fecha de Ingreso: diciembre-2001
Mensajes: 262
Antigüedad: 22 años, 6 meses
Puntos: 0
Re: Mostrar resultados en dos columnas

puedes volcar el recorSet a una matriz con GetRows y luego colocarlo a tu antojo. ;)

tabla = rs.GetRows


Ahora te busco otra forma que me dijeron aqui mismo el otro día :)
  #3 (permalink)  
Antiguo 27/01/2002, 10:44
 
Fecha de Ingreso: diciembre-2001
Mensajes: 262
Antigüedad: 22 años, 6 meses
Puntos: 0
Re: Mostrar resultados en dos columnas

<pre>
&lt;table&gt;
&lt;tr&gt;
&lt;%
columna = 0
do While Not rs.Eof
columna=columna+1
%&gt;
&lt;td&gt; Lo que tu quieras &lt;/td&gt;
&lt;% If columna = 2 Then
columna=0
%&gt;
&lt;tr&gt;
&lt;% end If
rs.MoveNext
Loop
%&gt;
&lt;/Table&gt;


</pre>

Mas o menos ( esto me lo pasó YOLANDA . gracias a ella :) :)
  #4 (permalink)  
Antiguo 27/01/2002, 10:48
 
Fecha de Ingreso: enero-2002
Mensajes: 26
Antigüedad: 22 años, 5 meses
Puntos: 0
Re: Mostrar resultados en dos columnas

Muchísimas gracias por tu ayuda!

Salu2
  #5 (permalink)  
Antiguo 06/03/2003, 22:00
 
Fecha de Ingreso: marzo-2003
Ubicación: Av. Grau 1190
Mensajes: 122
Antigüedad: 21 años, 3 meses
Puntos: 3
He revisado tu mensaje y tengo una duda como paginar en dos columnas o mas mediante GetRows.

Gracias
  #6 (permalink)  
Antiguo 07/03/2003, 13:03
Avatar de lexus  
Fecha de Ingreso: enero-2002
Ubicación: Cali - Colombia
Mensajes: 2.234
Antigüedad: 22 años, 5 meses
Puntos: 4
este mensaje lo encontre en estos foros hace tiempo, puedes mostrar registros en cualquier cantidad de columnas, y paginar despues, es muy simple de manejar:


En ocasiones deseamos mostrar por ejemplo artículos de una tienda virtual, pero de la forma

1 | 2 | 3
4 | 5 | 6

lo que normalmente hacemos es así:

1
2
3
4
5
6

Bueno para eso podemos hacer lo siguiente:


Código:
<table width="100%" border="0" cellspacing="0" cellpadding="0"> 
<tr> 
<% 
counter=0 
Do While Not Rs.EOF 
%> 
<td><%=Rs("NombreCampo")%></td> 
<% 
counter=counter+1 
If counter Mod 3=0 Then Response.Write "</tr><tr>" 
Rs.MoveNext 
Loop 
%> 
</tr> 
</table>
En el código anterior se da por entendido que ya se tienen la conexión y el recordset creado.

Si queremos mostrar de 2 en 2, de 4 en 4, 5 en 5, etc. Solo debemos cambiar la siguiente línea...

If counter Mod 3=0 Then

En esta línea cambiamos el 3 por el numero de registros que deseamos mostrar en cada fila.



espero te sirva tanto como a mi.
__________________
Control de Visitantes, Control de Accesos, Minutas digitales, Manejo de Correspondencia
http://www.controldevisitantes.com
  #7 (permalink)  
Antiguo 07/03/2003, 20:47
 
Fecha de Ingreso: marzo-2003
Ubicación: Av. Grau 1190
Mensajes: 122
Antigüedad: 21 años, 3 meses
Puntos: 3
Gracia Lexus, pero me gustaria un ultimo detalle, te envio el codigo de conexion y por favor si me ayudas.

Dim oConn, rs, SQL, miTabla
Dim Campo1, Campo2
Campo1 = 1
Campo2 = 2
'Para recorrer el vector
SQL="SELECT * FROM Tabla"
set oConn = Server.CreateObject("ADODB.Connection")
oConn.Open "..."
set rs = oConn.Execute(SQL)
miTabla = rs.GetRows
'Liberamos los objetos ya!!
rs.Close
set rs = nothing
oConn.Close
set oConn = nothing

Response.Write("<TABLE>")

'Recorremos el vector
'Desde el primero hasta el último "registro"...
for I = 0 to UBound(miTabla,2)
Response.Write("<TD>" & miTabla(Campo1, I) & "</TD>")
next
Response.Write("</TABLE>")

---------------

Como uso el codigo que me diste con Get Rows, para realizar 2 o mas columnas, he intentado antes y tengo un error al hacer el Do While:

<%
counter=0
Do While Not Rs.EOF
%>
<td><%=Rs("NombreCampo")%></td>
<%
counter=counter+1
If counter Mod 3=0 Then Response.Write "</tr><tr>"
Rs.MoveNext
Loop
%>

Gracias por tu paciencia.
  #8 (permalink)  
Antiguo 07/03/2003, 21:56
Avatar de urjose  
Fecha de Ingreso: diciembre-2001
Mensajes: 5.286
Antigüedad: 22 años, 5 meses
Puntos: 1
http://www.faqsdelweb.com/index.php?..._id=22&q_id=99


Según tu código:

.
.
.
Response.Write("<TABLE><TR>")
'Recorremos el vector
'Desde el primero hasta el último "registro"...
counter=0
for I = 0 to UBound(miTabla,2)
Response.Write("<TD>" & miTabla(Campo1, I) & "</TD>")
counter=counter+1
If counter Mod 3=0 Then Response.Write "</tr><tr>"
next
Response.Write "</tr></table>"

Lo anterior deberia mostrarte en columnas de 3 si quieres de 2 modificar Mod 2=0

Saludos
  #9 (permalink)  
Antiguo 20/03/2003, 15:02
 
Fecha de Ingreso: marzo-2003
Ubicación: Av. Grau 1190
Mensajes: 122
Antigüedad: 21 años, 3 meses
Puntos: 3
Estimados amigos muchas gracias, ya he solucionado mi problema, y tambien quiero contribuir en el foro, asi que les mando el codigo fuente completo para el que lo necesite.

******
<%
NomPage = Request.ServerVariables("SCRIPT_NAME") '**Nombre de la pagina

Dim pag, iEstado
Dim oConn, SQL, rs
Dim aDatos, iTotal
Dim I, J, N
N=4 'N = numero de registros por pagina

'Nos conectamos a la base de datos...
set oConn = Server.CreateObject("ADODB.Connection")
set rs = Server.CreateObject("ADODB.Recordset")
oConn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ="&Server.MapPath("miBD.mdb")
'oConn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ="&Server.MapPath("miBase.mdb")
SQL="SELECT * FROM info"
'Vamos a utilizar el Recordset más eficiente
'CursorType = Forward-Only
rs.CursorType = 0
'LockType = Read-Only
rs.LockType = 1
'CursorLocation = adUseClient
rs.CursorLocation = 3
'Y abrimos el Recordset
rs.Open SQL, oConn
'Obtengo los datos con GetRows
aDatos = rs.GetRows
'Cierro y limpio objetos ya
rs.Close
oConn.Close
set rs = nothing
set oConn = nothing

'Obtengo la página a mostrar de
'la querystring
pag = CInt(Request.QueryString("P"))
'Y llamo a PaginarGR
iEstado = PaginarGR (N, pag, aDatos)


'================================================= ====================================
' PaginarGR -- Pagina un vector bidimensional
' vector es el vector a paginar, iPag la página a mostrar y iRegsPorPag el nº de
' registros por cada página que queremos.
'================================================= ====================================
Function PaginarGR (iRegsPorPag, iPag, vector)
'
'I, J se utilizan para recorrer el vector
Dim I, J
'Total de páginas y la página que queremos mostrar
Dim iPaginas, iPagActual
'Total de registros, registro en que empezamos y registro en que terminamos
Dim iTotal, iComienzo, iFin

'Hallo el total de registros devueltos
iTotal = UBound(aDatos,2)+1
'Calculo el numero de páginas que tenemos
iPaginas = (iTotal \ iRegsPorPag)
'Si daba decimales, añado una más
'para mostrar los últimos registros
if iTotal mod iRegsPorPag > 0 then
iPaginas = iPaginas + 1
end if
'Si no es una página válida, comienzo en la primera
if iPag < 1 then
iPag = 1
end if
'Si es una página mayor al nº de páginas, comienzo en la última
if iPag > iPaginas then
iPag = iPaginas
end if
%>
<HTML>
<HEAD>
<TITLE>Paginar con GETROWS</TITLE>


<h2><center>Paginar con GetRows</center></h2>
<p> P&aacute;gina
<% = iPag %>
de
<% = iPaginas %>
(
<% = iTotal%>
registros)<br>
<% iComienzo = (iPag-1)*iRegsPorPag
'y donde termino:
iFin = iComienzo + (iRegsPorPag-1)
'Si no tengo suficientes registros restantes,
'voy hasta el final
if iFin > UBound(vector, 2) then
iFin = UBound(vector, 2)
end if
%>
</p>
<p>
<% Response.Write("<TABLE width='250' border='0' cellspacing='2' cellpadding='0'><TR bgcolor='#99CC99'>")
'Recorremos el vector
'Desde el primero hasta el último "registro"...
counter=0
for I= iComienzo to iFin
Response.Write("<TD>" & vector(1,I) & "<br>" & vector(0,I) & "</TD>")
Response.Write("<TD>" & vector(2,I) & "</TD>")
Response.Write("<TD>" & "<img src='../imgs/trans10x10.gif'>" & "</TD>")
counter=counter+1
If counter Mod 2=0 Then Response.Write "</tr>"
next
Response.Write "</table>"
%>
</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>Página:
<%For i = 1 To iPaginas
P = CInt(Request("P"))
If P < 1 Then P = 1

If cstr(i) <> Cstr(P) Then %>
<b><a href="<%=NomPage%>?P=<%=i%>">
<%=i%></a></b>
<%Else%>
<%=i%>
<%End If

Next
%>
::
<%
if iPag > 1 then
Response.Write("<A HREF="&NomPage&"?P="&iPag-1&"><b>Anterior</b></A>&nbsp;&nbsp;")
end if
if iPag < iPaginas then
Response.Write("<A HREF="&NomPage&"?P="&iPag+1&"><b>Siguiente</b></A>&nbsp;")
end if

PaginarGR = 0
End Function
'================================================= ====================================
%>
<p>&nbsp;
<p>&nbsp;
<p>&nbsp;
<p>&nbsp;</p>
<p>&nbsp;</p>
</body>
</html>
  #10 (permalink)  
Antiguo 19/07/2007, 08:45
 
Fecha de Ingreso: julio-2003
Ubicación: Barcelona
Mensajes: 142
Antigüedad: 20 años, 10 meses
Puntos: 1
Re: Mostrar resultados en dos columnas

hola elsabio, tu codigo me parece ok, pero tengo un pequeño problema
¿como harias para cuando pintas la tabla ponerle una condicion al vector?

quiero decir
Código:
Response.Write("<TD>" & vector(1,I) & "<br>" & vector(2,I) & "</TD>")
Response.Write("<TD>" & vector(3,I) & "</TD>")
Response.Write("<TD>" & "<img src='../imgs/trans10x10.gif'>" & "</TD>")
if vector (1,I) =""
<td></TD>
else "hola"

gracias por vuestra ayuda y perdon por mi ignoracia.
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 21:44.