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

Ya no se me ocurre nada para solucionar como mostrar el RS

Estas en el tema de Ya no se me ocurre nada para solucionar como mostrar el RS en el foro de ASP Clásico en Foros del Web. Bueno, quiero mostrar 3 registros del RS por fila, pero ya no entiendo como hacer, he probado de todo. Lo que si he logrado hacer ...
  #1 (permalink)  
Antiguo 11/05/2005, 15:15
 
Fecha de Ingreso: marzo-2005
Mensajes: 1.418
Antigüedad: 19 años, 2 meses
Puntos: 9
Ya no se me ocurre nada para solucionar como mostrar el RS

Bueno, quiero mostrar 3 registros del RS por fila, pero ya no entiendo como hacer, he probado de todo. Lo que si he logrado hacer (pero que no me soluciona nada de este problema) es mostrar los 3 registros por fila, pero el problema esta en que primero me muestra todos los registros con el campo que contiene la ruta de la imagen del producto, luego todos los registros del campo nombre, luego todos los registros del campo precio y luego los botones de comprar todos juntos. Es obvio que el error está en como estoy haciendo los bucles, pero la verdad es que ya no tengo idea de como solucionar esto.
Espero que alguien me pueda dar una mano, y aqui les dejo el código para quien le interese.
Saludos.


set RS = Server.CreateObject("ADODB.RecordSet")
RS.Open "SELECT Imagen, Nombre, Precio FROM Productos WHERE IdNegocio = 1", session("conn")

RS_Cols = RS.GetRows

RS.Close
set RS = nothing

Imagen = 0
Precio = 2
Nombre = 1
counter = 0
%>
<table border="1" align="center" cellpadding="0" cellspacing="0">
<tr>
<%
For a=0 to UBound(RS_Cols,2)
counter = counter + 1
%>
<td width="170" height="103" align="center"><img src="<%=RS_Cols(Imagen, a)%>" width="130" height="117"></td>
<%
if counter = 3 then
Response.Write("</tr>")
counter = 0
end if
next
%>
<tr>
<%
For a=0 to UBound(RS_Cols,2)
counter = counter + 1
%>
<td height="12" align="center" class="negocios"><a href="#" class="producto"><%=RS_Cols(Nombre, a)%></a></td>
<%
if counter = 3 then
Response.Write("<tr>")
counter=0
end if
next
%>
</tr>
<tr>
<%
For a=0 to UBound(RS_Cols,2)
counter = counter + 1
%>
<td height="14" align="center" valign="middle" class="celda_descripcion"><%=RS_Cols(Precio, i)%></td>
<%
if counter = 3 then
Response.Write("<tr>")
counter = 0
end if
next
%>
</tr>
<tr>
<%
For a=0 to UBound(RS_Cols,2)
counter = counter + 1
%>
<td height="25" align="center" valign="top" class="celda_descripcion"><img src="Imágenes/comprar_button.jpg"></td>
<%
if counter = 3 then
Response.Write("</tr>")
Counter = 0
end if
next
%>
</tr>
</table>
  #2 (permalink)  
Antiguo 11/05/2005, 15:30
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
Trata así:

Código:
<%			
set RS = Server.CreateObject("ADODB.RecordSet")
RS.Open "SELECT Imagen, Nombre, Precio FROM Productos WHERE IdNegocio = 1", session("conn")

RS_Cols = RS.GetRows

RS.Close
set RS = nothing

Imagen = 0
Precio = 2
Nombre = 1
counter = 0
%>
<table border="1" align="center" cellpadding="0" cellspacing="0" ID="Table6">
<tr>
<% 
For a=0 to UBound(RS_Cols,2) 
	counter = counter + 1
	%>
	<td width="170" height="103" align="center"><img src="<%=RS_Cols(a,0)%>" width="130" height="117"></td>
	<td><%=RS_Cols(a,1)%></td>
	<td><%=RS_Cols(a,2)%></td>	
	<% 
	if counter = 3 then
	Response.Write("</tr>")
	counter = 0
	end if 
next
%>
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #3 (permalink)  
Antiguo 11/05/2005, 15:42
Avatar de trasgukabi  
Fecha de Ingreso: septiembre-2004
Mensajes: 2.749
Antigüedad: 19 años, 9 meses
Puntos: 18
esto :Response.Write("</tr>")
será: Response.Write("</tr><tr>")

no? igual se me escapa algo
  #4 (permalink)  
Antiguo 11/05/2005, 15:47
Avatar de sjam7  
Fecha de Ingreso: diciembre-2001
Ubicación: Guadalajara, Mexico
Mensajes: 3.672
Antigüedad: 22 años, 5 meses
Puntos: 16
yo creo que el <tr> dejaria un tr abierto al terminar el for por lo que deberia ir abajo del for con comprobacion del counter al igual que al final
  #5 (permalink)  
Antiguo 11/05/2005, 15:52
 
Fecha de Ingreso: marzo-2005
Mensajes: 1.418
Antigüedad: 19 años, 2 meses
Puntos: 9
Hola, probe el codigo que me pasaste U Goldman, y me genera una fila con todos los datos, es decir, una fila con 9 columnas y luego pasa a la otra fila, y asi sucesivamente. Tambien intente hacer la modificacion que me paso Trasgukabi, pero me da casi el mismo resultado.
La verdad es que ya no entiendo como hacerlo.
Espero que me puedan dar una mano ustedes que son los que saben.
Saludos.

Última edición por mariano_donati; 11/05/2005 a las 15:56 Razón: Error en la redaccion
  #6 (permalink)  
Antiguo 11/05/2005, 15:57
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
Con lo mismo que te dijo trasgu:

Código:
For a=0 to UBound(RS_Cols,2) 
	counter = counter + 1
	%>
	<td width="170" height="103" align="center"><img src="<%=RS_Cols(a,0)%>" width="130" height="117"></td>
	<td><%=RS_Cols(a,1)%></td>
	<td><%=RS_Cols(a,2)%></td>	
	<% 
	if counter = 3 then
	Response.Write("</tr><tr>")
	counter = 0
	end if 
next
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #7 (permalink)  
Antiguo 11/05/2005, 16:06
 
Fecha de Ingreso: marzo-2005
Mensajes: 1.418
Antigüedad: 19 años, 2 meses
Puntos: 9
Si, es exactamente igual el resultado. Nunca pense que iba a ser tan dificil posicionar asi un RS. Gracias U Goldman igual.
  #8 (permalink)  
Antiguo 11/05/2005, 16:08
Avatar de sjam7  
Fecha de Ingreso: diciembre-2001
Ubicación: Guadalajara, Mexico
Mensajes: 3.672
Antigüedad: 22 años, 5 meses
Puntos: 16
Código:
 counter = 0
%>
<table border="1" align="center" cellpadding="0" cellspacing="0" ID="Table6">
<tr>
<% 
For a=0 to UBound(RS_Cols,2) 
        if counter=0 then response.write "<tr>"
	counter = counter + 1
	%>
	<td width="170" height="103" align="center"><img src="<%=RS_Cols(a,0)%>" width="130" height="117"></td>
	<td><%=RS_Cols(a,1)%></td>
	<td><%=RS_Cols(a,2)%></td>	
	<% 
	if counter = 3 then
	   Response.Write("</tr>")
	counter = 0
	end if 
next
%></table>
  #9 (permalink)  
Antiguo 11/05/2005, 16:11
Avatar de trasgukabi  
Fecha de Ingreso: septiembre-2004
Mensajes: 2.749
Antigüedad: 19 años, 9 meses
Puntos: 18
pues no , sjam, no

si te das cuenta, la primera vez que entraría al for, te juntarías con
Código:
<table border="1" align="center" cellpadding="0" cellspacing="0" ID="Table6">
<tr><tr>
la buena es response.write("</tr><tr>")
  #10 (permalink)  
Antiguo 11/05/2005, 16:12
 
Fecha de Ingreso: marzo-2005
Mensajes: 1.418
Antigüedad: 19 años, 2 meses
Puntos: 9
Para ser mas preciso en lo que ando buscando y en que es lo que me devuelve el codigo que me pasaron. Me devuelve por registro 3 columnas (imagen, nombre, precio) y me pone 3 registros por fila. Lo que yo ando buscando es que por registro me devuelva 1 sola columna, con tres filas (imagen, nombre, precio), es decir que me tendria que devolver en total tres columnas con 3 filas. Debe ser muy dificil lo que ando buscando no? o yo me la estoy complicando demasiado?
Saludos y gracias por ayudarme.
  #11 (permalink)  
Antiguo 11/05/2005, 16:16
 
Fecha de Ingreso: marzo-2005
Mensajes: 1.418
Antigüedad: 19 años, 2 meses
Puntos: 9
Acabo de probar el codigo que me mandaste Sjam, sacandole el <tr> de html y dejando como dice trasgukabi, me da el mismo resultado que el que me paso U Goldman. Sinceramente no tengo palabras para agradecerles el interes que me han prestado.
  #12 (permalink)  
Antiguo 11/05/2005, 16:18
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
Cita:
Me devuelve por registro 3 columnas (imagen, nombre, precio) y me pone 3 registros por fila.
A que le llamas registro..?pega la salida del HTML aqui y pon un ejemplo de que es lo que quieres, no te entiendo nada.

Salu2
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #13 (permalink)  
Antiguo 11/05/2005, 16:32
 
Fecha de Ingreso: marzo-2005
Mensajes: 1.418
Antigüedad: 19 años, 2 meses
Puntos: 9
Disculpa U Goldman que no me expresé bien, con registro me refiero a cada fila de la base de datos, en mi caso, se trata de productos. Lo que quise decir en tu cita es que por cada fila de la tabla, me aparecen tres productos, y como por cada producto se generan 3 columnas(con la imagen, el nombre y el precio del mismo), en esa fila me aparecen 9 columnas. Jajaja no se si te loe explique mejor o te hice mas lio. De todas formas aquí te dejo el código html de lo que me tira y de lo que ando buscando.

Esto es lo que ando buscando:
<table>
<tr>
<td width="170" align="center">Imagen</td>
<td width="170" align="center">Imagen</td>
<td width="170" height="103" align="center"><img src="Imágenes/computadora.gif" width="130" height="117"></td>
</tr>
<tr>
<td align="center" class="negocios">Nombre del producto</td>
<td align="center" class="negocios">Nombre del producto</td>
<td height="12" align="center" class="negocios"><a href="#" class="producto">INTEL
PENTIUM 2.4 GHZ</a></td>
</tr>
<tr>
<td align="center" valign="middle" class="celda_descripcion">precio</td>
<td align="center" valign="middle" class="celda_descripcion">precio</td>
<td height="14" align="center" valign="middle" class="celda_descripcion">AR
$ 1.750,00</td>
</tr>
<tr>
<td align="center" valign="top" class="celda_descripcion">Imagen de comprar</td>
<td align="center" valign="top" class="celda_descripcion">Imagen de comprar</td>
<td height="25" align="center" valign="top" class="celda_descripcion"><img src="Imágenes/comprar_button.jpg"></td>
</tr>
</table>

Esto sería la primer fila, cada columna corresponde a un producto diferente.

Este es el código html que me devuelve el código que me pasaron:

<table border="1" align="center" cellpadding="0" cellspacing="0" ID="Table6">
<tr>
<td width="170" height="103" align="center">Imagen0</td>
<td>Nombre del producto0</td>
<td>Precio del producto0</td>

<td width="170" height="103" align="center">Imagen1</td>
<td>Nombre del producto1</td>
<td>Precio del producto1</td>

<td width="170" height="103" align="center">Imagen2</td>
<td>Nombre del producto2</td>
<td>Precio del producto2</td>
</tr><tr><tr>
<td width="170" height="103" align="center">Imagen3</td>
<td>Nombre del producto3</td>
<td>Precio del producto3</td>

<td width="170" height="103" align="center">Imagen4</td>
<td>Nombre del producto4</td>
<td>Precio del producto4</td>

<td width="170" height="103" align="center">Imagen5</td>
<td>Nombre del producto5</td>
<td>Precio del producto5</td>
</tr><tr><tr>
<td width="170" height="103" align="center">Imagen6</td>
<td>Nombre del producto6</td>
<td>Precio del producto6</td>

<td width="170" height="103" align="center">Imagen7</td>
<td>Nombre del producto7</td>
<td>Precio del producto7</td>

<td width="170" height="103" align="center">Imagen8</td>
<td>Nombre del producto8</td>
<td>Precio del producto8</td>
</tr><tr><tr>
<td width="170" height="103" align="center">Imagen9</td>
<td>Nombre del producto9</td>
<td>Precio del producto9</td>

<td width="170" height="103" align="center">Imagen10</td>
<td>Nombre del producto10</td>
<td>Precio del producto10</td>

<td width="170" height="103" align="center">Imagen11</td>
<td>Nombre del producto11</td>
<td>Precio del producto11</td>
</tr><tr><tr>
<td width="170" height="103" align="center">Imagen12</td>
<td>Nombre del producto12</td>
<td>Precio del producto12</td>

<td width="170" height="103" align="center">Imagen13</td>
<td>Nombre del producto13</td>
<td>Precio del producto13</td>

<td width="170" height="103" align="center">Imagen14</td>
<td>Nombre del producto14</td>
<td>Precio del producto14</td>
</tr><tr>
</table>

Gracias por su ayuda!.
  #14 (permalink)  
Antiguo 11/05/2005, 16:42
Avatar de sjam7  
Fecha de Ingreso: diciembre-2001
Ubicación: Guadalajara, Mexico
Mensajes: 3.672
Antigüedad: 22 años, 5 meses
Puntos: 16
Asi quedaria sin el TR que se me paso quitar antes del For
Código:
counter = 0
%>
<table border="1" align="center" cellpadding="0" cellspacing="0" ID="Table6">
<% 
For a=0 to UBound(RS_Cols,2) 
        if counter=0 then response.write "<tr>"
	counter = counter + 1
	%>
	<td width="170" height="103" align="center"><img src="<%=RS_Cols(a,0)%>" width="130" height="117"></td>
	<td><%=RS_Cols(a,1)%></td>
	<td><%=RS_Cols(a,2)%></td>	
	<% 
	if counter = 3 then
	   Response.Write "</tr>" 
	counter = 0
	end if 
next
%></table>
  #15 (permalink)  
Antiguo 11/05/2005, 16:49
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
Olvidate de los counter

Código:
For a=0 to UBound(RS_Cols,2) 
	%>
	<tr>
		<td width="170" height="103" align="center">
			<img src="<%=RS_Cols(0,a)%>" width="130" height="117">
		</td>
		<td><%=RS_Cols(1,a)%></td>
		<td><%=RS_Cols(2,a)%></td>	
	</tr>
	<% 
next
%>
Tambien tuve un error llamando a las filas y las columnas, fijate en la forma de llamar a cada indice

Salu2,
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #16 (permalink)  
Antiguo 11/05/2005, 17:36
 
Fecha de Ingreso: marzo-2005
Mensajes: 1.418
Antigüedad: 19 años, 2 meses
Puntos: 9
Acabo de probar el código, a pesar que no lo muestra como lo ando buscando, ya es una mejora, me parece que con un par de retoques puede llegar a andar. Lo que pasa es que el codigo actual me genera las columnas de esta forma:

IMAGEN NOMBRE_DEL_PRODUCTO PRECIO
IMAGEN NOMBRE_DEL_PRODUCTO PRECIO
IMAGEN NOMBRE_DEL_PRODUCTO PRECIO

Y a mi me gustaría asi:

Imagen Imagen Imagen
Nombre Nombre Nombre
Precio Precio Precio

Imagen Imagen Imagen
Nombre Nombre Nombre
Precio Precio Precio

Yo me quedaré probando un par de retoques a partir de tu código para ver si me sale o no, si se te ocurre alguna idea (si es que ya no te canso este tema) te pido por favor que me avises. No quiero ser reiterativo, pero mil gracias U Goldman.
Saludos.

Última edición por mariano_donati; 11/05/2005 a las 17:48
  #17 (permalink)  
Antiguo 11/05/2005, 17:50
Avatar de sjam7  
Fecha de Ingreso: diciembre-2001
Ubicación: Guadalajara, Mexico
Mensajes: 3.672
Antigüedad: 22 años, 5 meses
Puntos: 16
intenta metiendo
IMAGEN
NOMBRE_DEL_PRODUCTO
PRECIO
Para cada producto en una tabla diferente y esta a su vez en una tabla general con 3 columnas donde cada tabla de producto vaya en cada columna...me hice bolas
  #18 (permalink)  
Antiguo 11/05/2005, 17:58
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
Asi es, tienes que anidar tablas...la logica esta ahi, solo es HTML
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #19 (permalink)  
Antiguo 11/05/2005, 18:00
 
Fecha de Ingreso: marzo-2005
Mensajes: 1.418
Antigüedad: 19 años, 2 meses
Puntos: 9
si... eso tenia pensado hacer... pero no tardaría mucho tiempo el mostrarse la pagina teniendo tantas tablas anidadas?, estoy casi sacandolo, me falta un poco, mira te dejo el codigo para ver si te interesa y me hechas una mano si puedes.


Imagen = 0
Nombre = 2
Precio = 1

counter = 0
i=0
%>
<table border="1" width="390" align="center" cellpadding="0" cellspacing="0" ID="Table6">
<%
For a=i to UBound(RS_Cols,2)
counter = counter + 1
%>
<tr>
<td width="100" height="103" align="center"><img src="<%=RS_Cols(Imagen,a)%>" width="130" height="117"></td>
<td><img src="<%=RS_Cols(Imagen,a)%>" width="130" height="117"></td>
<td><img src="<%=RS_Cols(Imagen,a)%>" width="130" height="117"></td>
</tr>
<tr>
<td height="15" align="center"><%=RS_Cols(Nombre,a)%></td>
<td height="15" align="center"><%=RS_Cols(Nombre,a)%></td>
<td height="15" align="center"><%=RS_Cols(Nombre,a)%></td>
</tr>
<tr>
<td height="15" align="center"><%=RS_Cols(Precio,a)%></td>
<td height="15" align="center"><%=RS_Cols(Precio,a)%></td>
<td height="15" align="center"><%=RS_Cols(Precio,a)%></td>
</tr>
<%
if counter = 1 then
i = i + 2
counter = 0
end if
next
%>
</table>

Con ese codigo me aparecen los registros como yo quiero, pero el tema esta en que se me repiten los productos tres veces, por eso estoy tratando de crear un auxiliar, denominado como "i", para que el bucle no me recorra el array como comunmente lo haria (porque de esa forma es como me da los productos repetidos en cada columna), por lo tanto necesito crear un valor dinamico para "i", que actue como auxiliar del bucle. Soy demasiado malo para las explicaciones por eso mejor la corto. Si me has entendido y tienes alguna idea para hacer lo que quiero hacer con esa variable auxiliar "i", avisame. Saludos SJam.
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 01:00.