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

Select a dos tablas y bucle anidado para mostrarlas

Estas en el tema de Select a dos tablas y bucle anidado para mostrarlas en el foro de ASP Clásico en Foros del Web. Hola, no saben la cantidad de veces que este foro me ha salvado la vida, pero ahora no encuentro respuesta. El problema es el siguiente: ...
  #1 (permalink)  
Antiguo 26/09/2008, 14:41
 
Fecha de Ingreso: enero-2008
Mensajes: 2
Antigüedad: 16 años, 4 meses
Puntos: 0
Select a dos tablas y bucle anidado para mostrarlas

Hola, no saben la cantidad de veces que este foro me ha salvado la vida, pero ahora no encuentro respuesta.
El problema es el siguiente:

Tengo una tabla equipos y una tabla subequipos, obviamente relacionadas, ya que un equipo puede tener muchos subequipos, pero un subequipo solo puede tener uno.

El proble es que tengo que mostrar cada equipo (una vez) con sus respectivos subequipos me explico.

Equipo 1
sub equipo1 codigo subequipo uno serie subequipo uno
sub equipo2 codigo subequipo dos serie subequipo dos

Equipo 2
subequipo1 ..................................



Y asi sucesivamente.

El problema es que hice una consulta para que primero me muestre todos los equipos de una determinada compañia.
Y despues otra consulta para los subequipos q posean el mismo id (relacion) que el del equipo.

Todo esto en un bucle anidado donde solamente me muestra todos los equipos, pero SOLAMENTE LOS SUBEQUIPOS DEL PRIMER EQUIPO DE LA LISTA.

Cualquier ayuda es bien recibida, cualquier cosa posteo el codigo si es necesario.

Saludos y muchas gracias
  #2 (permalink)  
Antiguo 29/09/2008, 05:30
 
Fecha de Ingreso: marzo-2005
Mensajes: 1.418
Antigüedad: 19 años, 2 meses
Puntos: 9
Respuesta: Select a dos tablas y bucle anidado para mostrarlas

Fijate en esta función. Es una modificación de una que está en la biblioteca de funciones de este foro.

Sub getCategories(param_id, objConnection)

Const FIELD_ID = 0
Const FIELD_NAME = 1

Dim endloop

sqlquery = "SELECT Id, Nombre FROM Categorias WHERE Id_dep = " & param_id

Set rs = Server.CreateObject("ADODB.recordSet")
call rs.Open(sqlquery, objConnection)

If Not (rs.Bof Or rs.Eof) Then
arr = rs.GetRows()
endloop = UBound(arr, 2)
For i = 0 To endloop
Response.Write(arr(FIELD_NAME,i) & "<br>")
Call getCategories(arr(FIELD_ID,i), objConnection)
Next
Else
rs.Close()
Set rs = Nothing
End If

End Sub

Fijate que hay algunas cosas que tenés que considerar para utilizarla. Lo primero es la estructura de tu base de datos. Para que funcione, vas a necesitar poner los equipos y los subequipos en una misma tabla. Desde el punto de vista de diseño, esto también es muy lógico, ya que un subequipo es en definitiva un equipo, por lo tanto te podés crear una sola tabla EQUIPOS. En esta tabla si o si deben existir estos campos:

Id -> El identificador del equipo
Nombre -> Nombre del equipo
Id_dep -> Identificador del equipo del que depende

Por ejemplo en tu caso quedaría algo como:

Id Nombre Id_dep
--- ----------- ---------
1 Equipo1 0
2 Equipo2 0
3 Equipo3 0
4 Subequipo1 1
5 Subequipo2 1
6 Subequipo3 2
7 Subequipo4 3


Fijate que el Id_dep de los equipos "raíces" es 0, y justamente este es el valor que tiene que tener el primer parámetro de la función cuando la llames. Otra cosa para que tengas en cuenta es que antes de llamarla tenés que crear una conexión, abrirla y luego se la pasas como segundo parámetro. Y también fijate que tenés que cambiar en la consulta sql por el nombre de la tabla que corresponda.
Espero haberte sido de ayuda.
Saludos!.
__________________
Add, never Remove
  #3 (permalink)  
Antiguo 29/09/2008, 08:09
Avatar de JuanRAPerez
Colaborador
 
Fecha de Ingreso: octubre-2003
Mensajes: 2.393
Antigüedad: 20 años, 7 meses
Puntos: 27
Respuesta: Select a dos tablas y bucle anidado para mostrarlas

Cita:
Iniciado por aleyagami Ver Mensaje

Todo esto en un bucle anidado donde solamente me muestra todos los equipos, pero SOLAMENTE LOS SUBEQUIPOS DEL PRIMER EQUIPO DE LA LISTA.

Cualquier ayuda es bien recibida, cualquier cosa posteo el codigo si es necesario.

Saludos y muchas gracias
si pegas el código seria mas fácil ayudarte

suerte
__________________
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 23:22.