next block

Dicas do Oracle Forms Builder - Blocos, Itens, LOV, Canvas, Triggers, comandos, PLL, d2kwutil, FMB, Alert, menus, etc
Responder
numerus
Rank: Analista Júnior
Rank: Analista Júnior
Mensagens: 71
Registrado em: Seg, 23 Mai 2011 11:56 am
Localização: SP

Oi gente.

seguinte preciso ir para o proximo block e não estou lembrando alguém sabe???

tipo:

Get_Form_Property(curform,FIRST_BLOCK);
e

Get_Form_Property(curform,NEXT_BLOCK);

mas o next_block no get não funciona!!!!!

abraços,
davidcastilholi
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 47
Registrado em: Qui, 07 Abr 2011 3:54 pm
Localização: Jussara PR
David

Selecionar tudo

GO_BLOCK('NOME_DO_BLOCO');


Me corrijam se eu estiver errado.
numerus
Rank: Analista Júnior
Rank: Analista Júnior
Mensagens: 71
Registrado em: Seg, 23 Mai 2011 11:56 am
Localização: SP

não cara, precisa ser na get_block...
ederphil
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 52
Registrado em: Qua, 15 Out 2008 4:05 pm
Localização: taquara-RS

cara,

porque tem que ser na get_block?

begin
Next_Block;
end;
numerus
Rank: Analista Júnior
Rank: Analista Júnior
Mensagens: 71
Registrado em: Seg, 23 Mai 2011 11:56 am
Localização: SP

por que esta na pre-form e não aceita next_block
ederphil
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 52
Registrado em: Qua, 15 Out 2008 4:05 pm
Localização: taquara-RS

bah.. pior que na pre-form não sei se você vai conseguir,

tem algo em especial que precise ser na pre-form, se não pode colocar when-new-form-instance,

vlw!
numerus
Rank: Analista Júnior
Rank: Analista Júnior
Mensagens: 71
Registrado em: Seg, 23 Mai 2011 11:56 am
Localização: SP

então não dá por causa das classes... acabaria substituindo a trigger de alguma tela que não tivesse amarrada.
Mas acabei criando uma prc que deu certo.

Selecionar tudo

PROCEDURE prc_block_Item IS 
  curform        VARCHAR2(40); 
  first_blk      VARCHAR2(40);
  cur_blk        VARCHAR2(40):='0';
  orig_blk       VARCHAR2(40);
  cur_itm        VARCHAR2(80); 
  orig_itm       VARCHAR2(80); 
  first_itm      VARCHAR2(80); 
  wrapped        BOOLEAN := FALSE; 
  found          BOOLEAN := FALSE; 
  Exit_Procedure EXCEPTION; 

 
 FUNCTION The_blk_After(blk VARCHAR2) 
  RETURN VARCHAR2 IS 
  BEGIN             
    RETURN Get_block_Property(NVL(blk,:System.Cursor_block),NEXTblock);     
  END; 

  FUNCTION The_Item_After(itm VARCHAR2) 
  RETURN VARCHAR2 IS 
  v_base varchar2(1000);
 BEGIN     
   v_base := Get_Item_Property(itm,database_value);
   if  v_base IS NOT NULL then 
    RETURN orig_blk||'.'||Get_Item_Property(itm,NEXTITEM);  
             else
                         return null;
             end if;  
 END; 
BEGIN 
             
            curform   := :System.Current_Form; 
            first_blk := Get_Form_Property(curform,FIRST_BLOCK);             
            orig_blk  := :System.Cursor_block; 
  
            WHILE (orig_blk <> cur_blk) LOOP 
  IF Get_block_Property(NVL(orig_blk,:System.Cursor_block),UPDATE_ALLOWED) = 'FALSE' THEN 
      SET_block_PROPERTY (orig_blk,UPDATE_ALLOWED,PROPERTY_TRUE);
  else 
             if orig_blk is not null then
     cur_blk   := The_blk_After(orig_blk); 
    end if;   
  END IF;   

            first_itm := Get_Block_Property( NVL(orig_blk,:System.Cursor_block), FIRST_ITEM );   
    orig_itm  := :System.Cursor_Item;
     cur_itm := The_Item_After(orig_itm); 

  WHILE (orig_itm <> cur_itm) LOOP
    IF Get_Item_Property(cur_itm,UPDATE_ALLOWED) = 'FALSE' THEN              

       SET_ITEM_PROPERTY (cur_itm,UPDATE_ALLOWED,PROPERTY_TRUE);              
    ELSE     
     if orig_itm is not null then
             cur_itm := The_Item_After(orig_itm);
     end if;          

    END IF;  

    IF Get_Block_Property( orig_blk, LAST_ITEM ) = cur_itm THEN  
             RAISE Exit_Procedure; 
    ELSE

     if orig_itm is not null then
             orig_itm  := The_Item_After(orig_itm);
     end if;          

     if cur_itm is not null then       
             cur_itm   := The_Item_After(cur_itm);
     end if;

   END IF;   
  END LOOP; 

   IF Get_Block_Property( curform, LAST_BLOCK )   = cur_blk THEN
             RAISE Exit_Procedure; 
   ELSE
             if orig_blk is not null then
               orig_blk  := The_blk_After(orig_blk);
             end if;

             if cur_blk is not null then
             cur_blk   := The_blk_After(cur_blk); 
             end if;  
             
             if orig_blk is null and orig_blk is null then
                          RAISE Exit_Procedure; 
             end if;
    END IF;        

  END LOOP;

  wrapped := TRUE; 
  RAISE Exit_Procedure; 
EXCEPTION 
  WHEN Exit_Procedure THEN 
    NULL;
END;


abraços,
Valeu pela ajuda...
Responder
  • Informação
  • Quem está online

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