Pular para o conteúdo
Visualizando 3 posts - 1 até 3 (de 3 do total)
  • Autor
    Posts
  • #90281
    thebranco
    Participante

      Pessoal eu gostaria de criar um menu usando uma arvore hierarquica, que seja carregada com dados de uma tabela do banco de dados…é possivel fazer isso….alguem pode me ajudar, ou me passar algum topico com um exemplo….grato

      Branco

      #90282
      Avatar photoLeonardo Litz
      Participante

        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

        #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

        Visualizando 3 posts - 1 até 3 (de 3 do total)
        • Você deve fazer login para responder a este tópico.
        plugins premium WordPress