Loop em bloco tabular...

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

Fala Pessoal!! td bem??

gostaria de saber se alguém tem um exemplo onde eu consiga executar um loop dentro de um bloco tabular...

seguinte eu tenho um bloco que mostra os registros e nisso ele tem uma condição, se desmarcar essa condição não precisa listar o produto..

alguém sabe como fazer esse "select" no bloco??

valeu galera...
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

Você pode percorrer o seu bloco, fazendo o seguinte:

Selecionar tudo

GO_BLOCK('seu_bloco');
FIRST_RECORD;
LOOP
  -- faça os seus testes aqui.
  --
  IF :SYSTEM.LAST_RECORD = 'TRUE'
  THEN EXIT;
  ELSE NEXT_RECORD;
  END IF;
END LOOP;
Eu acho que a melhor forma de fazer seleções em blocos BASE TABLE é assim:
* Você cria uma tabela temporaria.
* Quando o usuário clicar no check-box, você faz um INSERT da PK da sua tabela nessa temporária.
* Se o usuário tirar o check, faz o DELETE.

Assim, você tem uma tabela com os registros que ele selecionou e pode facilmente fazer queries com essa seleçao.

O ideal, é criar uma GLOBAL TEMPORARY TABLE pra essa temporaria, pra evitar problemas de varios usuarios estarem trabalhando ao mesmo tempo!

:-) :-o
Avatar do usuário
Porva
Rank: DBA Sênior
Rank: DBA Sênior
Mensagens: 342
Registrado em: Seg, 29 Jan 2007 7:36 am
Localização: São Paulo/SP
Rafael S. Nunes
São Paulo/SP

pronto, seguindo a dica passada aqui e outra passada pelo Gori em outro tópico, consegui resolver aqui, valeus... fica a dica:

Selecionar tudo

-----------------------------------------------
-- Colorir as linhas com nome do funcionário -- 
-- sugerido à respectiva para a ligação      --
-----------------------------------------------
  LOOP --Percorre os registros (linha a linha)
  
	  vn_cur_itm := GET_BLOCK_PROPERTY( 'b02', FIRST_ITEM );
	  
	  WHILE ( vn_cur_itm IS NOT NULL ) LOOP --Percorrer item a item (movimentação entre as colunas)
	    
	    --
	    vn_cur_itm := 'b02.'||vn_cur_itm;
	    
       --Verifica se o Item está no canvas, não é necessário se TODOS os itens estiverem no canvas	    
       IF GET_ITEM_PROPERTY( vn_cur_itm, ITEM_CANVAS ) IS NOT NULL THEN 
	    
	      IF :b02.func_cd IS NOT NULL THEN
	    	  SET_ITEM_INSTANCE_PROPERTY( vn_cur_itm, CURRENT_RECORD, VISUAL_ATTRIBUTE, 'VS_VERMELHO' );	    
	      END IF;
	    
	    END IF;    
	    
	    vn_cur_itm := GET_ITEM_PROPERTY( vn_cur_itm, NEXTITEM );
	    
	  END LOOP;
  
  	IF :SYSTEM.LAST_RECORD = 'TRUE' THEN 
  		EXIT;
  	ELSE 
  		NEXT_RECORD;
  	END IF; 	  	
  	
  END LOOP;
Avatar do usuário
Porva
Rank: DBA Sênior
Rank: DBA Sênior
Mensagens: 342
Registrado em: Seg, 29 Jan 2007 7:36 am
Localização: São Paulo/SP
Rafael S. Nunes
São Paulo/SP

puts, foi mal, postei no lugar errado

era pra ter sido nesse tópico:

http://glufke.net/oracle/viewtopic.php?t=519
Responder
  • Informação
  • Quem está online

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