Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Como diseñar una tabla de tipo organigrama (https://www.clubdelphi.com/foros/showthread.php?t=55003)

egostar 04-04-2008 21:52:43

Como diseñar una tabla de tipo organigrama
 
Hola

Estuve pensando donde postear esta pregunta y me parece que este es el sitio adecuado :rolleyes:

Mi problema mas bien es un problema conceptual, la situación es que necesito crear un sistema donde debo de crear una tabla donde voy ingresando niveles jerarquicos, por ejemplo

Direccion General
|
|_Direccion 1
|
|__Departamento 1
|
|___Area 1,1
|
|___Area 1,2

|_Direccion 2
|
|__Departamento 2,1
|
|___Area 2,1,1
|
|___Area 2,1,1


Lo que no tengo NPI :o es como diseñar la base de datos para asignar los ID's de cada uno de los Items de ese árbol jerarquico.

Esta información me va a ser útil a la hora de generar listados de cada uno de esos Items por ejemplo:
  1. Todos los movimientos generados por cada una de las Areas
  2. Todos los movimientos generados por cada uno de los departamentos y cada Area de ese departamento
  3. Todos los movimientos generados por cada una de las direcciones, departamentos de cada direccion y Areas de cada departamento

Pero también que se pueda agregar mas niveles jerarquicos es decir que pudieran ser 2,3,4,n

Como les comento, tengo un problema de concepto y tal vez en este primer post no sea tan claro, les agradecería me compartieran sus experiencias en este tipo de diseño.

Salud OS y gracias

maeyanes 04-04-2008 22:04:52

Hola...

Una opción puede ser:

Código SQL [-]
create table Jerarquias as
(
id integer not null,
parent_id integer,
descripcion varchar(50)
);

Y un ejemplo de los datos guardados sería:

Código:

Id Parent_Id Descripcion
1  Null      Direccion General
2  1        Direccion 1
3  2        Departamento 1
4  3        Area 1,1
5  3        Area 1,2
6  1        Direccion 2
7  6        Departamento 2,1
8  7        Area 2,1,1
9  7        Area 2,1,1

Este tipo de tablas las puedes cargar en un componente tipo TreeView para mostrarlo de forma jerárquica...

Saludos...

Caral 04-04-2008 22:05:49

Hola

Amigo Y no lo estas haciendo ya?.

Direccion General.........1.............2..............3
|
|_Direccion Sec...........1.............2..............3
|
|_Departamento...........1.............2.1...........3.1
|
|_AreaPrinc.................1,1...........2.1.1........3.1.1
|
|_AreaSecu.................1,2...........2.1.2........3.1.3

Me imagino que tanto los departamentos como las areas pueden ser muchas, la cantidad no importaria.
Saludos

egostar 04-04-2008 22:15:25

Cita:

Empezado por maeyanes (Mensaje 277679)
Hola...

Código:

Id Parent_Id Descripcion
1  Null      Direccion General
2  1        Direccion 1
3  2        Departamento 1
4  3        Area 1,1
5  3        Area 1,2
6  1        Direccion 2
7  6        Departamento 2,1
8  7        Area 2,1,1
9  7        Area 2,1,1

Este tipo de tablas las puedes cargar en un componente tipo TreeView para mostrarlo de forma jerárquica...

Saludos...

Gracias amigo maeyanes, efectivamente, lo tengo pensado hacer en un TreeView y esa forma que me comentas me parece muy buena sin embargo, a la hora de emitir un listado digamos de todos los movimientos de la Direccion 1, como se pueden ligar todas esos items....

Código:

Direccion1
      Departamento 1
            Area 1
            Total Area 1
            Area 2
            Total Area 2
      Total Departamento 1
Total Direccion 1

Realmente aquí es mi problema conceptual.....

Salud OS

BlueSteel 04-04-2008 22:34:53

Hola Egostar

(se quedo bloqueado..asi que escribo nuevamente.. aunque se me escapo un poco la idea...)

Has trabajado con algun sistema contable o al diseñado uno ???

si es así, la forma de trabajar las cuentas contables te puede servir... por ejemplo, generalmente las cuentas se pueden clasificar en 3 o 4 partes... (depende de la empresa / contador...)

ej

Tipo Cuenta / Clasificacion / Cuenta / Detalle

Activo / Circulante / Banco / Banco 1
Activo / Circulante / Banco / Banco 2

Espero te sirva..

Salu2:p:D

egostar 04-04-2008 22:42:14

Cita:

Empezado por BlueSteel (Mensaje 277696)
Hola Egostar

(se quedo bloqueado..asi que escribo nuevamente.. aunque se me escapo un poco la idea...)

Has trabajado con algun sistema contable o al diseñado uno ???

si es así, la forma de trabajar las cuentas contables te puede servir... por ejemplo, generalmente las cuentas se pueden clasificar en 3 o 4 partes... (depende de la empresa / contador...)

ej

Tipo Cuenta / Clasificacion / Cuenta / Detalle

Activo / Circulante / Banco / Banco 1
Activo / Circulante / Banco / Banco 2

Espero te sirva..

Salu2:p:D

Gracias amigo BlueSteel, pero precisamente por eso no entiendo el concepto, nunca he hecho sistemas contables, mi rama son las telecomunicaciones y esto que me piden es nuevo para mi, :(.

Salud OS

Lepe 04-04-2008 22:53:18

y la base de datos, ¿es paradox? :D

egostar 04-04-2008 22:58:00

Cita:

Empezado por Lepe (Mensaje 277703)
y la base de datos, ¿es paradox? :D

:D:D:D, no, en realidad es Firebird, pero no pensé que eso tuviera relevancia pero....... ya me pusiste a pensar :rolleyes::)

Salud OS

BlueSteel 04-04-2008 23:09:05

Mira... revisando un sistema contable (Softland)... esta posee una tabla donde se almacenan todas las cuentas con sus respectivos atributos

la estructura es la sgte

Tabla : cwpctas

PCCODI -> TIENE UN FORMATO 00-00-00-00 (Según el que se le dio en mi Empresa

PCNivel -> mi indica de que nivel es ( 0 - 1 - 2 - 3 ... etc)

PCCODI varchar 18
PCNIVEL int 4 1
PCLNIVEL int 4 1
PCDESC varchar 60 1
PCTIPO varchar 1 0
PCCCOS varchar 1 0
PCAUXI varchar 1 0
PCCDOC varchar 1 0

y así sucesivamente.. en donde con el campo PCNIVEL le indicas a que nivel del Organigrama puede corresponder...


Salu2:p:D

egostar 04-04-2008 23:22:01

Cita:

Empezado por BlueSteel (Mensaje 277711)
Mira... revisando un sistema contable (Softland)... esta posee una tabla donde se almacenan todas las cuentas con sus respectivos atributos

la estructura es la sgte

Tabla : cwpctas

PCCODI -> TIENE UN FORMATO 00-00-00-00 (Según el que se le dio en mi Empresa

PCNivel -> mi indica de que nivel es ( 0 - 1 - 2 - 3 ... etc)

PCCODI varchar 18
PCNIVEL int 4 1
PCLNIVEL int 4 1
PCDESC varchar 60 1
PCTIPO varchar 1 0
PCCCOS varchar 1 0
PCAUXI varchar 1 0
PCCDOC varchar 1 0

y así sucesivamente.. en donde con el campo PCNIVEL le indicas a que nivel del Organigrama puede corresponder...


Salu2:p:D

Gracias amigo BlueSteel, voy a ver esa estructura para tratar de replicarla y ver como funciona, :)

Esto sí se puede hacer en firebird verdad :D:D:D, nada, es broma..... no me vayan a mandar a leer la guia de estilo del club :)

Salud OS

BlueSteel 04-04-2008 23:39:09

Cita:

Empezado por egostar (Mensaje 277715)
Gracias amigo BlueSteel, voy a ver esa estructura para tratar de replicarla y ver como funciona, :)

Esto sí se puede hacer en firebird verdad :D:D:D, nada, es broma..... no me vayan a mandar a leer la guia de estilo del club :)

Salud OS

Bueno...

demás esta recomendar que en tu sistema valides que no se puede crear una subcuenta (departamento) si no esta creado el tipo..

ej... si quiero agregar el area 03-01-01-01

primero debo hacer esto

crear area 03-00-00-00
crear area 03-01-00-00
crear area 03-01-01-00
y por último
crear area 03-01-01-01

salu2:p:D

egostar 04-04-2008 23:42:49

Cita:

Empezado por BlueSteel (Mensaje 277718)
Bueno...

demás esta recomendar que en tu sistema valides que no se puede crear una subcuenta (departamento) si no esta creado el tipo..

ej... si quiero agregar el area 03-01-01-01

primero debo hacer esto

crear area 03-00-00-00
crear area 03-01-00-00
crear area 03-01-01-00
y por último
crear area 03-01-01-01

salu2:p:D

Entendido y anotado amigo BlueSteel, gracias...:)

Salud OS

Lepe 05-04-2008 05:19:40

Entonces no te preocupes por la impresión. Siempre puedes tirar de SP de selección, y claro, ahí puedes hacer virguerías de sumas, grupos, sumas de grupo y grupo de sumas todo junto, revuelto y en su salsa.

Saludos


La franja horaria es GMT +2. Ahora son las 01:58:22.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi