Saludos amigos foristas, les pido ayuda para ver como enfrentar este procedimiento, tengo un archivo con una estructura jerarquica donde tengo identificado en orden consecutivo la estructura y su profundidad (depth).
teniendo estos datos ya organizados, elabor茅 una funci贸n que construye el tree, sin embargo la l贸gica que utilice no es la m谩s idonea.
Esta es la funci贸n.
Quien puede ayudar con una funci贸n que considere por lo menos diez subniveles en la estructura.
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 NAME 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 DEPTH
======================================================================================== 聽=====
VISUALIZAR 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽0
聽 聽ESTABLECER LOS OBJETIVOS Y PROP脫SITOS DEL PROYECTO 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 1
聽 聽 聽 1. Establecer los objetivos y prop贸sitos del proyecto 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 2
聽 聽 聽 聽 聽 A. Conformar el equipo de trabajo de la fase visualizar 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 3
聽 聽 聽 聽 聽 B. Planificar fase visualizar 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 3
聽 聽 聽 聽 聽 C. Preparar y convocar reuni贸n mesa de trabajo No.1 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 3
聽 聽 聽 聽 聽 D. Establecer productos y vol煤menes de producci贸n 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 3
聽 聽 聽 聽 聽 E. Establecer calidad de los productos 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽3
聽 聽 聽 聽 聽 F. Establecer alimentaci贸n requerida (volumen y calidad) 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽3
聽 聽 聽 聽 聽 G. Premisas consideradas para establecer objetivos y Prop贸sitos del proyecto 聽 聽 聽3
聽 聽 聽 聽 聽 H. Establecer requerimientos de prueba/ investigaci贸n adicional para verificar 聽 聽3
聽 聽 聽 聽 聽 I. Establecer dependencias y relaci贸n con otros proyectos del plan 聽 聽 聽 聽 聽 聽 聽 聽3
聽 聽VERIFICAR ALINEACI脫N DEL PROYECTO CON ESTRATEGIA CORPORATIVA 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 1
聽 聽 聽 1. Verificar alineaci贸n del proyecto con estrategia corporativa 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 2
聽 聽 聽 聽 聽 A. Conocer lineamientos y requerimientos del portafolio de oportunidades y/o 聽 聽 聽3
聽 聽 聽 聽 聽 B. Identificar oportunidades de optimizaci贸n de infraestructuras 聽 聽 聽 聽 聽 聽 聽 聽 聽3
聽 聽 聽 聽 聽 C. Documentar la identificaci贸n de alineaci贸n del proyecto con los objetivos 聽 聽 聽3
聽 聽DESARROLLO PRELIMINAR DEL PROYECTO 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 1
聽 聽 聽 1. Elaborar alcance preliminar del proyecto: 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽2
聽 聽 聽 聽 聽 A. Recopilar 聽informaciOn requerida 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 3
聽 聽 聽 聽 聽 B. Identificar requerimientos de infraestructura y servicios 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽3
聽 聽 聽 聽 聽 C. Establecer factibilidad t脙漏cnica del proyecto 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽3
聽 聽 聽 聽 聽 D. Documentar alcance preliminar del proyecto 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 3
聽 聽 聽 2. Elaborar de costo Clase V 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽2
聽 聽 聽 聽 聽 A. Recopilar informaci贸n requerida 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽3
聽 聽 聽 聽 聽 B. Seleccionar metodolog脙卢a de estimaci贸n 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 3
聽 聽 聽 聽 聽 C. Elaboraci贸n de estimado de Clase V del proyecto, que incluya estimado Clase 聽 聽3
聽 聽 聽 3. Elaborar PEP Clase 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 2
聽 聽 聽 聽 聽 A. Describir premisas a c0nsiderar para la programaci贸n del proyecto 聽 聽 聽 聽 聽 聽 聽3
聽 聽 聽 聽 聽 B. Identificar potenciales riesgos de incumplimiento 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽3
聽 聽 聽 聽 聽 C. Establecer estrategias de ejecuci贸n 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽3
聽 聽 聽 聽 聽 D. Establecer cronograma para el desarrollo de los hitos principales de ejecuc 聽 聽3
聽 聽 聽 聽 聽 E. Elaborar PEP Clase V del proyecto 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽3
聽 聽 聽 聽 聽 F. 聽Recursos requeridos para ejecutar la fase conceptualizar 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽3
聽 聽 聽 聽 聽 G. Elaborar Plan de ejecuci贸n Clase II de la fase conceptualizar 聽 聽 聽 聽 聽 聽 聽 聽 聽3
聽 聽 聽 4. Describir factibilidad del proyecto (t茅cnica y econ贸mica) 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽2
聽 聽 聽 聽 聽 A. Describir par脙隆metros de prefactibilidad econ贸mica del Paquete que contiene 聽 聽3
聽 聽 聽 聽 聽 B. Lista de riesgos mayores/ identificaci贸n preliminar de peligros SHA 聽 聽 聽 聽 聽 聽3
聽 聽 聽 聽 聽 C. Preparar y convocar reuni贸n mesa de trabajo No.2 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 3
聽 聽 聽 聽 聽 D. Someter DSD1 y solicitar fondos para la fase conceptualizar 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽3teniendo estos datos ya organizados, elabor茅 una funci贸n que construye el tree, sin embargo la l贸gica que utilice no es la m谩s idonea.
Esta es la funci贸n.
Function BuildTree( oTree, aItems, cTreeName )
聽 聽 聽 聽 聽LOCAL oItem0, oItem1, oItem2, oItem3, oItem4, oItem5, oItem6, oItem7, oItem8, oItem9
聽 聽 聽 聽 聽LOCAL n
聽 聽 聽 聽 聽LOCAL nPrevLevel := aItems[1][2]
聽 聽 聽 聽 聽Local nImg := 0
聽 聽 聽 聽 聽LOCAL nItems := LEN( aItems )
聽 聽 聽 聽 聽FOR n := 1 TO nItems
聽 聽 聽 聽 聽 聽 聽DO CASE
聽 聽 聽 聽 聽 聽 聽 聽 CASE aItems[n][2] == 0
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽IF aItems[n][2] < nPrevLevel
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 oItem0 := NIL
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽ENDIF
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽IF oItem0 == NIL
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 oItem0 := oTree:Add( aItems[n][1] )
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽ELSE
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 oItem0:Add( aItems[n][1] )
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽ENDIF
聽 聽 聽 聽 聽 聽 聽 聽 CASE aItems[n][2] == 1
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽IF aItems[n][2] < nPrevLevel
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 oItem1 := NIL
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽ENDIF
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽IF oItem1 == NIL
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 oItem1 := oItem0:Add( aItems[n][1] )
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽ELSE
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 oItem1:Add( aItems[n][1] )
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽ENDIF
聽 聽 聽 聽 聽 聽 聽 聽 CASE aItems[n][2] == 2
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽IF aItems[n][2] < nPrevLevel
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 oItem2 := NIL
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽ENDIF
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽IF oItem2 == NIL
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 oItem2 := oItem1:Add( aItems[n][1] )
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽ELSE
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 oItem2:Add( aItems[n][1] )
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽ENDIF
聽 聽 聽 聽 聽 聽 聽 聽 CASE aItems[n][2] == 3
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽IF aItems[n][2] < nPrevLevel
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 oItem3 := NIL
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽ENDIF
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽IF oItem3 == NIL
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 oItem3 := oItem2:Add( aItems[n][1] )
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽ELSE
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 oItem3:Add( aItems[n][1] )
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽ENDIF
聽 聽 聽 聽 聽 聽 聽 聽 CASE aItems[n][2] == 4
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽IF aItems[n][2] < nPrevLevel
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 oItem4 := NIL
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽ENDIF
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽IF oItem4 == NIL
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 oItem4 := oItem3:Add( aItems[n][1] )
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽ELSE
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 oItem4:Add( aItems[n][1] )
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽ENDIF
聽 聽 聽 聽 聽 聽 聽 聽 CASE aItems[n][2] == 5
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽IF aItems[n][2] < nPrevLevel
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 oItem5 := NIL
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽ENDIF
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽IF oItem5 == NIL
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 oItem5 := oItem4:Add( aItems[n][1] )
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽ELSE
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 oItem5:Add( aItems[n][1] )
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽ENDIF
聽 聽 聽 聽 聽 聽 聽 聽 CASE aItems[n][2] == 6
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽IF aItems[n][2] < nPrevLevel
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 oItem6 := NIL
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽ENDIF
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽IF oItem6 == NIL
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 oItem6 := oItem5:Add( aItems[n][1] )
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽ELSE
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 oItem6:Add( aItems[n][1] )
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽ENDIF
聽 聽 聽 聽 聽 聽 聽 聽 CASE aItems[n][2] == 7
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽MsgInfo( STR(n)+CRLF+aItems[n][1] )
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽IF aItems[n][2] < nPrevLevel
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 oItem7 := NIL
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽ENDIF
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽IF oItem7 == NIL
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 oItem7 := oItem6:Add( aItems[n][1] )
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽ELSE
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 oItem7:Add( aItems[n][1] )
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽ENDIF
聽 聽 聽 聽 聽 聽 聽 聽 CASE aItems[n][2] == 8
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽IF aItems[n][2] < nPrevLevel
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 oItem8 := NIL
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽ENDIF
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽IF oItem8 == NIL
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 oItem8 := oItem7:Add( aItems[n][1] )
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽ELSE
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 oItem7:Add( aItems[n][1] )
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽ENDIF
聽 聽 聽 聽 聽 聽 聽 聽 CASE aItems[n][2] == 9
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽IF aItems[n][2] < nPrevLevel
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 oItem9 := NIL
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽ENDIF
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽IF oItem9 == NIL
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 oItem9 := oItem8:Add( aItems[n][1] )
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽ELSE
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 oItem9:Add( aItems[n][1] )
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽ENDIF
聽 聽 聽 聽 聽 聽 聽ENDCASE
聽 聽 聽 聽 聽 聽 聽nPrevLevel := aItems[n][2]
聽 聽 聽 聽 NEXT nQuien puede ayudar con una funci贸n que considere por lo menos diez subniveles en la estructura.
Compiler version: xHarbour 1.2.3 Intl. (SimpLex) (Build 20141106)
FiveWin Version: FWHX 15.01
BCC 5.8.2
FiveWin Version: FWHX 15.01
BCC 5.8.2