- Este tópico contém 2 respostas, 2 vozes e foi atualizado pela última vez 15 anos, 2 meses atrás por thebranco.
-
AutorPosts
-
19 de outubro de 2009 às 5:21 pm #90281thebrancoParticipante
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
19 de outubro de 2009 às 5:46 pm #90282Leonardo LitzParticipanteOlá 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.DESCRICAOfrom MENU_TESTE M
connect by prior M.ID_MENU = M.ID_MENU_PAIstart 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
19 de outubro de 2009 às 6:22 pm #90284thebrancoParticipante[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.DESCRICAOfrom MENU_TESTE M
connect by prior M.ID_MENU = M.ID_MENU_PAIstart 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
-
AutorPosts
- Você deve fazer login para responder a este tópico.