No vídeo de hoje, vamos demonstrar em como adicionar uma validação em um campo no sistema para verificar se o email informado é válido.
A dúvida de hoje, nos perguntaram, em como poderíamos usar a IsEmail direto na validação de campo de usuário porém com a possibilidade de validar mais de um eMail separado por ponto e vírgula.
Pensando nisso, montamos esse exemplo, onde vamos demonstrar a utilização da função customizada zVldMail juntamente com a lógica elaborada do ponto e vírgula.
Segue abaixo o vídeo exemplificando:
E abaixo o código fonte desenvolvido:
//Bibliotecas #Include "TOTVS.ch" /*/{Protheus.doc} User Function zVldMail Função que valida se o campo digitado possui emails válidos @type Function @author Atilio @since 12/04/2024 @obs Após compilar, coloque na validação de usuário (X3_VLDUSER) dos campos desejados como o A1_EMAIL: u_zVldMail() Abaixo alguns exemplos que você pode testar: "teste@teste.com" "teste@teste.com;" "teste@teste.com;teste2@tst.com" "teste@teste.com;teste2@tst" "teste@te ste.com" ";;;" "aaa" /*/ User Function zVldMail() Local aArea := FWGetArea() Local lContinua := .T. Local cEmails := Alltrim(&(ReadVar())) Local aEmails := {} Local nAtual := 0 //Se tiver ponto e vírgula If ";" $ cEmails //Valida se o usuário só colocou ;, para assim impedir If Empty(StrTran(cEmails, ";", "")) lContinua := .F. ExibeHelp("Help zVldMail", "eMail inválido!", "Verifique se foi inserido corretamente o campo!") Else //Quebra a string em um array aEmails := StrTokArr(cEmails, ";") //Percorre todos os eMails enocntrados For nAtual := 1 To Len(aEmails) //Só vai continuar se o email for válido lContinua := lContinua .And. IsEmail(aEmails[nAtual]) //Se houve alguma falha, já encerra o laço If ! lContinua Exit EndIf Next EndIf //Senão, valida só o que foi inserido no campo Else lContinua := IsEmail(cEmails) EndIf FWRestArea(aArea) Return lContinua
Bom pessoal, por hoje é só.
Abraços e até a próxima.