Ver Mensaje Individual
  #2 (permalink)  
Antiguo 29/09/2008, 05:30
mariano_donati
 
Fecha de Ingreso: marzo-2005
Mensajes: 1.418
Antigüedad: 20 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