Pular para o conteúdo

Fóruns Developer,Designer e Discoverer Arvore hierarquica ! Arvore hierarquica !

#90284
thebranco
Participante

    [quote=”Litz”:3irugyk2]Olá Branco, para isso é necessário utilizar funções recursivas. Bom segue um exemplo de um menu que fiz utilizando uma unica tabela.

    create table MENU_TESTE
    (
    ID_MENU NUMBER(8) not null,
    DESCRICAO VARCHAR2(40),
    ID_MENU_PAI NUMBER(8)
    );

    alter table MENU_TESTE
    add primary key (ID_MENU);

    alter table MENU_TESTE
    add constraint FK_TESTE_MENU foreign key (ID_MENU_PAI)
    references MENU_TESTE (ID_MENU);

    insert into MENU_TESTE (ID_MENU, DESCRICAO, ID_MENU_PAI)
    values (1, 'Pai 1', null);
    insert into MENU_TESTE (ID_MENU, DESCRICAO, ID_MENU_PAI)
    values (2, 'Filho 11', 1);
    insert into MENU_TESTE (ID_MENU, DESCRICAO, ID_MENU_PAI)
    values (3, 'Neto 111', 2);
    insert into MENU_TESTE (ID_MENU, DESCRICAO, ID_MENU_PAI)
    values (4, 'Neto 112', 2);
    insert into MENU_TESTE (ID_MENU, DESCRICAO, ID_MENU_PAI)
    values (5, 'Pai 2', null);
    insert into MENU_TESTE (ID_MENU, DESCRICAO, ID_MENU_PAI)
    values (6, 'Filho 21', 5);
    insert into MENU_TESTE (ID_MENU, DESCRICAO, ID_MENU_PAI)
    values (7, 'Filho 22', 5);

    E o select que monta o menu:
    select M.ID_MENU,
    lpad(' ', 10 * (level - 1)) || M.DESCRICAO

    from MENU_TESTE M
    connect by prior M.ID_MENU = M.ID_MENU_PAI

    start with M.ID_MENU = 1
    order siblings by M.ID_MENU

    É lógico que existem outras forma de fazer um menu, mas esta é uma delas, provavelmente a mais simples.
    Agora é com vc só adequar a tua necessidade.

    Vlw Leonardo Litz[/quote]

    ta mas como faço pra tacar isso dentro do objeto arvore no form ?

    grato

    Branco