Ver Mensaje Individual
  #1 (permalink)  
Antiguo 07/05/2005, 20:56
Avatar de El_Metallick
El_Metallick
 
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago, Chile
Mensajes: 1.718
Antigüedad: 22 años, 6 meses
Puntos: 16
selección múltiple o tratarlas por separado? comentar el código y debatir sobre esto

Hola amigos... les cuento un poco... yo estoy en un desafio personal de crear mi primer script solo... (con ayuda en ciertos casos de ustedes lógico cuando tengo errores, pero digamos que todo el código es creado por mi y corregido por muchos de ustedes). Bueno la cosa es que en vista de que no pude deplegar los registros con una selección de dos tablas decidi tratar de solucionar el problema de otra forma.... bueno les dejo ambos códigos para que los comentemos...
Código con una selección multimple (con inner join)
Código:
<%
'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.nombre_categoria, b.id_producto, b.categoria, b.imagen, b.nombre, b.precio From categorias a INNER JOIN productos b ON a.id_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 %> <tr> <td width="100%"><a href="verdetalle.asp?id=<% = rs("id_categoria") %>"><% = rs("nombre_categoria") %></a></td> </tr> <% rs.MoveNext Loop %> </table> </td> <td width="50%"> <% Do While Not rs.Eof %> <table border="0" width="100%" cellspacing="0" cellpadding="0"> <tr> <td width="33%"><a herf="verdetalle.asp?id=<% = rs("id_producto") %>"><img src="<% = rs("imagen") %>"></a></td> <td width="33%"><a herf="verdetalle.asp?id=<% = rs("id_producto") %>"><% = rs("nombre") %></a></td> <td width="34%"><% = rs("precio") %></td> </tr> </table> <% rs.MoveNext Loop %> </td> </tr> </table>
Este código misteriosametnte me tiraba un error que se soluciono al formatear mi PC (algo raro pero no muy importante).... pero el problema es que no me desplegaba las listas con los registros de las tablas de mi base de datos y no se porque.... pero bueno como estaba (y siego estando) muy entusiasmado con la idea de poder hacer mi primer script de ASP yo solo (un catálogo on-line tipo el de http://www.bymcomputer.cl/). La cosa es que empece a probar hasta que mágicamente aparecieron los registros desplegados en mi navegador.... el código que logró que esto funcionara fue:
Código:
<%
'Declarar Variables
Dim Conn
Dim categorias_sql
Dim productos_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
categorias_sql="Select * From categorias"
'Creación del Recordset
set rs = CreateObject("ADODB.Recordset")
'Apertura del Recordset
rs.Open categorias_Sql, Conn
%>
<table border="0" width="100%" cellspacing="0" cellpadding="0">
<tr>
<td width="20%">
<table border="0" width="100%" cellspacing="0" cellpadding="0">
	<tr>
	 <td width="100%">Categorías</td>
	</tr>
<% 
Do While Not rs.Eof 
%>
	<tr>
<td width="100%"><a href="catalogo.asp?id=<% = rs("id_categoria") %>"><% = rs("nombre_categoria") %></a></td>
	</tr>
<%
rs.MoveNext
Loop
rs.close
%>
</table>
</td>
<td width="80%">
<%
'Creación de la sentencia SQL correspondiente
productos_sql = "Select distinct * From productos Where categoria = " & categoria & ""
 
'Apertura dle Rescordset
rs.Open productos_sql, Conn
Do While Not rs.Eof 
%>
<table border="0" width="100%" cellspacing="0" cellpadding="0">
	<tr>
	 <td width="33%"><a herf="verdetalle.asp?id=<% = rs("id_producto") %>"><img src="<% = rs("imagen") %>" width="100" height="100"></a></td>
	 <td width="33%"><a herf="verdetalle.asp?id=<% = rs("id_producto") %>"><% = rs("nombre") %></a></td>
	 <td width="34%"><% = rs("precio") %></td>
	</tr>
</table>
<%
rs.MoveNext
Loop
set rs = nothing
Conn.close
set Conn=nothing
%>
</td>
</tr>
</table>
Bueno la diferencia entre estos dos códigos es que en uno trato de hacer con un solo select la selección de los campos de mis dos tablas, pero en el otro le dedique a cada uno un select "personalizado".... de tal forma que no tuviera que escribir linas como Inner Join o cosas asi.... bueno en el fondo a lo que va este mensaje es a discutir que es mejor.... una selección multiple con inner join (o sin el) o una selección y tratamiento de las tablas por separado.... que es mas rápido????.... bueno espero que me puedan ayudar.... de todos modos si encuentran el error (que yo no encontré) en el primer codigo.... porfavor diganmelo porque quisiera aprender a usar bien eso de las seleciones multiples porque veo que son muy útiles.... bueno maestros saludos a todos y muchas gracias por toda su ayuda
__________________
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!!

Última edición por El_Metallick; 08/05/2005 a las 08:03