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

Para expertos.

Estas en el tema de Para expertos. en el foro de ASP Clásico en Foros del Web. A ver si podeis ayudarme: Tenemos una base de datos.Básicamente lo que interesa de la base de datos son 2 tablas, bueno, simplificando, solo 1, ...
  #1 (permalink)  
Antiguo 05/09/2002, 04:48
 
Fecha de Ingreso: septiembre-2002
Mensajes: 5
Antigüedad: 21 años, 9 meses
Puntos: 0
Para expertos.

A ver si podeis ayudarme:

Tenemos una base de datos.Básicamente lo que interesa de la base de datos son 2 tablas, bueno, simplificando, solo 1, la tabla Envios

el ella hay 3 campos Id_Documento, Id_Remite y Id_Destino.Vale?

El proyecto es algo parecido a un Outlook pero simplificado.Es en ASP.Mi problema está en hacer el historial de un mensaje a partir de una persona.Seleccionando un documento (ya tenemos el id_documento) y sabiendo la persona (Id_Remite) queremos saber desde ahí por cuantas personas ha pasado el documento reflejandolo en una especie de arbol.

Ejemplo:

documento1 le ha llegado a remite1 y ese a su vez lo manda a diferentes personas que a su vez manda a otras tantas.

Cómo hago esto?

Yo hago: Select Id_Destino from Envios where Id_Remite =(Lo recojo de la pag anterior) and Id_Documento =(Lo recojo de la pag anterior)

A partir de ahí se me complica porque si guardo los datos en un array,llamémoslo destinos() cada destino(i) es a su vez un array de todos los subdestinos y asi y no se donde puede acabar.

Me imagino que puede haber una solución mas fácil pero estoy bloqueada.

  #2 (permalink)  
Antiguo 05/09/2002, 05:24
 
Fecha de Ingreso: agosto-2001
Mensajes: 53
Antigüedad: 22 años, 9 meses
Puntos: 0
Re: Para expertos.

Numera el array. Me explico:
3 arrays, uno de destinos,otro de niveles, y uno último con el identificador del padre, asi se monta un arbol con arrays sin extructura de arbol.

Caso práctico:

A envia el doc a B,C y D

destinos(0) = B
nivel(0)=1
padre(0) = 0 '--> 0 = sin padre

destinos(1) = C
nivel(1)=1
padre(1) = 0

destinos(2) = D
nivel(2)=1
padre(2) = 0

Ahora C se lo envia a C1 y C2 , D se lo envia a D1 y D2 ...

destinos(3) = C1
nivel(3)= 2
padre(3) = 1

destinos(4) = C2
nivel(4)= 2
padre(4) = 1

destinos(5) = D1
nivel(5)=2
padre(5) = 2

destinos(6) = D2
nivel(6)= 2
padre(6) = 2

Así puedes almacenar todos los envios con solo 3 arrays, independientemente del número de niveles de envio. Y tienes todos los datos que necesitas, por ejemplo, la posición 6 del array corresponde a que el usuario D2 ha recivido el mensaje, es por la segunda persona que pasa gerarquicamente y los datos de quien se lo ha enviado est´n en la posición 2 de los arrays.

El array de niveles se puede calcular en tiempo de ejecucion, no es necesario, pero va bien tenerlo, sobre todo si realmente quieres montar un arbol.

Otro consejo es que esto no sean arrays sino una tabla temporal de la BBDD así no importa mucho cuanto crezca, no habrán problemas de memoria y podrás hacer busquedas dentro de ella, p.e.: Quiero todos los hijos de X, todos los nodos de tercer nivel,...

Espero haberte ayudado.
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 19:50.