Pagina 1 di 1

Come controllare il campo email

Inviato: lunedì 29 dicembre 2014, 10:52
da innav
Buon giorno,
Ho creato una tabella dove tra i vari campi c'è anche il campo email, vorrei fare il seguente controllo: il campo è lungo 30 caratteri, quindi vorrei impedire che l'utente possa inserire piu di 30 caratteri e che partendo da destra verso sinistra, si debba inserire per forza (x) caratteri ( ovvero estensione dominio it, com per esempio) seguito dal punto e dopo (x) caratteri si debba inserire obbligatoriamente la (@) ! Spero di aver spiegato bene , ma in sostanza serve per far in modo che l'utente scriva correttamente l' email.
es: esempio@gmail.com il controllo va da destra fino alla @ .
sEmail = right$(RTrim(Me.getControl("Email").Text) + Space(30), 30)
Questa potrebbe essere la prima parte di controllo ma non sono sicuro!

Potete aiutarmi ? grazie

Re: Come controllare il campo email

Inviato: lunedì 29 dicembre 2014, 19:12
da Gumo
Nonostante l'esempio non ho capito bene se lo vuoi fare, con funzioni Calc oppure con una macro

Proviamo la prima - funzioni calc -
devi usare una sequenze di funzioni che verifichino nell' ordine:
- la lunghezza della stringa
- la posizione del carattere @
- dalla posizione@ fino alla fine devi controlare la presenza del "." in 4° o 3° posizione
Adesso hai solo la sicurezza che la stringa non è vuota e contiene una @ ed un "." in posizione compatibile con la sitassi di una email

OPPURE più semplicemente verifichi :
- la presenza di @
- che la stringa termini con ".com" ".it" ".org" .... (ed avresti controllato la gran parte delle estensioni).
Se questi due controlli non sono positivi fai colorare la cella di rosso (formattazione condizionata).

Se invece preferisci scrivere codice VB, ti sbizzarrisci come credi.
saluti
g

Re: Come controllare il campo email

Inviato: lunedì 29 dicembre 2014, 21:15
da innav
Buona sera,
ho letto con attenzione g, grazie ! Riporto di seguito la funzione creata manca un controllo e poi potro dire RISOLTO !

Public Function CheckMail(sEMail)
dim a As Integer
dim crt As String
dim crt1 as String
dim punto as integer
dim chiocciola as integer
dim contatore as integer
punto = 0
chiocciola = 0
contatore = 0
'
a = Len(sEMail)
For contatore = 1 to a
crt = Left$(Right$(sEMail,contatore),1)
crt1 = Mid$(Right$(sEMail,contatore),1,1)
'
' msgbox crt & " " & chr$(13) + chr$(10) + crt1
'
select case crt
case is = "."
if punto = 0 Then
punto = contatore
end if
case is = "@"
if chiocciola = 0 Then
chiocciola = contatore
end if
case else
end select
next contatore
'
if punto + chiocciola = 0 then
CheckMail = "Errore! Mancano sia il Dominio che la @"
Exit Function
end if
'
if punto = 0 then
CheckMail = "Errore! Manca il Dominio"
Exit Function
end if
'
if chiocciola = 0 then
CheckMail = "Errore! Manca la @"
Exit Function
end if
'
if punto > chiocciola and chiocciola <> 0 then
CheckMail = "Errore! Manca il Dominio"
Exit Function
end if
'
if punto < chiocciola and punto <> 0 then
CheckMail = "Errore! Manca la @"
Exit Function
end if
'
CheckMail = sEMail
End function

Come potrai notare manca un controllo ! Ovvero : se io scrivessi pippo.topolinogmailcom non mi da errore !
Chiedo scusa se non ho specificato ma mi riferivo a una macro!
La domanda e: se aggiungo al primo if ...or (punto > chiocciola and chiocciola = 0) comunque non va !
Risolto questo ultimo controllo sono felice !
Grazie

Re: Come controllare il campo email

Inviato: lunedì 29 dicembre 2014, 21:22
da innav
Ho sbagliato a scrivere....scusate!
L'errore non trovato e il seguente : se scrivo pippo.topolinogmail.com

Devo trovare il modo di gestire questo tipo di errore !!!


Grazie

Re: Come controllare il campo email

Inviato: martedì 30 dicembre 2014, 8:40
da patel
più semplice

Codice: Seleziona tutto

Function ChkMail(sEMail)
If sEMail Like "*@*.*" Then 
    ChkMail = "OK"
else
    ChkMail = "Non corretto"
End if  
End Function

Re: Come controllare il campo email

Inviato: martedì 30 dicembre 2014, 10:06
da innav
Grazie Patel,
provo e poi vi faccio sapere !

Re: Come controllare il campo email

Inviato: martedì 30 dicembre 2014, 10:18
da patel
se proprio vuoi distinguere gli errori

Codice: Seleziona tutto

function cMail(sEMail as string)
dim a As Integer, punto as integer, chiocciola as integer
a = Len(sEMail)
punto = revinstr(sEMail,".")
chiocciola = revinstr(sEMail,"@")
if Len(sEMail) > 30 then
  CMail = "lunghezza > 30"
elseif punto + chiocciola = 0 then
  CMail = "Errore! Mancano sia il Dominio che la @"
elseif punto = 0 Then
  CMail = "Errore! Manca il Dominio"
elseif chiocciola = 0 then
  CMail = "Errore! Manca la @"
else
  CMail = sEMail
end if
End function

function revinstr(s as string, slash as string) as string
    dim ii as integer
	ii=0
	do
	if instr(ii+1,s,slash)=0 then exit do
		ii=instr(ii+1,s,slash)
	loop
	revinstr = ii
end function