Como impor "primary key" por item e bloco?

Dicas do Oracle Forms Builder - Blocos, Itens, LOV, Canvas, Triggers, comandos, PLL, d2kwutil, FMB, Alert, menus, etc
Responder
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

pessoal

estou com um problema aqui

estou tentando restringir a duplicidade de registros num bloco tabular na seguinte situação:

Selecionar tudo

Contato nro: 100

Gestor              Fiscal
-------------------------------
RAFAEL              JOÃO
MANÉ                JOÃO
por exemplo, eu não posso ter o mesmo gestor e/ou fiscal em mais de uma linha, nesse caso o fiscal João não pode estar em duas ou mais linhas, e a regra deve ser a mesma pro gestor, e isso apenas para o contrato corrente na tela!

eu tentei mudando a propriedade Enforce Primay Key do bloco para TRUE e configurando a propriedade desses ítens (Gestor e Fiscal) como PRIMARY KEY = TRUE

mas isso não está funcionando direito, as vezes parece validar corretamente, mas as vezes parece que o Forms se confunde e deixa salvar, não estou entendendo como é o mecanismo dessas propriedades!

também tentei "fazer na mão" (exemplo abaixo), jogando o foco para o bloco e percorrendo ele pra validar, isso no PRE-INSERT e PRE-UPDATE do bloco, mas essas triggers não permitem o GO_BLOCK para fazer a o loop :(

Selecionar tudo

  --
  -- Verifica se o gestor já foi cadastrado mais de uma vez no bloco corrente
  --
  l_gestor := :MRS_PO_MEASUR_GEST_FISC.GESTOR;
  GO_BLOCK('MRS_PO_MEASUR_GEST_FISC');
  FIRST_RECORD;
  
  LOOP 
  	
  	IF :MRS_PO_MEASUR_GEST_FISC.GESTOR = l_gestor THEN
  		l_count := l_count + 1; 
  	END IF;
  	
    EXIT WHEN :SYSTEM.LAST_RECORD = 'TRUE';    
    NEXT_RECORD;

  END LOOP;
  
  IF l_count > 0 THEN  
		FND_MESSAGE.SET_STRING('Não é possível incluir o gestor ' || :MRS_PO_MEASUR_GEST_FISC.GESTOR_DSP || ' mais de uma vez.');
		FND_MESSAGE.ERROR;
		RAISE FORM_TRIGGER_FAILURE;
  END IF;
qual seria a melhor solução?
valeu
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

galera, foi mals aí

eu achei um tópico criado por mim inclusive, em 2007, onde eu tive o mesmo problema, mas nem me lembrava disso!

http://glufke.net/oracle/viewtopic.php?t=1803


aqui o gori tb dá um parecer sobre isso:

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

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