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.