| |||
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 |
| |||
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 :) |
| |||
Re: Mostrar resultados en dos columnas <pre> <table> <tr> <% columna = 0 do While Not rs.Eof columna=columna+1 %> <td> Lo que tu quieras </td> <% If columna = 2 Then columna=0 %> <tr> <% end If rs.MoveNext Loop %> </Table> </pre> Mas o menos ( esto me lo pasó YOLANDA . gracias a ella :) :) |
| ||||
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:
En el código anterior se da por entendido que ya se tienen la conexión y el recordset creado. <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> 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 |
| |||
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. ![]() |
| ||||
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 |
| |||
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á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> </p> <p> </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> ") end if if iPag < iPaginas then Response.Write("<A HREF="&NomPage&"?P="&iPag+1&"><b>Siguiente</b></A> ") end if PaginarGR = 0 End Function '================================================= ==================================== %> <p> <p> <p> <p> </p> <p> </p> </body> </html> |
| |||
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:
if vector (1,I) =""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>") <td></TD> else "hola" gracias por vuestra ayuda y perdon por mi ignoracia. |