Inscrições abertas para nosso Webinar anual Adianti Framework 2024!
Clique aqui para saber mais
validação de campos, ajuda Bom dia amigos, como faço para validar 2 campos, exemplo tenho campo codigo e data, antes de gravar ou ao sair do campo quero que ele faça uma busca para saber se esse código e data já existe no banco e avisar o usuario que o código com essa data ja foi lançado. ...
RS
validação de campos, ajuda  
Bom dia amigos, como faço para validar 2 campos, exemplo tenho campo codigo e data, antes de gravar ou ao sair do campo quero que ele faça uma busca para saber se esse código e data já existe no banco e avisar o usuario que o código com essa data ja foi lançado.




Curso completo Meu Negócio Pronto
Use para si, ou transforme em um negócio: Inclui aulas e códigos-fontes
Gestor de conteúdo (SITE) + Loja Virtual (E-Commerce) + Emissor de Notas para infoprodutos


Meu negócio pronto Quero me inscrever agora!

Comentários (5)


LC

Pode fazer uma validação no setExitAction do campo data, pode usar esse exemplo: www.adianti.com.br/framework_files/tutor/index.php?class=FormInterac
Ai na função faz uma consulta na tabela para ver se já existe.
RS

Obrigado Leandro, consegui com o setExitAction filtrar os campos e se caso tenha dados ja cadastrados com esses campos coloco TMessage informando que ja foi cadastrado, mas gostaria de saber como evitar que mesmo se o usuário clicar no salvar não salvar, e isso ele faz o onSave, será que a solução seria fazer essa busca no onSave?

fiz assim

  1. <?php
  2. public static function onValidaDados($param){
  3.     
  4.         
  5.        $fcompe =  substr($param['competencia'],3,4).'-'.substr($param['competencia'],0,2).'-01';
  6.        $codigo =  $param['custo'];
  7.        
  8.        TTransaction::open('conpusis');
  9.        
  10.        $criteria = new TCriteria;
  11.        $criteria->add(new TFilter('custo','=',$codigo));
  12.        $criteria->add(new TFilter('competencia','=',$fcompe));
  13.        $repos = new TRepository('CustosLancamentos');
  14.        $qtde  $repos->count($criteria);
  15.        
  16.        if ($qtde>0){
  17.           new TMessage('error','Custo já possui lançamento nesta competencia');
  18.           
  19.        }   
  20.        
  21.        TTransaction::close();
  22.        
  23.       
  24.        
  25.     }
  26. ?>
LC

Isso faz o mesmo no onSave também usando try catch por exemplo.
Outra coisa em alguns casos aqui eu crio um índice único na tabela com os campos envolvidos, assim da um erro mesmo que eu esqueça de validar em algum momento.
RS

Bom dia Leandro, deu certo ficou beleza, coloquei no onSave e ficou legal, mas agora tem um problema, quando eu editar eu não quero que faça essa verificação, como eu sei se está em Edição?
LC

Está em edição quando o campo ID tem algum valor.
Dai vc pode verificar se tem ID não faz esta verificação.