trigger estranho

Dicas do Oracle Forms Builder - Blocos, Itens, LOV, Canvas, Triggers, comandos, PLL, d2kwutil, FMB, Alert, menus, etc
Responder
eduardo
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 56
Registrado em: Ter, 10 Jul 2007 3:24 pm
Localização: sp
Sempre há algo a aprender....

olá pessoal,

estou dando manutenção num form antigo sem documentação ; nesse form eu achei um trigger com 1 código incomum para mim.

Selecionar tudo

for ind in 182...184

set_block_proporty( 'B01',ind,5);
set_block_proporty( 'B01',ind,2);
end;
alguém já viu um código parecido?

o objetivo do trigger seria habilitar / desabilitar 1 bloco de acordo o parametro passado; no exemlo acima o numero 5 e o numero 2 seria o valor do parametro

desde já agradeço a quem puder me explicar isso, fiquei curioso com essa forma de programar
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

Qual versão do forms é essa ?
eduardo
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 56
Registrado em: Ter, 10 Jul 2007 3:24 pm
Localização: sp
Sempre há algo a aprender....

olá,

a versão é

Forms [32 Bit] Version 6.0.8.24.1
Trevisolli
Moderador
Moderador
Mensagens: 2016
Registrado em: Qua, 12 Jan 2005 3:25 pm
Localização: Araraquara - SP
Abraço,

Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP

Brother,

Esse ind é alguma string montada dinâmicamente?
eduardo
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 56
Registrado em: Ter, 10 Jul 2007 3:24 pm
Localização: sp
Sempre há algo a aprender....

opa,

essa variável é alimentada pelo cursor; muito estranho esse código, o mais estranho é que funciona; o trigger q tem esse código seta o bloco como enabled ou não dependendo de onde se clica
Trevisolli
Moderador
Moderador
Mensagens: 2016
Registrado em: Qua, 12 Jan 2005 3:25 pm
Localização: Araraquara - SP
Abraço,

Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP

Teria como você postar todo o trigger pra gente?
eduardo
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 56
Registrado em: Ter, 10 Jul 2007 3:24 pm
Localização: sp
Sempre há algo a aprender....

opa,s egue o código todo, eu falei q era 1 trigger na verdade é uma program unit criado no forms

Selecionar tudo

PROCEDURE Ativa_Desativa_Blocos( P_PARAM IN NUMBER ) IS
BEGIN
 
    -- 0 - ATIVA
    -- 1 - DESATIVA
 
    for ind in 182 .. 184
    loop
        set_block_property('B03', ind           , (P_PARAM + 4) ) ;
        set_block_property('B05', ind           , (P_PARAM + 4) ) ;
        set_block_property('B06', ind           , (P_PARAM + 4) ) ;
        set_block_property('B07', ind           , (P_PARAM + 4) ) ;
        set_block_property('B09', ind           , (P_PARAM + 4) ) ;
        set_block_property('B10', ind           , (P_PARAM + 4) ) ;
        set_block_property('B11', ind           , (P_PARAM + 4) ) ;
    end loop ;
END;
rogenaro
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 232
Registrado em: Sex, 30 Mar 2007 7:26 pm
Localização: Londrina - PR
Rafael O. Genaro

Poxa, inteligente pra camaba essa solução, nunca tinha pensado nisso! Bem útil (mas meio obscura mesmo).

O segundo parâmetro da função SET_[BLOCK/ITEM/RECORD]_PROPERTY é sempre um número (que representa a propriedade a ser setada: insert_allowed, enabled, default_where, etc...).
Ou seja, insert_allowed, update_allowed, delete_allowed, default_where, etc não passam de constantes definidas no Forms do tipo number.

Os códigos 182, 183 e 184 mencionados referem-se respectivamente às propriedades delete_allowed, update_allowed e insert_allowed.

Uma forma mais legìvel de escrever o código (e que vai me ser útil, com certeza :P) seria:

Selecionar tudo

procedure ativa_desativa_blocos
( p_param in number 
) is 

begin 

-- 0 - ativa 
-- 1 - desativa 

  for ind in delete_allowed .. insert_allowed loop 
  
    set_block_property('b03', ind , (p_param + 4) ) ; 
    set_block_property('b05', ind , (p_param + 4) ) ; 
    set_block_property('b06', ind , (p_param + 4) ) ; 
    set_block_property('b07', ind , (p_param + 4) ) ; 
    set_block_property('b09', ind , (p_param + 4) ) ; 
    set_block_property('b10', ind , (p_param + 4) ) ; 
    set_block_property('b11', ind , (p_param + 4) ) ; 
  
  end loop ; 

end;
rogenaro
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 232
Registrado em: Sex, 30 Mar 2007 7:26 pm
Localização: Londrina - PR
Rafael O. Genaro

Ops, complementando, o mesmo ocorre para o terceiro parâmetro (no caso, PROPERTY_TRUE = 4 e PROPERTY_FALSE = 5)
eduardo
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 56
Registrado em: Ter, 10 Jul 2007 3:24 pm
Localização: sp
Sempre há algo a aprender....

legal mas como é que eus ei qual o valor numérico para cada propriedade? existe algum lugar que tenha essa informação?

desde já agradeço
Responder
  • Informação
  • Quem está online

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