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.
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:
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
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:
Com este PEX, os valores que estão no campo adicional da FK, serão preenchidos nos demais formulários.
Demonstração no portal: