Ver Mensaje Individual
  #3 (permalink)  
Antiguo 05/10/2007, 10:11
Avatar de oabareload
oabareload
 
Fecha de Ingreso: junio-2006
Ubicación: Distrito Federal, México
Mensajes: 57
Antigüedad: 17 años, 10 meses
Puntos: 0
Re: Como creo una función recursiva para SQL Server 2005 y ASP

Pues esta muy interesante, de hecho ya había visto algo así en otros lados (pues anduve buscando) pero desafortunadamente no entendí nada (igual ahorita).

Pero creo que sería bueno que buscara más acerca de esto puesto que creo llegar a necesitarlo más (espero no). Y mientras tendré que hacerlo de otra manera no muy ortodoxa pero tal vez más eficaz.

De una vez les digo como:

En el campo "prearea" tendre que poner todos los padres de esa Área:

padremayor,padremayor-1,.....,padremayor-n

Area 1 (id=1,prearea=' ')
Area 2 (id=2,prearea= ,1)
Area 3 (id=3,prearea= ,1,2)
Area 4 (id=4, prearea= ,1)
Area 5 (id=5,prearea='')
Area 6 (id=6,prearea= ,5)
Area 7 (id=7,prearea= ,5,6)
Area 8 (id=8,prearea= ,5,6,7)
Osea tomare el prearea anterior y le añadire el id_area padre de la nueva que este poniendo, por eso la coma y el espacio al inicio. De tal manera que al dividirlo en un split podre ubicar desde el inicio hasta el final a los padres.

Código PHP:
<%
qry="SELECT * FROM AREAS ORDER BY prearea ASC"
set rsAREAS conn.Execute(qry)
Do while 
not rsAREAS.EOF
 padres
=split(rsAREAS("prearea"),",")
 For 
0 to ubound(padres)-1
  qry
="SELECT * FROM AREAS WHERE id_area=' " padres[i] & " ' "
  
set rsEXISTE conn.Execute(qry)
  if 
not rsEXISTE.EOF then
   response
.write rsEXISTE("nombre") & " - "
  
End if
 
Next i
 rsAREAS
.MoveNext
Loop
%> 
De hecho me parece más ligero en cuanto al código, pero más lento, y esta lentitud se va ver clara cuando lleguen a ser miles de registros y árboles de hasta 5 o 6 ramas.

Pero aun así si alguien tiene otra solución la tomare en cuenta, de hecho no are ningún cambio todavía sino hasta el lunes, en caso de que se presente una mejor solución, y/o una más sencilla de aplicar.

Pero aun así MIL GRACIAS!!!