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

Ayuda con un catalogo online.... problemas de código

Estas en el tema de Ayuda con un catalogo online.... problemas de código en el foro de ASP Clásico en Foros del Web. Hola maestros, les doy el codigo completo de lo que estoy haciendo y les explico un poco la idea... bueno como el titulo lo dice ...
  #1 (permalink)  
Antiguo 04/05/2005, 20:55
Avatar de El_Metallick  
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago, Chile
Mensajes: 1.718
Antigüedad: 21 años, 7 meses
Puntos: 16
Ayuda con un catalogo online.... problemas de código

Hola maestros, les doy el codigo completo de lo que estoy haciendo y les explico un poco la idea... bueno como el titulo lo dice es un catalogo online, que quiero que muestre en una tabla de dos columnas, en la de la izquerda una tabla con la lista de todas las categorias que hay y al hacer click en una de ellas en la otra columna (la de la derecha), se muestren solo los articulos de esa categoría.... y en el fondo no se como hacer que se desplieguen simultaneamente la lista de las dos tablas y solo una de ellas con condiciones... consultando en el foro sobre la selección en mas de una tabla me dijeron esto:
Cita:
Iniciado por u_goldman
SELECT a.campo1, a.campo2, b.campo1 FROM tabla1 a INNER JOIN tabla2 b ON a.campoID = b.campoID WHERE condicion
lo cual lo aplique a mi sitio junto con otras cosas que menciono mas abajo con motivo de otra duda y el código me quedo asi:
Código:
<% @ language="VBscript" %>
<% Option Explicit %>
<html>
<head>
<title>Catálogo on-line</title>
</head>
<body>
<%
'Declarar Variables
Dim Conn
Dim sql
Dim rs
Dim categoria
'Rescate de valores por URL
categoria=Request.Querystring("id")
 
'Instanciar y abrir la conección
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("catalogo.mdb"))
 
'Creación de la sentencia SQL correspondiente (con los apodos que me sugerio usar u_goldman)
sql="Select a.id, a.categoria, b.id, b.categoria, b.imagen, b.nombre, b.precio From categorias a INNER JOIN articulos b ON a.categoria = b.categoria Where b.categoria = '" & categoria & "'"
 
'Ejecución de la orden
Set rs = Conn.Execute(sql)
%>
<table border="0" width="100%" cellspacing="0" cellpadding="0">
<tr>
<td width="50%">
<table border="0" width="100%" cellspacing="0" cellpadding="0">
	<tr>
	 <td width="100%">Categorías</td>
	</tr>
<% 
Do While Not rs.Eof 
 
'Esto es lo que me dijo Neuron_376
categorias = categorias & rs("aCategoriaCategorias")
%>
	<tr>
<td width="100%"><a href="verdetalle.asp?id=<% = rs("id") %>"><% = rs("categoria") %></a></td>
	</tr>
<%
rs.MoveNext
Loop
%>
</table>
</td>
<td width="50%">
<% 
Do While Not rs.Eof 
 
'Esto es lo que me dijo Neuron_376
articulos = articulos & rs("bimagenarticulos")
%>
<table border="0" width="100%" cellspacing="0" cellpadding="0">
	<tr>
	 <td width="33%"><a herf="verdetalle.asp?id=<% = rs("id") %>"><img src="<% = rs("imagen") %>"></a></td>
	 <td width="33%"><a herf="verdetalle.asp?id=<% = rs("id") %>"><% = rs("nombre") %></a></td>
	 <td width="34%"><% = rs("precio") %></td>
	</tr>
</table>
<%
rs.MoveNext
Loop
%>
</td>
</tr>
</table>
</body>
</html>
preguntando como hacer una selección en mas de una tabla algunos amigos de este foro me respondieron entre otras cosas esto:
Cita:
Iniciado por Neuron_376
while not rs.eof

tabla1 = tabla1 & rs("aliasCampoTabla1")
tabla2 = tabla2 & rs("aliasCampoTabla2")

rs.movenext

loop
mi pregunta es como puedo hacer cuando quiero visualisar mas de un campo?
se me ocurre algo como esto pero no se si este correcto
Código:
while not rs.eof
 
tabla1 = tabla1 & rs("aliasCampo1Tabla1")
tabla1 = tabla1 & rs("aliasCampo2Tabla1")
.....
 
rs.movenext
loop
Espero que me puedan ayudar gracias de antemano y saludos

PD: si quieren ver algo como lo que quiero hacer en http://www.bymcomputer.cl hay un catalogo del estilo del que quiero hacer
__________________
Haz la guerra en la cama y el amor donde se te de la gana...
El tiempo es el mejor maestro, lo único malo es que te mata...¡¡Aprovecha tu tiempo!!
  #2 (permalink)  
Antiguo 05/05/2005, 10:11
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
Código:
sql="Select a.id, a.categoria, b.id, b.categoria, b.imagen, b.nombre, b.precio From categorias a INNER JOIN articulos b ON a.categoria = b.categoria Where b.categoria = '" & categoria & "'"
Aquí lo único que hice fue nombrar a las tablas diferente, eso lo hago mas que nada por comodidad, a veces es demasiado estar escribiendo tabla_algo.campo1, tabla_algo.campo2, tabla_otra.campo1, entonces simplemente les llamo con una letra, pero volvemos a la misma, si tienes campos con nombres iguales, lo que tienes que hacer es diferenciar esos campos poniéndoles un alias, o sea, tienen nombre igual, pero un apellido diferente

Código:
sql="Select a.id, a.categoria as categoria1, b.id, b.categoria as categoria2, b.imagen, b.nombre, b.precio From categorias a INNER JOIN articulos b ON a.categoria = b.categoria Where b.categoria = '" & categoria & "'"
Ahora esos campos se llamarán categoria1 y categoria2 respectivamente, por lo tanto:

Response.Write(rs("categoria1"))
Response.Write(rs("categoria2"))

Espero que haya quedado un poco mas claro...


Salu2,
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #3 (permalink)  
Antiguo 05/05/2005, 10:49
Avatar de El_Metallick  
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago, Chile
Mensajes: 1.718
Antigüedad: 21 años, 7 meses
Puntos: 16
Cita:
Iniciado por u_goldman
Código:
sql="Select a.id, a.categoria as categoria1, b.id, b.categoria as categoria2, b.imagen, b.nombre, b.precio From categorias a INNER JOIN articulos b ON a.categoria = b.categoria Where b.categoria = '" & categoria & "'"
es necesario poner lo que pusiste en negrita????
bueno independientemente de es como podria desplegar el contenido de la tabla categorias y solo parte de la tabla articulos (esta última dependiendo de la categoria en la que estemos)
__________________
Haz la guerra en la cama y el amor donde se te de la gana...
El tiempo es el mejor maestro, lo único malo es que te mata...¡¡Aprovecha tu tiempo!!
  #4 (permalink)  
Antiguo 05/05/2005, 11:36
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
Pues si tienes tu query uniendo dos tablas, lo único que necesitas es los campos que quieres mostrar de cada una de ellas, en la sentencia del JOIN están, SELECT todos_los_campos_que_quieras_no_importa_de_que_tab las FROM tabla1 a INNER JOIN tabla2 b ON bla bla bla

Y luego solo los muestras dentro de tu ciclo, y si tienes nombres iguales para ciertos campos, los cuales quieres mostrar, tendrás que asignarles un alias para poder llamarlos...a lo mejor no entiendo tu pregunta, pero a mi parecer todo está respondido.

Salu2,
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #5 (permalink)  
Antiguo 05/05/2005, 20:28
Avatar de El_Metallick  
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago, Chile
Mensajes: 1.718
Antigüedad: 21 años, 7 meses
Puntos: 16
modificando un poco el codigo me tira un error... dejo el código actual y el error
Código:
<% @ language="VBscript" %>
<% Option Explicit %>
<html>
<head>
<title>Catálogo on-line</title>
</head>
<body>
<%
'Declarar Variables
Dim Conn
Dim sql
Dim rs
Dim categoria
'Rescate de valores por URL
categoria = Request.Querystring("id")

'Se pone una condición
if categoria = "" Then
categoria = 1
end if

'Instanciar y abrir la conección
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("catalogo.mdb"))

'Creación de la sentencia SQL correspondiente
sql="Select a.id_categoria, a.categoria as categorias, b.id_producto, b.categoria as productos, b.imagen, b.nombre, b.precio From categorias a INNER JOIN productos b ON a.categoria = b.categoria Where b.categoria = " & categoria & ""

'Ejecución de la orden
Set rs = Conn.Execute(sql)
%>
<table border="0" width="100%" cellspacing="0" cellpadding="0">
 <tr>
  <td width="50%">
   <table border="0" width="100%" cellspacing="0" cellpadding="0">
	<tr>
	 <td width="100%">Categorías</td>
	</tr>
 <% 
 Do While Not rs.Eof 
 
 'Esto es lo que me dijo Neuron_376
 categorias = categorias & rs("aCategoriaCategorias")
 %>
	<tr>
  <td width="100%"><a href="verdetalle.asp?id=<% = rs("id_categoria") %>"><% = rs("categoria") %></a></td>
	</tr>
 <%
 rs.MoveNext
 Loop
 %>
   </table>
  </td>
  <td width="50%">
   <% 
   Do While Not rs.Eof 

   'Esto es lo que me dijo Neuron_376 (¿pero como puedo hacer cuando quiero visualisar mas de un campo?)
   articulos = articulos & rs("bimagenproductos")
   
   'Se pone una condición
   if categoria = "" Then
   Response.Write ("   <table border=""0"" width=""100%"" cellspacing=""0"" cellpadding=""0"">")
   Response.Write ("	<tr>")
   Response.Write ("	 <td width=""100%"">no hay categorias seleccionadas</td>")
   Response.Write ("	</tr>")
   Response.Write ("   </table>")
   else %>
   <table border="0" width="100%" cellspacing="0" cellpadding="0">
	<tr>
	 <td width="33%"><a herf="verdetalle.asp?id=<% = rs("id") %>"><img src="<% = rs("imagen") %>"></a></td>
	 <td width="33%"><a herf="verdetalle.asp?id=<% = rs("id") %>"><% = rs("nombre") %></a></td>
	 <td width="34%"><% = rs("precio") %></td>
	</tr>
   </table>
   <%
   end if
   rs.MoveNext
   Loop
   %>
  </td>
 </tr>
</table>
y el error es:



Microsoft JET Database Engineerror '80040e10'

No se han especificado valores para algunos de los parámetros requeridos
/pruebas/catalogo/catalogo.asp, line 38

y no entiendo porque es el erro que me esta tirando problemas.... saludos
__________________
Haz la guerra en la cama y el amor donde se te de la gana...
El tiempo es el mejor maestro, lo único malo es que te mata...¡¡Aprovecha tu tiempo!!
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 13:00.