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

vinculacion entre paginas

Estas en el tema de vinculacion entre paginas en el foro de ASP Clásico en Foros del Web. tengo un pequeño problema vincular datos entre tablas. Tengo una tabla llamada tiendas con un campo llamado nombretienda, otro llamado telefono y otro llamado idzona. ...
  #1 (permalink)  
Antiguo 19/03/2007, 16:11
 
Fecha de Ingreso: julio-2003
Ubicación: Barcelona
Mensajes: 142
Antigüedad: 20 años, 10 meses
Puntos: 1
Pregunta vinculacion entre paginas

tengo un pequeño problema vincular datos entre tablas.
Tengo una tabla llamada tiendas con un campo llamado nombretienda, otro llamado telefono y otro llamado idzona.
en un principio tenia puestos los nombres de las comunidades autonomas, pero leyedno por ahi, vi que era mejor hacer una tabal con las comunidades autonomas y poner un numero en el campo idzona de la tabla tiendas.

Entonces hice un listado de las comunidades sin problemas tipo:
Código:
oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source="&Server.MapPath("/cgi-bin/dealers.mdb")&";"
SQL="SELECT * FROM comunidad order by comunidad asc;"
y despues pinto una linea por cada registro
Código:
'Pinto una línea de la tabla por cada registro
Response.Write("<A HREF=clientes.asp?id="& rs.fields("idzona_id") & ">"&rs.Fields("comunidad")&"</A><BR>")
El problema viene ahora cuando en al pagina clientes.asp intento listar las tiendas no hay manera. Pongo algo como esto:


Código:
<%
Set con = Server.CreateObject("ADODB.Connection")
Con.Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("/cgi-bin/dealers.mdb"))
sql = "SELECT * FROM tiendas where tiendas.idzona = " & Request.QueryString("comunidad.idzona_id") & ""

'Ejecuta un sentencia SQL de consulta
'Recorre todas las filas del resultado
set result = Con.Execute(sql)
%>
y despues en el body pongo esto:

Código:
  <center>
  <%=result("tiendas.nombretienda")%> <BR>
  <%=result("tiendas.telefono")%>

¿que hago mal??
  #2 (permalink)  
Antiguo 19/03/2007, 16:24
Avatar de JuanRAPerez
Colaborador
 
Fecha de Ingreso: octubre-2003
Mensajes: 2.393
Antigüedad: 20 años, 7 meses
Puntos: 27
Re: vinculacion entre paginas

y el error es?
__________________
JuanRa Pérez
San Salvador, El Salvador
  #3 (permalink)  
Antiguo 19/03/2007, 16:26
Avatar de JuanRAPerez
Colaborador
 
Fecha de Ingreso: octubre-2003
Mensajes: 2.393
Antigüedad: 20 años, 7 meses
Puntos: 27
Re: vinculacion entre paginas

jeje

yo de nuevoi

Cita:
clientes.asp?id="& rs.fields("idzona_id") & "
recuperas
Cita:
& Request.QueryString("comunidad.idzona_id") & "
creo que seria
Cita:
& Request.QueryString("id") & "
digo

suerte
__________________
JuanRa Pérez
San Salvador, El Salvador
  #4 (permalink)  
Antiguo 23/03/2007, 07:24
 
Fecha de Ingreso: julio-2003
Ubicación: Barcelona
Mensajes: 142
Antigüedad: 20 años, 10 meses
Puntos: 1
Re: vinculacion entre paginas

no me funciona
he conseguido mostrar los campos de la tabla comunidad pero los de la tabla tiendas no hay manera.
¿no habra que poner un INNER JoIN o algo asi
Código:
<%
Set con = Server.CreateObject("ADODB.Connection")
Con.Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("/cgi-bin/dealers.mdb"))
sql = "SELECT * FROM comunidad where idzona_id = " & Request.QueryString("idzona_id") & ""

'Ejecuta un sentencia SQL de consulta
'Recorre todas las filas del resultado
set result = Con.Execute(sql)
%>

Código:
<body>
  <center>
  <%=result("comunidad")%>     
</body>
¿alguien me puede ayudar?
  #5 (permalink)  
Antiguo 23/03/2007, 07:52
 
Fecha de Ingreso: enero-2006
Ubicación: Torroles (Costa der Só)
Mensajes: 1.017
Antigüedad: 18 años, 5 meses
Puntos: 7
vinculacion entre tablas

Hola

Veamos si me entero:

Lo que quieres es listar todas las tiendas de una determinada comunidad ¿no es asi?

o sea:

Tabla: Tiendas (varias) ----------------------> Comunidad (una)

Es decir, es una relacion uno a varios la que hay entre ambas tablas:

SELECT * FROM tiendas WHERE idcomunidad = 'Andalucia'

Sacará todas las tiendas en esa comunidad ('Andalucia' o '1' o como hayas hecho el indice)

Si en la inserción de los datos se ha hecho bien, los datos de la tabla Tienda serían algo como:

Código:
ID    Nombre    Comunidad
--    -------    ----------
1    Las Rosas      1
2    YoyTu           1
3    Yalose           1
4    TeyCafe        2


EN la Tabla Comunidad los datos serian algo como

Código:
ID     Nombre
--    ---------
1      Andalucia
2      Asturias
Si apuramos un poco mas, podriamos incluir la ciudad en otra Tabla:

Código:
Tabla: Ciudad

ID    Nombre     Comunidad
--    -------     ----------
1     Almeria            1
2     Oviedo            2
3      Gijón              2
Entonces, la tabla Tiendas haría referencia a esta tabla en vez de a Comunidad:

Código:
ID    Nombre    Ciudad
--    -------    ----------
1    Las Rosas      1
2    YoyTu           1
3    Yalose           2
4    TeyCafe        3

Como puedes ver la estructura de las tres tablas tienen una relacion de uno a varios:

Tienda ------> Ciudad -----> Comunidad

Se explicaría asi: Una comunidad tiene varias ciudades y una ciudad tiene varias tiendas.

Para sacar todas las tiendas de, por ejemplo, Andalucia (ID: 1) hariamos un Select asi:

SELECT Tiendas.Nombre FROM (Tiendas INNER JOIN Ciudades ON Tiendas.id = Ciudades.id) INNER JOIN Comunidades ON Tiendas.id = Comunidades.id
WHERE Comunidades.id=1;

(Esta hecho al voleo, si me equivoco disculpen las molestias )



Es esto lo que necesitas?


Un saludo
__________________
"Tus pecados son el estiércol sobre el que florecerán las flores de tus virtudes" - Gerald Messadié -
  #6 (permalink)  
Antiguo 24/03/2007, 03:34
 
Fecha de Ingreso: julio-2003
Ubicación: Barcelona
Mensajes: 142
Antigüedad: 20 años, 10 meses
Puntos: 1
Re: vinculacion entre paginas

creo que si, pero ahora necsito que el campo idzona me lo coja de la pagian previa donde list las comunidades
Código:
Response.Write("<A HREF=clientes.asp?idzona_id="& rs.fields("idzona_id") & ">"&rs.Fields("comunidad")&"</A><BR>")
y con request_string en la siguiente me lo coja

¿me explico?
NO soy muy ducho en la materia lo siento
  #7 (permalink)  
Antiguo 01/04/2007, 16:12
 
Fecha de Ingreso: julio-2003
Ubicación: Barcelona
Mensajes: 142
Antigüedad: 20 años, 10 meses
Puntos: 1
Re: vinculacion entre paginas

casi lo he conseguido, pero solo me lista un resultado.
A la tabla le he añadido el campo telefono



Código:
<%
Set con = Server.CreateObject("ADODB.Connection")
Con.Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("/cgi-bin/prueba.mdb"))
sql = "SELECT * FROM (Tiendas INNER JOIN Ciudad ON Tiendas.id = Ciudad.id) INNER JOIN Comunidad ON Tiendas.id = Comunidad.id WHERE Comunidad.id=" & Request.QueryString("id") & ""
set result = Con.Execute(sql)
%>





<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<html>

<head>
</head>
<body>


  <center>
  <%=result("Nombre")%> <BR>
  <%=result("telefono")%> <BR>


      



</body>

</html>
¿Alguien me puede echar un cable?
  #8 (permalink)  
Antiguo 02/04/2007, 07:25
 
Fecha de Ingreso: enero-2006
Ubicación: Torroles (Costa der Só)
Mensajes: 1.017
Antigüedad: 18 años, 5 meses
Puntos: 7
Re: vinculacion entre paginas

Si solo le pones un registro a visualizar (el primero) solo hará eso:

Cita:
<body>


<center>
<%=result("Nombre")%> <BR>
<%=result("telefono")%> <BR>



</body>


Para mas:

Código:
<% While not result.EOF %>

 <center>
  <%=result("Nombre")%> <BR>
  <%=result("telefono")%> <BR>
<center>

<% 
       result.moveNext()
wend %>



Un saludo
__________________
"Tus pecados son el estiércol sobre el que florecerán las flores de tus virtudes" - Gerald Messadié -
  #9 (permalink)  
Antiguo 02/04/2007, 15:54
 
Fecha de Ingreso: julio-2003
Ubicación: Barcelona
Mensajes: 142
Antigüedad: 20 años, 10 meses
Puntos: 1
Re: vinculacion entre paginas

¿como lo harias para cuando los registros sean = 0

Ahora dice

ADODB.Field (0x80020009)
El valor de BOF o EOF es True, o el actual registro se eliminó;
la operación solicitada requiere un registro actual.

Última edición por tocalasam; 30/10/2007 a las 03:44
  #10 (permalink)  
Antiguo 30/10/2007, 03:44
 
Fecha de Ingreso: julio-2003
Ubicación: Barcelona
Mensajes: 142
Antigüedad: 20 años, 10 meses
Puntos: 1
Re: vinculacion entre paginas

¿como lo harias para cuando los registros sean = 0

Ahora dice

ADODB.Field (0x80020009)
El valor de BOF o EOF es True, o el actual registro se eliminó;
la operación solicitada requiere un registro actual.
  #11 (permalink)  
Antiguo 30/10/2007, 13:05
 
Fecha de Ingreso: enero-2006
Ubicación: Torroles (Costa der Só)
Mensajes: 1.017
Antigüedad: 18 años, 5 meses
Puntos: 7
Re: vinculacion entre paginas

mmm, no deberia darte ese error a no ser que hayas movido el puntero de recordset. Pon el código, a ver como lo estas haciendo.



Un saludo
__________________
"Tus pecados son el estiércol sobre el que florecerán las flores de tus virtudes" - Gerald Messadié -
  #12 (permalink)  
Antiguo 31/10/2007, 06:52
 
Fecha de Ingreso: julio-2003
Ubicación: Barcelona
Mensajes: 142
Antigüedad: 20 años, 10 meses
Puntos: 1
Re: vinculacion entre paginas

Código:
<%
set oConn=Server.CreateObject("ADODB.Connection")
oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source="&Server.MapPath("/cgi-bin/boss_dealers.mdb")&";"
SQL="SELECT * FROM dealers INNER JOIN provincias ON dealers.IdProvincia = provincias.IdProvincia WHERE dealers.IdProvincia="&Request.QueryString("IdProvincia")&" ORDER by Nombretienda asc"
set result = oConn.Execute(sql)
%>

Código:
<% While not result.EOF %>
<%=result("NombreProvincia")%> 
<%=result("NombreTienda")%> 
<%=result("direccion")%> 

<% 
       result.moveNext()
wend %>
entonces si en NombreProvincia= 1 por ejemplo, no existe ningun nombretienda, da ese error.
¿sabes pq?
  #13 (permalink)  
Antiguo 02/11/2007, 03:21
 
Fecha de Ingreso: enero-2006
Ubicación: Torroles (Costa der Só)
Mensajes: 1.017
Antigüedad: 18 años, 5 meses
Puntos: 7
Re: vinculacion entre paginas

Hola tocalasam,

¿Que hay entre esta linea: set result = oConn.Execute(sql) y esta otra: <% While not result.EOF %>? Te recomiendo que chequees tambien los valores que lleguen por Request.QueryString("IdProvincia")

Tambien es posible que el error provenga del MDAC (ADO) que uses. Bájate la última versión desde Microsoft y actualizala.


Un saludo
__________________
"Tus pecados son el estiércol sobre el que florecerán las flores de tus virtudes" - Gerald Messadié -
  #14 (permalink)  
Antiguo 03/11/2007, 16:14
 
Fecha de Ingreso: julio-2003
Ubicación: Barcelona
Mensajes: 142
Antigüedad: 20 años, 10 meses
Puntos: 1
Pregunta Re: vinculacion entre paginas

te paso el codigo completo. Yo creo que el problema mas que en la sentencia viene originado cuando en el EOF

Código:
<%
set oConn=Server.CreateObject("ADODB.Connection")
oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source="&Server.MapPath("/cgi-bin/boss_dealers.mdb")&";"
SQL="SELECT * FROM dealers INNER JOIN provincias ON dealers.IdProvincia = provincias.IdProvincia WHERE dealers.IdProvincia="&Request.QueryString("IdProvincia")&" ORDER by Nombretienda asc"
set result = oConn.Execute(sql)
%>


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Homepage</title>
<link href="css/estilazo4.css" rel="stylesheet" type="text/css" />
<link href="css/product_options.css" rel="stylesheet" type="text/css" />
</head>
<body>

<!-- cabecera-->
<div id="header"><!-- #include file='header.html' --></div>

<div id="content">
<!-- columna izquierda-->

<div id="colOne"><!-- #include file='left_col2.html' --></div>

<!-- columna derecha-->
<div id="colTwo">
<!-- titulo seccion-->

<h2>Distribuidores BOSS en  <%=result("Nombreprovincia")%></h2>

<% While not result.EOF %>

<P><B>
<%
'link para web
	if len(result.fields("web") & "") > 0 then
	Response.Write ("<a href="&result.fields("web")&"  target=_blank>"&result.fields("Nombretienda")&"</a></B>")
	else
	Response.Write (""&result.fields("Nombretienda")&"")
	end if
%>

<BR><%=result("direccion")%> 
(<%=result("poblacion")%> - <%=result("cp")%>)
<BR>Tlfo: <%=result("telefono")%> - <%
'link para email
	if len(result.fields("email") & "") > 0 then
	Response.Write ("<a href=mailto:"&result.fields("email")&"  target=_blank>@mail</a>")
	else
	Response.Write ("")
	end if
%> 

<% 
       result.moveNext()
wend %>


<!-- fin titulo seccion-->

</div>

<!-- fin content-->
</div>

<div id="columnas">
<div id="colOne"><!-- #include file='columnas4.html' --></div>
<!-- fin columnas-->
</div>

<!-- pie-->
<div id="footer"><!-- #include file='footer.html' --></div>

</body>
</html>
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 17:03.