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

como hago esta consulta

Estas en el tema de como hago esta consulta en el foro de ASP Clásico en Foros del Web. Saludos: Pueden ustedes indicarme como hacer lo siguiente porque no lo tengo nada claro, estoy atascado. Qiero listar una carta de comidas de forma que ...
  #1 (permalink)  
Antiguo 16/10/2005, 20:26
 
Fecha de Ingreso: junio-2003
Ubicación: Santiago de Compostela
Mensajes: 603
Antigüedad: 21 años
Puntos: 0
como hago esta consulta

Saludos:
Pueden ustedes indicarme como hacer lo siguiente porque no lo tengo nada claro, estoy atascado.
Qiero listar una carta de comidas de forma que se muestre de la manera siguiente:

Tipo Comida 1 (entremes)
Comida 1
Comida 2
Comida 3
Tipo comida 2 (Carnes)
Comida 1
Comida 2
Comida 3
Tipo comida 3 (pescados)
Comida 1
Comida 2
.
.
etc.

He intentado hacerlo con este código pero me salen los tipos de comida (entremes, carnes, pescados, postres) pero dentro de cada tipo solo me aparece una comida y no es ni la primera ni la ultima del recordset.

Tengo un select donde se listan los idiomas en los que se mostrará la carta (ingles, italiano o español).
Ese listado lo produce el recordset: rs_plato_idioma.

Hay dos recordset más:
rs_plato_tipo y rs_plato_nombre que listan los diferentes tipos de plato (entremes, carnes, pescados,postres) y los diferentes platos (gambas, flan, etc) respectivamente.


Para eso uso el siguiente código:

Código:
<% Set Conn= Server.CreateObject("ADODB.Connection")%>
<% Set Command= Server.CreateObject("ADODB.Command")%>
<% Conn.open "DSN=galandum.com" %>
<%Command.ActiveConnection=Conn %>
<% Command.CommandType=adCmdText %>
<% Command.CommandText= "SELECT distinct plato_idioma FROM carta_comidas order by plato_idioma"%>
<% Set rs_plato_idioma=Command.Execute () %>
<!-- 'Fin conexion a dsn con ACCESS -->
<form name="form1" method="post" action="carta_comidas.asp">
  <select name="select_idioma" id="select_idioma">
  <%rs_plato_idioma.movefirst
  do until rs_plato_idioma.eof%>
    <option value="<%=rs_plato_idioma("plato_idioma")%>"><%=rs_plato_idioma("plato_idioma")%></option>
 <%rs_plato_idioma.movenext
  loop%>
  </select>
  <input type="submit" value="Selecciona idioma">
</form>
<% dim plato_idioma
plato_idioma=request.form("select_idioma")
'response.write plato_idioma
Command.CommandText= "SELECT distinct plato_tipo FROM carta_comidas where plato_idioma='" &plato_idioma& "'"
Set rs_plato_tipo=Command.Execute ()
Command.CommandText= "SELECT plato_nombre FROM carta_comidas where plato_idioma='" &plato_idioma& "' order by plato_tipo"
Set rs_plato_nombre=Command.Execute ()%>

<table width="200" border="1">
   
    <%rs_plato_tipo.movefirst
 do until rs_plato_tipo.eof%>
  <tr>
   <td>
  <%response.write rs_plato_tipo("plato_tipo")
  rs_plato_tipo.movenext%>
      </td>
   <tr>
   <td>
   <%rs_plato_nombre.movefirst
   for contador=rs_plato_tipo.eof to rs_plato_tipo.bof%>
   <%
   response.write rs_plato_nombre("plato_nombre")
   rs_plato_nombre.movenext%> 
     <%next%>
   </td>
   </tr>
  </tr>  
    <%loop%>

</table>

</body>
<%rs_plato_idioma.close
rs_plato_tipo.close
rs_plato_nombre.close
conn.close%>
Gracias a todos
__________________

Espero haber aprendido algo de tí.
A mi padre.
  #2 (permalink)  
Antiguo 16/10/2005, 20:56
Avatar de univercity  
Fecha de Ingreso: noviembre-2002
Mensajes: 681
Antigüedad: 21 años, 7 meses
Puntos: 0
Prueba esto en el Sql:

"Select Plato_tipo, plato_nombre from carta_comidas where plato_idioma = '" &plato_idioma& "'" GROUP BY plato_tipo, plato_nombre"

prueba y nos cuentas...
__________________
"Lo importante es nunca dejar de hacerse preguntas"
Albert Einstein
  #3 (permalink)  
Antiguo 16/10/2005, 21:27
 
Fecha de Ingreso: junio-2003
Ubicación: Santiago de Compostela
Mensajes: 603
Antigüedad: 21 años
Puntos: 0
Pues casi que es así, solo falta un pequeño detalle:

El listado que consigo es de este tipo:

tipo 1 comida1
tipo 1 comida2
tipo 1 comida3
tipo 2 comida1
tipo 2 comida2
tipo 2 comida3

y el que yo necesito es
tipo 1
comida1
comida2
comida3
tipo 2
comida1
comida2
comida3

Gracias
__________________

Espero haber aprendido algo de tí.
A mi padre.
  #4 (permalink)  
Antiguo 17/10/2005, 04:59
Avatar de axiertxo  
Fecha de Ingreso: octubre-2005
Ubicación: España
Mensajes: 387
Antigüedad: 18 años, 7 meses
Puntos: 0
eso haces un recorrido por el recordset. primero escribes el tipo de plato y la primera comida. guardando en una variable el tipo de plato. haces un rs.movenext y comparas el primer tipo de plato con el guardado en la variable.

si es = solo escribes la comida. si es diferente pos escribes plato y comida.
  #5 (permalink)  
Antiguo 17/10/2005, 14:06
Avatar de JuanRAPerez
Colaborador
 
Fecha de Ingreso: octubre-2003
Mensajes: 2.393
Antigüedad: 20 años, 7 meses
Puntos: 27
funcioanra asi?=

Código:

</table>
<%
Command.CommandText= "SELECT distinct plato_tipo FROM carta_comidas where plato_idioma='" &plato_idioma& "'"
Set rs_plato_tipo=Command.Execute ()
if rs_plato_tipo.eof or rs_plato_tipo.bof
	response.write "no hay registros en la base de datos"
else
	%>
	<table width="200" border="1">
		<%
	    rs_plato_tipo.movefirst
		Do While Not rs_plato_tipo.EOF
		%>
		<tr>
			<td>
			<%
			response.write rs_plato_tipo("plato_tipo")
			%>
			</td>
		</tr>
		<tr>
			<td>
			<%
			Valor_plato_tipo = rs_plato_tipo("plato_tipo")
			Command.CommandText= "SELECT plato_nombre FROM carta_comidas where plato_idioma='" &plato_idioma& "' and plato_ipo = '"&Valor_plato_tipo&"' order by plato_tipo"
			Set rs_plato_nombre=Command.Execute ()
			if rs_plato_nombre.eof or rs_plato_nombre.bof
				response.write "no hay registros en la base de datos"
			else
				%>
				<ul>
					<%
					Do While Not rs_plato_nombre.EOF
					%>
					<li>
						<%response.write rs_plato_nombre("plato_nombre")%>	
					</li>
					<%
					rs_plato_nombre.MoveNext 
					loop
					%>						
				</ul>
			</td>
		</tr>
		<%
		rs_plato_tipo.MoveNext 
		loop
		%>	
	</table>
	
<%
end if
%>
a ver si te funciona pero tengo dudas en tus campos en la segunda consulta
__________________
JuanRa Pérez
San Salvador, El Salvador
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 20:36.