Códigos automáticos en tablas arboladas?


([N2] gustavosandoval) #1

Hola, a ver si alguien puede ayudarme.
No se si será posible, pero lo que intento hacer es que, en una tabla arbolada, en cada registro se calcule “automáticamente” el código, según el del registro de nivel superior, como si fuera su maestro. Lo que quiero con esto es que el usuario final no tenga que buscar el código del nivel superior, memorizarlo e ingresarlo, o mejor que no se entere de lo que es un código. Simplemente que elija cual es el registro superior como si fuera un maestro y listo. En concreto, estoy trabajando con vERP y quiero modificar esto en la tabla FAMILIAS, pero tambien en todas las arboladas, como EMPRESAS de vBASE.
Lo primero que se me ha ocurrido es extender la tabla FAM@vERPMaestros_dat y cear un campo que apunte a la misma tabla. Ahora creo que deberia crear un proceso que lea el código de la tabla superior o maestra y con éste componer el código del registro nuevo. Pero, como hago para que el nuevo registro sepa el lugar correlativo del anterior en su nivel? To be or not to be?
gracias
Gustavo


([N1] wikan) #2

Buenas, @gustavosandoval
Tendrías que obtener el registro seleccionado en el arból, indicando que ese sera la rama superior.
Al crear el registro nuevo, asignas ese registro como maestro y ya apuntas al “padre”. Ahora solo te queda componer el código.


([N2] gustavosandoval) #3

Si, eso está claro pero, la duda está precisamente en como componer ese código. Por ejemplo, si esta es la rama:
1
11
12
121
122
13
2
21
22

3
31

El proceso seria, como tu bien dices: si no indico cual es el maestro del registro, será de la rama superior y si lo indico será el siguiente en su rama. Pero como se entera que por ejemplo el anterior es 22 y el siguiente seria 223? Si la tabla fuera de clave numérica, bastaria con buscar el último valor del nivel y sumarle uno. Por eso estoy pensando en agregarle dos campos numericos RAMA y NIVEL y otro apuntando al hermano contiguo anterior. Me pongo a trabajar y te digo como va.
Gracias Manuel
Saludos


([N1] Juan) #4

Yo lo hice con una sola tabla normal y un campo que apunte al padre, de tal manera que si cambiaba de padre automaticamente todos los hijos de este ya eran subhijos de su nuevo padre sin hacer nada, pero claro la visualizacion no la hice con tabla arbolada por que lo ordena alfabeticamente y numericamente, busque un js de crear arboladas, y para visualizar lo hago en un browser y para interactuar uso los eventos linkclciked. te adjunto el ejmplo para que lo revises.
La libreria js la saque de aki: http://www.thecssninja.com/css/css-tree-menu
slds

arbolada.zip (9.01 KB)


([N2] gustavosandoval) #5

Juan, no puedo hacer la tabla normal porque estoy trabajando con la plantilla vERP y no quiero modificarla, por eso solamente extiendo la tabla FAM y es arbolada. No habia pensado en buscar una alternativa externa para mostrar una tabla en arbol, es interesante. De todos modos mi problema no es como mostrarla si no como automatizar el ingreso de los codigos. Si no te he entendido bien, dimelo, gracias.
saludo


([N1] Juan) #6

Tendrias que crear un funcion que te calcule el ultimo + 1 y hacer mas validaciones, por eso de plano yo descarte la tabla arbolada, lo visual es mas efectivo.


([N2] gustavosandoval) #7

Si, tienes toda la razon Juan, yo no le encuentro el sentido de usar las tablas arboladas. Cuando trabajé con la plantilla vGestion de V6 modifiqué la tabla FAM y la hice maestra normal porque no me importaban las actualizaciones de la plantilla, pero ahora si me interesan, por eso es que tengo el problema.
Si, haré, como que tu dices, un proceso en donde busque el último en la rama a que pertenece y le sume uno a un campo NIVEL, guardaré el codigo y lo compondré en el campo ID (alfa). No he tenido tiempo de hacerlo, pero si me funciona lo explicaré aqui porque seguro que ha alguien mas le interesará.
Gracias y saludos