Necesito ayuda sobre Base de datos

Hola arunchi. Estoy haciendo una página web de una empresa de aire acondicionado para mi proyecto de fin de curso, pero me he atascado a la hora de enseñar un catálogo de productos.
Mi base de datos tiene 3 tablas: Marca, Modelo, Sistema.
Yo quiero que me aparezca el Modelo de la Marca y el sistema que yo elija.
Mi página Catalogo.asp contiene lo siguiente:(Rescato datos de MenuPersonal.asp)
<% @ LANGUAGE=VBSCRIPT %>
<% OPTION EXPLICIT %>
<HTML>
<BODY vlink="#0000FF" alink="#6600CC" background="Fondos/FondoVioleta.jpg">
<%
Dim conexion, registros, fMarca, fSistema
Dim vMarca, vSistema
Dim sMarca, sSistema
session("sMarca")=ucase(request.form("fMarca"))
session("sSistema")=ucase(request.form("fSistema"))
vMarca=session("sMarca")
vSistema=session("sSistema")
%>
<%
Set conexion=Server.CreateObject("ADODB.Connection")
conexion.open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\Inetpub\wwwroot\Clitecsa\Clitecsa.mdb"
Set registros=Server.CreateObject("ADODB.Recordset")
registros.open "SELECT * from Marca, Sistema, Modelo where(Modelo.NombreMarca='" & vMarca & "') AND (Modelo.NombreSistema='" & vSistema & "')" ,conexion
IF registros.eof then%>
<p align="center"> </p>
<p align="center"><font face="Comic Sans MS" color="#0000FF" size="4">No se ha encontrado ningún sistema  (<%=vSistema%>)  de la marca  (<%=vMarca%>) 
</font></p>
<p align="center"> </p>
<form method="post" action="MarcaSistema.asp">
<p align="center"><input type="submit" value="Volver atrás"></p>
</form>
<%
ELSE
Set conexion=Server.CreateObject("ADODB.Connection")
conexion.open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\Inetpub\wwwroot\Clitecsa\Clitecsa.mdb"
Set registros=Server.CreateObject("ADODB.Recordset")
registros.open "SELECT * from Marca, Sistema, Modelo where(Modelo.NombreMarca='" & vMarca & "') AND (Modelo.NombreSistema='" & vSistema & "')" ,conexion
IF registros.eof then%>
<p align="center"> </p>
<p align="center"><font face="Comic Sans MS" color="#0000FF" size="4">No se ha encontrado ningún modelo con estos parámetros 
</font></p>
<p align="center"> </p>
<form method="post" action="MarcaSistema.asp">
<p align="center"><input type="submit" value="Volver atrás"></p>
</form>
<%
ELSE%>
<img border="0" src="<%=registros(2)%>">
<br><br><br>
<p style="margin-top: 0; margin-bottom: 0"><font face="Comic Sans MS"><font color="#0000FF">    Sistema :</font> </font><b>
<font color="#FF0000" size="3" face="Comic Sans MS"><%=vSistema%> (<%=lcase(registros(5))%>)</font></b></p>
<center>
<TABLE border=1 width="100%" cellpadding="2" height="22" style="border-style: solid; border-width: 1" bordercolor="#FFFFFF">
<tr>
<td width="20%" style="border-style: outset; border-width: 2; padding: 4; background-color:#C0C0C0" align="center" height="27">
<p style="margin-top: 0; margin-bottom: 0"><font face="Comic Sans MS"><b> MODELO 
</td>
<td width="50%" style="border-style: outset; border-width: 2; padding: 4; background-color:#C0C0C0" align="center" height="27">
<p style="margin-top: 0; margin-bottom: 0"><font face="Comic Sans MS"><b> CARACTERÍSTICAS 
</td>
<td width="30%" style="border-style: outset; border-width: 2; padding: 4; background-color:#C0C0C0" align="center" height="27">
<p style="margin-top: 0; margin-bottom: 0"><font face="Comic Sans MS"><b> FOTO 
</td>
</tr>
<% do while not registros.eof%>
<tr>
<td width="20%" height="1" style="border-style: inset; border-width: 1; font-size:8pt; font-family:Comic Sans MS; color:#0000FF"> <%=ucase(registros(("CodModelo")))%>
</td>
<form>
<td width="50%" style="border-style: inset; border-width:1; line-height: 100%; font-size:8pt; font-family:Comic Sans MS; color:#0000FF" height="1">
<textarea readonly rows="2" cols="75" name="Carac" style="border-style:groove; border-width:1; background-color: #CECFFF; font-family:Comic Sans MS; font-size:8pt; color:#0000FF; list-style-type:none"><%=registros("CaracteristicasModelo")%></textarea>
</td>
</form>
<td width="20%" height="1" style="border-style: inset; border-width: 1; font-size:8pt; font-family:Comic Sans MS; color:#0000FF"><%=registros("FotoModelo")%>
</td>
<%
registros.MoveNext
loop
Response.write "</table>"
END IF
END IF
registros.close
set registros=nothing
conexion.close
set conexion=nothing
%>
</body>
</html>
////////////
Mi problema es que me repite cada uno de los modelos 4 veces.
Espero que me ayudes, muchas gracias de antemano.

1 respuesta

Respuesta
1
Te hago unas consulta según lo que fui leyendo.
Vos tirás la primer consulta y luego preguntás si hay registros o no. Si no hay, imprimís que no se encontró ningún sistema para esa marca. Si hay registros, volvés a ejecutar la misma consulta. ¿Por qué hacés esto? Estás consumiendo recursos sin necesidad porque el recordset ya lo tenés cargado de antes.
Por otra parte probá con este código para loopear por los registros:
while not rs.EOF
Response.Write("los campos")
Rs. MoveNext
Wend
Si con este código seguís teniendo las repeticiones, el problema está en la BD, que directamente te está devolviendo los registros repetidos al consultarla.
Si confirmás que los problemas están en la BD, te doy una manera más aconsejable de manejar las relaciones entre las tablas. Cada tabla debería tener un campo autonumérico que sea clave principal. De esta manera manejás códigos irrepetibles. Y por otro lado, en donde necesitás relacionar 2 tablas, ponés un campo que contenga el código del elemento en la otra tabla. Por ejemplo un sistema debería tener un código propio, y aparte un código de marca. Si en mi tabla sistema tengo en código de marca un 45, lo que hago es ejecutar una consulta en la tabla marca y que me devuelve que marca tiene código 45. De esta manera, obtenés todos los elementos que querés relacionar.
Espero que te sirva y que lo entiendas. Cualquier cosa preguntame de nuevo.
Muchas gracias pero ya pude solucionarlo poniendo:
registros.open "SELECT * from Marca, Sistema, Modelo where(Modelo.NombreMarca='" & vMarca & "') AND (Modelo.NombreSistema='" & vSistema & "')" ,conexion
Gracias

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas