Ir para o conteúdo principal

PEX - SELECT

Em certas regras, é necessário fazer uma consulta no banco de dados ao sair de um campo. Por exemplo, ao informar um CEP, o sistema verifica se o CEP está cadastrado nas tabelas locais e retorna uma mensagem para o usuário caso já esteja.

image-1640264955340.png

Uma opção para facilitar um pouco a digitação do código é utilizar o assistente como na imagem abaixo. Clicando com o botão direito do mouse acima da tela do PEX, em Modelo de código, clicar em Criar DataSet por SQL.

image-1640265028220.png

Isto é criado automático: 

image-1640265087232.png

A variável loCDS terá que ser declarada acima do begin. (loCDS : TlibCDS;) Abaixo, o exemplo de verificação de CEP descrito neste tópico. 

Use a estrutura abaixo e modifique o SQL como desejar, só não esqueça de NÃO tirar o loCDS.free, ele é responsável por "destruir" o objeto criado, uma boa prática. 

const 
      csCEP = '2';
      csEndereco = '3';
var   
      loCDS : TlibCDS;
      lsSQL : String;
begin
     lsSQL := 'SELECT ENDERECO FROM CLIFOREMP WHERE CEP = ' + TSTR.Aspa(aoFormularios.GetJSON(csCEP).GetStr('TEXTO'));
     loCDS := of_CriaCDSporSQL(lsSQL);
try
     if loCDS.of_TemDados() then
     begin 
          aoFormularios.GetJSON(csEndereco).SetStr('TEXTO', loCDS.GetStr('ENDERECO'));    
     end
     else
     begin
         aoMensagem.SetStr('MENSAGEM', 'Endereço não encontrado em nossa base!');
         aoMensagem.SetStr('TIPO', 'ERRO');
         aoMensagem.SetInt('TIMEOUT', 5000);
         aoFormularios.GetJSON(csEndereco).SetStr('TEXTO', '');
     end;     
finally
  loCDS.Free;
end;
end;