Ola para todos,
estou de volta com um problema que resolvi a uns 3 anos, porem perdi o fonte, mas vamos la...
Tenho uma tabela auto-relacionada, fiz um query utilizando o "start with" com "connect by prior", funciona perfeitamente no SQL+. Até ai tudo bem, porém criei um forms novo com um bloco "non base table" e, neste bloco, criei um "hierarchical tree"; na propriedade "Data query" coloquei a QUERY que criei, compilei o forms e não me aparece nada na "hierarchical tree", experimentei criar um "record group", com a mesma query e o resultado foi o mesmo. Existe um exemplo para popular o "hierarchical tree", porém na empresa onde trabalho, não consigo fazer o download dele. Necessito de ajuda para saber onde estou "pecando", sendo que, não vou conseguir fazer download de nada.
Agradeço a todos os que me ajudarem.
Obrigado !
Hierarchical tree
- dr_gori
- Moderador
- Mensagens: 5013
- Registrado em: Seg, 03 Mai 2004 3:08 pm
- Localização: Portland, OR USA
- Contato:
Thomas F. G
Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered
Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered
Neste link tem um exemplo:
http://www.glufke.net/oracle/download/Forms_Tree.zip
Já que você não pode fazer download, tem algum email aí que eu posso te mandar esse arquivo ?

http://www.glufke.net/oracle/download/Forms_Tree.zip
Já que você não pode fazer download, tem algum email aí que eu posso te mandar esse arquivo ?

- dr_gori
- Moderador
- Mensagens: 5013
- Registrado em: Seg, 03 Mai 2004 3:08 pm
- Localização: Portland, OR USA
- Contato:
Thomas F. G
Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered
Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered
Ok, enviado...
Editei seu email e coloquei *** para seu email não ficar visível para os spammers !!!
Editei seu email e coloquei *** para seu email não ficar visível para os spammers !!!

-
- Rank: Programador Sênior
- Mensagens: 62
- Registrado em: Seg, 11 Jul 2005 2:03 pm
- Localização: são Paulo
NiNo
Developer
Developer
cara, recebi seu eMail, olhei o exemplo, achei perfeito. Exemplifica bem como popular a arvore nó a nó, sem falar em outros controles.
Mas o que estou necessitando agora é apenas para um protótipo, então eu quero utilizar o componente em sua forma mais simples, ou seja, criar o objeto em um canvas e popular ele através de record_group ou query, utilizando o "connect by prior" na query. Pelo que eu me lembro, existe uma forma simples de se fazer isto, é esta forma que estou tendo alguma dificuldade.
valeu
Mas o que estou necessitando agora é apenas para um protótipo, então eu quero utilizar o componente em sua forma mais simples, ou seja, criar o objeto em um canvas e popular ele através de record_group ou query, utilizando o "connect by prior" na query. Pelo que eu me lembro, existe uma forma simples de se fazer isto, é esta forma que estou tendo alguma dificuldade.
valeu
-
- Rank: Programador Júnior
- Mensagens: 17
- Registrado em: Seg, 10 Abr 2006 5:00 pm
- Localização: Guarujá - SP
Bom dia
Eu tentei rodar este arquivo teste, mas deu o seguinte erro abaixo:
Tem como me ajudarem por favor !!!!
Obrigado
Eu tentei rodar este arquivo teste, mas deu o seguinte erro abaixo:
FRM-30162: Inconsistent relationship between window NAVIGATOR and its vertical toolbar .
Window NAVIGATOR
Obrigado
-
- Rank: Programador Júnior
- Mensagens: 17
- Registrado em: Seg, 10 Abr 2006 5:00 pm
- Localização: Guarujá - SP
Oi gente, funcionou sim, agora eu to tentando alerar o código para existir mais um nó... mas não estou conseguindo, se alguém puder me ajudar eu agradeceria muito !!!
Até mais... fico no aguardo,
Tom
Até mais... fico no aguardo,
Tom
-
- Rank: Estagiário Júnior
- Mensagens: 1
- Registrado em: Qui, 01 Jun 2006 8:22 pm
- Localização: são paulo
Criar essa package no forms (espeficação)
Crie um canvas com um bloco(menu) e um item hierarchical tree com o nome DS_MENU
No form instance, coloque a chamada para START_TREE.
Espero ter ajudado.
PACKAGE PKG_TREE IS
RG_AREA RECORDGROUP; -- NOME DO RECORD GROUP QUE SERÁ CRIADO
RG_NAME VARCHAR2(30) := 'TREE_RG';
V_STATE GROUPCOLUMN;
V_LEVEL GROUPCOLUMN;
V_LABEL GROUPCOLUMN;
V_ICON GROUPCOLUMN;
V_VALUE GROUPCOLUMN;
TREE_ID ITEM := FIND_ITEM('MENU.DS_MENU');
------------------------------------
--- Rotina que Inicia o Processo ---
------------------------------------
PROCEDURE START_TREE;
-----------------------------------------------------------
--- Rotina que Lê os dados para serem adicionados no RG ---
-----------------------------------------------------------
FUNCTION LOAD_TREE RETURN BOOLEAN;
-----------------------------------------
--- Rotina que Define o RG (estrutura) --
-----------------------------------------
PROCEDURE DEFINE_RG;
-------------------------------------------------
--- Rotina que Adiciona dados no Record Group ---
-------------------------------------------------
PROCEDURE ADD_NODE (NODENUM IN NUMBER, -- NUMERO DA LINHA
NODESTATE IN NUMBER,
NODELEVEL IN NUMBER,
NODELABEL IN VARCHAR2,
NODEICON IN VARCHAR2,
NODEVALUE IN VARCHAR2);
END;
Criar o corpo da package :
PACKAGE BODY PKG_TREE IS
------------------------------------
--- Rotina que Inicia o Processo ---
------------------------------------
PROCEDURE START_TREE IS
BEGIN
-- SE O RECORD GROUP FOI CARREGADO, ATRIBUI O RG AO ITEM DS_MENU
IF (PKG_TREE.LOAD_TREE) THEN
FTREE.SET_TREE_PROPERTY(TREE_ID,FTREE.RECORD_GROUP,RG_AREA);
END IF;
END;
-----------------------------------------
--- Rotina que Define o RG (estrutura) --
-----------------------------------------
PROCEDURE DEFINE_RG IS
BEGIN
RG_AREA := FIND_GROUP(RG_NAME);
-- CRIA O GROUP --
RG_AREA := CREATE_GROUP (RG_NAME);
-- MONTA A ESTRUTURA DO RECORD GROUP --
V_STATE := ADD_GROUP_COLUMN(RG_AREA,'INIT_STATE',NUMBER_COLUMN) ;
V_LEVEL := ADD_GROUP_COLUMN(RG_AREA,'V_LEVEL' ,NUMBER_COLUMN) ;
V_LABEL := ADD_GROUP_COLUMN(RG_AREA,'LABEL' ,CHAR_COLUMN,90) ;
V_ICON := ADD_GROUP_COLUMN(RG_AREA,'ICON' ,CHAR_COLUMN,50) ;
V_VALUE := ADD_GROUP_COLUMN(RG_AREA,'VALUE' ,CHAR_COLUMN,15) ;
END;
-------------------------------------------------
--- Rotina que Adiciona dados no Record Group ---
-------------------------------------------------
PROCEDURE ADD_NODE (NODENUM IN NUMBER, -- NUMERO DA LINHA
NODESTATE IN NUMBER,
NODELEVEL IN NUMBER,
NODELABEL IN VARCHAR2,
NODEICON IN VARCHAR2,
NODEVALUE IN VARCHAR2)
IS
BEGIN
ADD_GROUP_ROW (PKG_TREE.RG_AREA,NODENUM);
SET_GROUP_NUMBER_CELL(V_STATE ,NODENUM,NODESTATE); -- (1 MENU EXPANDIDO) (-1 MENU NÃO EXPANDIDO)
SET_GROUP_NUMBER_CELL(V_LEVEL ,NODENUM,NODELEVEL);
SET_GROUP_CHAR_CELL (V_LABEL ,NODENUM,NODELABEL);
SET_GROUP_CHAR_CELL (V_ICON ,NODENUM,NODEICON );
SET_GROUP_CHAR_CELL (V_VALUE ,NODENUM,NODEVALUE);
END;
-----------------------------------------------------------
--- Rotina que Lê os dados para serem adicionados no RG ---
-----------------------------------------------------------
FUNCTION LOAD_TREE RETURN BOOLEAN IS
-- SELECT QUE DEFINE A HIERARQUIA A SER CONSTRUIDA --
CURSOR C_MENU IS
SELECT LEVEL,
CD_MENU,
initcap(DS_MENU)DS_MENU
FROM MENUS
CONNECT BY PRIOR CD_MENU = ITEM_CD_MENU
START WITH ITEM_CD_MENU IS NULL;
V_LINHA INTEGER;
V_CONTA_REG INTEGER;
BEGIN
-- MONTA A ESTRUTURA DO RECORD GROUP --
PKG_TREE.DEFINE_RG;
V_LINHA := 1;
V_CONTA_REG := 0;
FOR C_REG IN C_MENU LOOP
-- ADICIONA UMA LINHA NO RECORD GROUP --
PKG_TREE.ADD_NODE(V_LINHA,-1,C_REG.LEVEL,C_REG.DS_MENU,NULL,NULL);
-- SOMA 1 LINHA
V_LINHA := V_LINHA + 1;
V_CONTA_REG := 1;
END LOOP;
-- RETORNA 'True' SE O CURSOR RETORNOU REGISTROS E CARREGOU O RECORD GROUP --
IF (V_CONTA_REG = 1) THEN
RETURN(TRUE);
ELSE
RETURN(FALSE);
END IF;
END ;
END pkg_tree;
No form instance, coloque a chamada para START_TREE.
Espero ter ajudado.
- TBou
- Rank: Analista Sênior
- Mensagens: 136
- Registrado em: Qui, 05 Ago 2004 9:33 am
- Localização: Campo Grande - MS
Eu Acredito que o que você quer é isso:
Eu tenho um Plano de contas Contabeis que uso esta forma de montagem para a arvore. veja o exemplo:
vejan algumas linhas do record Group
Eu tenho um Plano de contas Contabeis que uso esta forma de montagem para a arvore. veja o exemplo:
RG_EMPS := Create_Group_From_Query('rg_emps',
' SELECT -1, LEVEL, CD_CONTACONTABIL||'' - ''||NM_CONTACONTABIL, ''PROXIMO'', CD_CONTACONTABIL
FROM PLANOCONTABIL
CONNECT BY PRIOR CD_CONTACONTABIL = CD_CTACTBMAE
START WITH CD_CTACTBMAE IS NULL
ORDER BY CD_CLASSIFCONTABIL');
v_ignore := Populate_Group(rg_emps);
Ftree.Set_Tree_Property('CONSULTAPLANO.ARVORE', Ftree.RECORD_GROUP, rg_emps);
-1 LEVEL CD_CONTACONTABIL||'-'||NM_CONTACONTABIL 'PROXIM CD_CONTACO
---------- ---------- -------------------------------------------------------------------------------- ------- ----------
-1 1 100009 - ATIVO PROXIMO 100009
-1 2 110000 - CIRCULANTE PROXIMO 110000
-1 3 110015 - DISPONIBILIDADES PROXIMO 110015
-1 4 110020 - DISPONIBILIDADES PROXIMO 110020
-1 5 110034 - CAIXA GERAL PROXIMO 110034
-1 6 110049 - CAIXA PROXIMO 110049
-1 6 111164 - CAIXA-SEMEADOR PROXIMO 111164
-1 6 110825 - TRANSACOES FINANCEIRAS - MATRIZ/FILIAIS PROXIMO 110825
-1 6 110051 - TESOURARIA PROXIMO 110051
-1 5 110053 - BANCOS C/ MOVIMENTO PROXIMO 110053
-1 6 110119 - BANCO BOA VISTA S/A PROXIMO 110119
-1 6 110072 - BANCO BRADESCO S/A PROXIMO 110072
- TBou
- Rank: Analista Sênior
- Mensagens: 136
- Registrado em: Qui, 05 Ago 2004 9:33 am
- Localização: Campo Grande - MS
Ixxx....deixa eu tirar os espeços um pouco
-1 LEVEL CD_CONTACONTABIL||'-'||NM_CONTACONTABIL 'PROXIM CD_CONTACO
---------- ---------- ---------------------------------------- ------- ----------
-1 1 100009 - ATIVO PROXIMO 100009
-1 2 110000 - CIRCULANTE PROXIMO 110000
-1 3 110015 - DISPONIBILIDADES PROXIMO 110015
-1 4 110020 - DISPONIBILIDADES PROXIMO 110020
-1 5 110034 - CAIXA GERAL PROXIMO 110034
-1 6 110049 - CAIXA PROXIMO 110049
-1 6 111164 - CAIXA-SEMEADOR PROXIMO 111164
-1 6 110825 - TRANSACOES FINANCEIRAS - MATRIZ PROXIMO 110825
-1 6 110051 - TESOURARIA PROXIMO 110051
-1 5 110053 - BANCOS C/ MOVIMENTO PROXIMO 110053
-1 6 110119 - BANCO BOA VISTA S/A PROXIMO 110119
-1 6 110072 - BANCO BRADESCO S/A PROXIMO 110072
- Toad
- Rank: DBA Pleno
- Mensagens: 253
- Registrado em: Sex, 18 Nov 2005 2:14 pm
- Localização: Seattle, WA
- Contato:
Matheus Gonçalves
matheus.dev
twitter.com/developer__c
matheus.dev
twitter.com/developer__c
Estou com seguinte problema:
Preciso pegar o valor de uma das linhas das árvores, assim que ele for selecionado para poder pegar o valor e usar como condição WHERE de um outro bloco.
Estou usando o seguinte código, na trigger WHEN-TREE-NODE-SELECTED:
Só que ele me traz sempre o valor da primeira e principal linha.
Assim:
E independente de qual linha eu clico, ele seleciona sempre 135.
O que estou fazendo de errado??
Obrigado!
Preciso pegar o valor de uma das linhas das árvores, assim que ele for selecionado para poder pegar o valor e usar como condição WHERE de um outro bloco.
Estou usando o seguinte código, na trigger WHEN-TREE-NODE-SELECTED:
DECLARE
cr_n FTREE.NODE;
valor varchar2(100);
BEGIN
cr_n := Ftree.Get_Tree_Selection('NAV_DISPLAY', 1);
valor := Ftree.Get_Tree_Node_Property('NAV_DISPLAY',cr_n, Ftree.NODE_VALUE);
mostra_men('I*',VALOR);
END;
Assim:
135
...132
...133
...134
.....135
.....135
.....137
...138
O que estou fazendo de errado??
Obrigado!
- Toad
- Rank: DBA Pleno
- Mensagens: 253
- Registrado em: Sex, 18 Nov 2005 2:14 pm
- Localização: Seattle, WA
- Contato:
Matheus Gonçalves
matheus.dev
twitter.com/developer__c
matheus.dev
twitter.com/developer__c
Ah claro, o código usado para isso:
PROCEDURE refresh_trees IS
V_ID_MASTER number := :GLOBAL.V_CLI;
v_query varchar2(4000);
begin
SET_APPLICATION_PROPERTY(CURSOR_STYLE,'BUSY');
message('Carregando Rede de Clientes...');
--
IF (GET_APPLICATION_PROPERTY(USER_INTERFACE) = 'WEB' ) THEN
v_query := 'select DECODE(LEVEL, 1,1,
2,1,
3,1,
-1 ) state, level lvl,
(id_cli||'' - ''||nm_cli) displ_val, null icn, id_cli val
from cliente
connect by prior id_cli = id_cli_pai
start with id_cli = '||V_ID_MASTER;
ELSE
v_query := 'select 1 state, level lvl, (id_cli||'' - ''||nm_cli) displ_val, null icn, id_cli val
from cliente
connect by prior id_cli = id_cli_pai
start with id_cli = '||V_ID_MASTER;
END IF;
ftree.set_tree_property('navigator.nav_display', ftree.QUERY_TEXT, v_query);
SET_APPLICATION_PROPERTY(CURSOR_STYLE,'DEFAULT');
end;
- Toad
- Rank: DBA Pleno
- Mensagens: 253
- Registrado em: Sex, 18 Nov 2005 2:14 pm
- Localização: Seattle, WA
- Contato:
Matheus Gonçalves
matheus.dev
twitter.com/developer__c
matheus.dev
twitter.com/developer__c
Pessoa, to tentando implementar uma progress bar que vai crescendo de acordo com o preenchimento da tree.
Existe alguma trigger que é ativada quando um nó é adicionado à árvore?
A idéia era contar o total de nós adicionados até então, e ir fazendo a barra crescer até 100% (total de nós esperado na tree, previamente calculado).
Alguém conhece alguma maneira de ir executando esse processo ao mesmo tempo que a árvore é preenchida?

Existe alguma trigger que é ativada quando um nó é adicionado à árvore?
A idéia era contar o total de nós adicionados até então, e ir fazendo a barra crescer até 100% (total de nós esperado na tree, previamente calculado).
Alguém conhece alguma maneira de ir executando esse processo ao mesmo tempo que a árvore é preenchida?

-
- Rank: Programador Sênior
- Mensagens: 47
- Registrado em: Qui, 07 Abr 2011 3:54 pm
- Localização: Jussara PR
David
Boa tarde, não consegui fazer o download do Forms_Tree, pode me enviar em meu email
http://www.glufke.net/oracle/download/Forms_Tree.zip
http://www.glufke.net/oracle/download/Forms_Tree.zip
- dr_gori
- Moderador
- Mensagens: 5013
- Registrado em: Seg, 03 Mai 2004 3:08 pm
- Localização: Portland, OR USA
- Contato:
Thomas F. G
Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered
Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered
Veja se você consegue accessar via HTTPS:
https://www.glufke.net/oracle/download/Forms_Tree.zip
Se não funcionar, tenta copiar e colar esse endereço na URL.
https://www.glufke.net/oracle/download/Forms_Tree.zip
Se não funcionar, tenta copiar e colar esse endereço na URL.
-
- Informação
-
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante