Ir para o conteúdo principal

PEX - Utilizando campo adicional da FK

Neste tópico iremos adicionar, por meio de uma evento ao sair do campo (PEX), uma informação do campo adicional de uma FK em um formulário dissertativo.

** Campo adicional são os demais campos da tabela (ou view) fora o código ou descrição que o modelador deseja utilizar no procedimento. Atualmente o sistema mostrar apenas o ID + DESCRIÇÃO para o usuário na FK, com os campos adicionais as demais informações que a tabela puxa podem ser utilizados no procedimento. 

image-1640623402610.png

Pode-se utilizar uma tabela sem problemas, mas neste exemplo vamos criar a view colaboradores para a FK. 

CREATE OR REPLACE VIEW PUBLIC.VW_COLABORADORES AS
SELECT C.IDCLIFOREMP AS ID,
       C.RAZAO AS NOME,
       U.IDUSUARIO AS USERID,
       U.USERNAME,
       U.IDPAPELFUNCAOPRINCIPAL AS IDPAPELPRINCIPAL,
       F.DESCRICAO AS BPM_DESCRICAO
  FROM USUARIO U
  JOIN CLIFOREMP C  ON C.IDCLIFOREMP = U.IDCLIFOREMP
  JOIN BPM_FUNCAO F ON F.IDBPMFUNCAO = U.IDPAPELFUNCAOPRINCIPAL
 WHERE U.INATIVO = 'N'::BPCHAR;

Este exemplo foi feito em um banco de dados PostgreSQL. Se necessário, personalize o SQL para o seu respectivo banco.

Crie um conector do tipo FK onde puxa as informações dessa view, de acordo com a imagem abaixo:

image-1640622910132.png

Agora no processo, crie quatro formulários para serem preenchidos de acordo com o campo adicional.

  • Colaborador com a variável /*COLABORADOR*/
  • Username com a variável /*USERNAME*/
  • Bpm descrição com a variável /*BPM_DESCRICAO*/
  • Userid com variável /*USERID*/

**Configure o tamanho dos campos como achar melhor 

image-1640622966981.png

No primeiro formulário (colaborador) vincule a Fk que criamos (Fk_vw_colaboradores) e salve o processo. Volte para o formulário e vamos criar nosso evento PEX ao sair.

const
 cs_username = '2';    // Aqui nós declaramos as constantes
 cs_userid = '3';
 cs_bpm = '4';
begin 
// Aqui nós modificamos os formulários do processo
   aoFormularios.GetJSON(cs_username).SetStr('TEXTO', aoValoresFK.GetStr('USERNAME'));
   aoFormularios.GetJSON(cs_userid).SetInt('TEXTO', aoValoresFK.GetInt('USERID'));
   aoFormularios.GetJSON(cs_bpm).SetStr('TEXTO', aoValoresFK.GetStr('BPM_DESCRICAO'));  
end;

Copie esse código ou use o assistente:

image-1640623041912.gif

Com este PEX, os valores que estão no campo adicional da FK, serão preenchidos nos demais formulários.
Demonstração no portal:

image-1640623463476.gif