Popular Record Group ...

Dicas do Oracle Forms Builder - Blocos, Itens, LOV, Canvas, Triggers, comandos, PLL, d2kwutil, FMB, Alert, menus, etc
Responder
Deathão
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 57
Registrado em: Qui, 16 Jun 2005 11:31 am
Localização: Assis
Contato:
--
Júnior

... e Jogar em uma LOV ...

fala galera!!!!!!

então seguinte duvida, eu tenho uma tela onde o cara informa a SELECT que ele deseja aí esse SELECT terá que ser jogada dentro de um record group e esse mesmo será adicionado a uma LOV ..
rg_id := Create_Group_From_Query('LOV_padrão',v_query,FORM_SCOPE,15);
eu faço esse lance aí, mas ele dá uma mensagem de que o "Record Group Does Not Exist"

vocês sabem o que eu tenho que fazer para que minha LOV busque a SELECT que o usuário informou??

se alguém puder me ajudar eu agradeço..
obrigado pela força..
:-o
Deathão
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 57
Registrado em: Qui, 16 Jun 2005 11:31 am
Localização: Assis
Contato:
--
Júnior

Ninguém????? :(
Deathão
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 57
Registrado em: Qui, 16 Jun 2005 11:31 am
Localização: Assis
Contato:
--
Júnior

explicando melhor minha procedure:

Selecionar tudo

PROCEDURE populate_query IS
	rg_id    RecordGroup; 
	popula_rg  NUMBER; 
	v_label VARCHAR2(100);
	v_query VARCHAR2(4000) := NULL;
	v_item ITEM;
	rg_name  VARCHAR2(50) := 'LOV_padrão'; 
	errcode  NUMBER; 
BEGIN 
	 break;
	 v_item := find_item(:SYSTEM.CURSOR_ITEM);
	 rg_id := Find_Group(rg_name); 
	 v_label := get_item_property(v_item,prompt_text);
	 SELECT qry_lov        
	 INTO  v_query
	 FROM  parametro_relatorio
	 WHERE  label_item = v_label
	 AND   relatorio = :GERA_RELATORIO.TXT_COD_RELATORIO;
	 
	 IF v_query IS NOT NULL THEN
			rg_id := Create_Group_From_Query(rg_name,v_query,FORM_SCOPE,15);
			errcode := Populate_Group(rg_id);
			Set_Lov_Property('LOV_padrão',GROUP_NAME,rg_id);
			Set_Lov_Property('LOV_padrão',title,'Busca por '||v_label);	
			Set_Item_property(v_item,lov_name,'LOV_padrão');
			
	 ELSE
	 		message('Query não Informada para este Relatório');
	 		message('Query não Informada para este Relatório');
	 		raise form_trigger_failure; 		
	 END IF; 
END;
fo*a que nem nos Helps do Forms consegui achar algo concreto.... não entendi direito como faz...
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
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

Acho que o seu v_query está vazio.
Deathão
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 57
Registrado em: Qui, 16 Jun 2005 11:31 am
Localização: Assis
Contato:
--
Júnior

não está não, já fiz um debug e ele está retornando..

quando tento entrar no campo pela trigger WHEN-NEW-ITEM-INSTANCE ele faz tudo certinho mas na barra de tarefas fica uma mensagem escrita

Selecionar tudo

FRM-41072: Cannot Create Group LOV_padrão
Avatar do usuário
anderson
Rank: Analista Júnior
Rank: Analista Júnior
Mensagens: 75
Registrado em: Seg, 06 Jun 2005 1:08 pm
Localização: Toledo - PR
Contato:
Anderson Nuernberg
---

Junior, seu comando de create_group tem 4 parâmetros, eu normalmente uso somente com dois... tente fazer assim pra ver se funciona....

Selecionar tudo

DECLARE 
  rg_id      recordgroup;
  rg_errcode NUMBER;

BEGIN 
  rg_id := find_group('GRUPO'); 
  IF id_null(rg_id) THEN 
    rg_id := create_group_from_query('GRUPO','SELECT nm_responsavel_empresa FROM qs_empresa WHERE cd_pessoa_empresa = 1');
    rg_errcode := populate_group(rg_id);
    IF rg_errcode <> 0 THEN
      message('não FOI POSSIVEL PREENCHER O GRUPO'); pause;
    ELSE 
    	message('GRUPO CRIADO'); pause;
    END IF;
  END IF;
END;
qualquer coisa poste ai...

[]´s
Avatar do usuário
anderson
Rank: Analista Júnior
Rank: Analista Júnior
Mensagens: 75
Registrado em: Seg, 06 Jun 2005 1:08 pm
Localização: Toledo - PR
Contato:
Anderson Nuernberg
---

ah, outra coisa que reparei... teste a váriavel 'errcode', se for diferente de zero, o create group retornou erro...

[]´s
Deathão
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 57
Registrado em: Qui, 16 Jun 2005 11:31 am
Localização: Assis
Contato:
--
Júnior

fala Anderson brigado pela dica cara, até onde você me passou funcionou belezinha!!

agora como eu faço para passar esse record group e filtrar em uma lov para aparecer a consulta?? você sabe como fazer isso?


valeu novamente aí galera..
Deathão
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 57
Registrado em: Qui, 16 Jun 2005 11:31 am
Localização: Assis
Contato:
--
Júnior

Segue código novamente, agora ele não dá erro algum mas simplesmente não aparece a LOV cara... não sei o que é.. eu aperto F9 e dá um tempo mas não aparece a janelinha da LOV... :? :? :( :? :(

Selecionar tudo

PROCEDURE populate_query IS
	rg_id    RecordGroup; 
	popula_rg  NUMBER; 
	v_label VARCHAR2(100);
	v_query VARCHAR2(4000) := NULL;
	v_item ITEM;
	rg_name  VARCHAR2(50) := 'LOV_TESTE'; 
	name_lov VARCHAR2(50) := 'LOV_padrão';
	id_lov Lov;
	v_teste varchar2(1000);
BEGIN 
	 break;
	 v_item := find_item(:SYSTEM.CURSOR_ITEM);
	 rg_id := Find_Group(rg_name); 
	 id_lov := Find_Lov(name_lov);
	 v_label := get_item_property(v_item,prompt_text);
	 SELECT qry_lov        
	 INTO  v_query
	 FROM  parametro_relatorio
	 WHERE  label_item = v_label
	 AND   relatorio = :GERA_RELATORIO.TXT_COD_RELATORIO;
	 IF id_null(rg_id) THEN 
     rg_id := create_group_from_query(rg_name,v_query); 

	 IF v_query IS NOT NULL THEN
			popula_rg := populate_group(rg_id); 
		IF popula_rg <> 0 THEN 
      message('não FOI POSSIVEL PREENCHER O GRUPO'); 
      raise form_trigger_failure;
		ELSE 
			Set_Lov_Property (name_lov,GROUP_NAME,rg_id);
			Set_Lov_Property(name_lov,title,'Busca por '||v_label);	
	   	Set_Item_property(v_item,lov_name,name_lov);			
    END IF; 
      
	 ELSE
	 		message('Query não Informada para este Relatório');
	 		message('Query não Informada para este Relatório');
	 		raise form_trigger_failure; 		
	 END IF; 
END IF;
END;
Avatar do usuário
anderson
Rank: Analista Júnior
Rank: Analista Júnior
Mensagens: 75
Registrado em: Seg, 06 Jun 2005 1:08 pm
Localização: Toledo - PR
Contato:
Anderson Nuernberg
---

Junior, veja esse fmb, fiz um exemplo para mudar o record group em tempo de execução, acho que é isso que você quer né...
veja a lov do campo e depois clique no botão para mudar e veja novamente a lov....

outra dica... o record group que você está mudando deve ter as mesmas colunas do record group que a lov já possui, os mesmos tipos e quantidades....

qualquer dúvida avise...

http://www.glufke.net/oracle/download/lov.zip

[]´s :-o
Deathão
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 57
Registrado em: Qui, 16 Jun 2005 11:31 am
Localização: Assis
Contato:
--
Júnior

cara, então acho que oerro está nesse lance d colunas aí!!!

deu esse erro agora.
FRM-41826: Cannot replace group; columns don't match LOV
mas como poderei deixar uma lov padrão no meu record group que já existe, sendo que a minha query é criada dinamicamente?

brigado cara, seu exemplo ficou 10 perfeito mesmo!!!
Avatar do usuário
anderson
Rank: Analista Júnior
Rank: Analista Júnior
Mensagens: 75
Registrado em: Seg, 06 Jun 2005 1:08 pm
Localização: Toledo - PR
Contato:
Anderson Nuernberg
---

pois é... esse erro ai é exatamente as colunas das queries... tua query inicial deve ter um número x de colunas e a query que você ta criando tem um número y de colunas... por isso dá o erro...
em tempo de execução você não vai conseguir excluir ou adicionar colunas na estrutura da lov, você vai ter que garantir que as colunas das duas queries sejam identicas...

[]´s
Deathão
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 57
Registrado em: Qui, 16 Jun 2005 11:31 am
Localização: Assis
Contato:
--
Júnior

beleza, isso eu entendi (mais uma etapa concluída! :P )

mas é o seguinte, minha query terá sempre somente duas colunas

podendo variar somente o tipo de dado dessas duas colunas entendeu?

a primeira poderá ser NUMBER, e a segunda VARCHAR

ou vice-versa..
NiNo
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 62
Registrado em: Seg, 11 Jul 2005 2:03 pm
Localização: são Paulo
NiNo
Developer

Estou tentando utilizar este código, mudei apenas o nome de algumas variaveis. Coloquei a chamada para popular um LISTitem na trigger WHEN-NEW-FORM-INSTANCE porém, quando vai me executar este código me da o seguinte erro:

Selecionar tudo

Error deleting group/frm-41075 
e, consequentemente todo o resto do processo está dando erro.

Nota: Criei um RECORD_GROUP vazio na árvore do FORMS

Se alguém puder ajudar, fico grato,
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
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

Posso estar enganado, mas que eu saiba, os RECORD GROUPS criado dinamicamente (com create) não podem ser usados nas LOVS. Só podem ser usados pra popular list_itens, etc... (como eu disse, eu ACHO isso... Não tive tempo de pesquisar)...
NiNo
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 62
Registrado em: Seg, 11 Jul 2005 2:03 pm
Localização: são Paulo
NiNo
Developer

Agradeço a todos.
consegui revolver o problema de uma forma bem simples.
Grato,
Avatar do usuário
Toad
Rank: DBA Pleno
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

Nino, posta pra gente a solução, por favor!!
:D
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 17 visitantes