Recursion

17/12/2004 - 16:34 por Alberto Rodriguez | Informe spam
Alguien tiene el seudocodigo para construir un arbol de un plan de cuentas
contables por recursión?

codigo Desc.
100000 activo
110000 activo disponiblidades
110001 activo disponiblidades caja...
110002 ...

200000 Pasivo (ahi viene el problema...)
200001 Cuentas a pagar
220000 Pasivo No corriente (no esta definido 210000!!)
220001


O al menos alguna teoria, porque no me sale. Debo construir un arbol en un
treeview.

Muchas gracias desde ya.


VFP7 sp1
W2K sp4
 

Leer las respuestas

#1 Roka
22/12/2004 - 22:49 | Informe spam
Yo lo tengo construido en un treeview, y ahi te va el código listo para
subirlo a portal fox,
pero no utilicé recursividad porque no lo vi tan necesario, de hecho para
eso es el treeview
este ejemplo funciona para un cuadro de cuentas con las siguientes
categorias:

- 5 niveles
- niveles de 3 dígitos
- los nombres de los campos de tu archivo son nivel1,
nivel2,nivel3,nivel4,nivel5
- y un campo mas que se llame nombre
o sea que una linea de ese archivo sería

100 200 300 010 050

- se debe incorporar un procedimiento a la forma que se llame ceros el cual
tiene el siguiente codigo

Parameter valor,largo
Private valor,largo
valor = alltrim(valor)
Return (valor + Replicate("0",(largo - Len(valor))))

El programa puede ser utilizado o modificado al gusto del cliente siempre y
cuando mantenga los
derechos de autor


en el evento init del arbol pones lo siguiente

use cat
count all for !deleted() to xcount
set order to tag cuenta
go top
o = thisform.oletree.nodes
o.clear
if xcount > 0
wait window nowait "Cargando el Catálogo, por favor espere..."
scan
okey = cat.nivel1+cat.nivel2+cat.nivel3+cat.nivel4+cat.nivel5
otext cat.nivel1+"-"+cat.nivel2+"-"+cat.nivel3+"-"+cat.nivel4+"-"+cat.nivel5+"
"+cat.nombre
oparent="000000000000000"
for x = 1 to 5
nivel="nivel"+str(x,1)
if &nivel = "000"
oparent = thisform.ceros(substr(okey,1,(((x-1)*3)-3)),15)
exit
endif
if x = 5
oparent = thisform.ceros(substr(okey,1,((x*3)-3)),15)
endif
endfor

IF ALLTRIM(oparent) = '000000000000000'
o.add(,1,ALLTRIM(okey),ALLTRIM(otext),0)
ELSE
o.add(ALLTRIM(oparent),4,ALLTRIM(okey), ALLTRIM(otext),0)
ENDIF
endscan
o.item(1).selected = .t.
else
=messagebox("El catalogo de Cuentas de este mes está vacio"+chr(13)+;
"Este Módulo no puede continuar",16,"Error de Datos...")
thisform.release
return .f.
endif
wait window nowait "Proceso concluido..."
** By RoKa
visita www.izkafe.com el mejor cyber de Costa Rica



"Alberto Rodriguez" escribió en el mensaje
news:%
Alguien tiene el seudocodigo para construir un arbol de un plan de cuentas
contables por recursión?

codigo Desc.
100000 activo
110000 activo disponiblidades
110001 activo disponiblidades caja...
110002 ...

200000 Pasivo (ahi viene el problema...)
200001 Cuentas a pagar
220000 Pasivo No corriente (no esta definido 210000!!)
220001


O al menos alguna teoria, porque no me sale. Debo construir un arbol en un
treeview.

Muchas gracias desde ya.


VFP7 sp1
W2K sp4



Preguntas similares