10. oktober 2002 - 16:49Der er
12 kommentarer og 1 løsning
Check emailadresseformat
Er der nogen som kan hjælpe med en funktion/query som løber en tabel igennem og checker om et felt indeholder en gyldig email-adresse - altså om tekstrengen overholder reglerne for opbygning af en emailadresse ?
Med version 7 af TeamShare tager Lector næste skridt og bygger en platform for AI-agenter, der i højere grad kan følge medarbejderen gennem hele arbejdsprocessen.
Er der en eller anden officiel standard, eller skal det blot kontrolleres at adressen kun indeholder tegn fra det engelske alfabet, et @ og evt. punktummer?
Jeg ved ikke om der findes en officiel standard, men ja det er jo kun engelske karakterer, samt nogle få special tegn (underscore, tankestreg mv), men der skal også testes for at der ex ikke er to punktummer efterhinanden, at adressen ikke ender på et punktum, at der forefindes kun en snabel.....lige nu løber jeg bare tabellen igennem med en række qu's som hver checker for div uregelmæssigheder, men dels er det ikke særligt elegang, og dels er jeg ikke sikker på at få dækket alle tilfælde.
Følgende kan gøre noget af det du ønsker. Måske skal du videreudvikle lidt på det. Jeg har ikke gjort det da jeg kun lige havde behov for denne del. Resten gør jeg ved at checke at adressen findes i OutLokk adressebogen. Men det er en helt anden kode.
Public Function fhpIsValidEmail(strAddress As String) As Boolean ' ----------------------------------------------------------------------------------- ' Purpose : Check if a e-mail address is OK - spelling ' Called from : ' Returns : ' Remarks : ' ----------------------------------------------------------------------------------- Dim intX As Integer 'Counter Dim intY As Integer 'Counter Dim strTemp As String 'Part of address
fhpIsValidEmail = False 'Default = not a valid e-mail intX = 0 'Initialise variable intY = 0 'Initialise variable
For intX = 1 To Len(strAddress) 'Loop whole address If Mid(strAddress, intX, 1) = "@" Then 'Check for @ intY = intY + 1 'Count End If Next intX If intY > 1 Then 'If found more than one @ Exit Function 'Not valid in e-mail End If
intX = InStr(strAddress, "@") 'Find the @ char If (intX > 0) Then 'If found not next to . If (Mid(strAddress, intX - 1, 1) <> ".") And (Mid(strAddress, intX + 1, 1) <> ".") Then strTemp = Mid(strAddress, intX) 'Take the part at the right intY = InStr(strTemp, ".") 'Find the dot If (intY > 0) And (Right(strTemp, 1) <> ".") Then 'Not the last char fhpIsValidEmail = True 'Could be a valid address End If '. after the @ End If '. next to @ End If 'found a @
Her er en funktion hvor du skal lægge den i en module:
Function IsEmail(sCheckEmail) Dim sEmail As String Dim nAtLoc As String IsEmail = True sEmail = Trim(sCheckEmail) nAtLoc = InStr(1, sEmail, "@") 'Location of "@"
If Not (nAtLoc > 1 And (InStrRev(sEmail, ".") > nAtLoc + 1)) Then '"@" must exist, and last "." in string must follow the "@" IsEmail = False ElseIf InStr(nAtLoc + 1, sEmail, "@") > nAtLoc Then 'String can't have more than one "@" IsEmail = False ElseIf Mid(sEmail, nAtLoc + 1, 1) = "." Then 'String can't have "." immediately following "@" IsEmail = False ElseIf InStr(1, Right(sEmail, 2), ".") > 0 Then 'String must have at least a two-character top-level domain. IsEmail = False End If
End Function
Så kan du brug funktionen i en forspørgsel noget i den retning: select mintabel.feltnavn, mintabel.feltnavn2, IsEmail(mintabel.feltnavn) as validEmail from mintabel
eller tjek tekstboksens input på formularen:
Private Sub sCheckEmail_BeforeUpdate(Cancel As Integer)
Dim Status As String Status = IsEmail(sCheckEmail) If Status <> "CPR-nr. er korrekt" Then MsgBox "Email Adresse: " & sCheckEmail & ": " & Status Cancel = True Else Cancel = False End If End Sub
Det er begge fine løsninger, som stort set gør det jeg allerede gør (bare i et par query's), men hvordan checkes der for om de anvendte karakterer ikke er ugyldige ??
hvis du bruger denne funktionen for en tekstboks i formularen: Private Sub sCheckEmail_BeforeUpdate(Cancel As Integer)
Dim Status As String Status = IsEmail(sCheckEmail) If Status <> "Email adresse er korrekt" Then MsgBox "Email Adresse: " & sCheckEmail & ": " & Status Cancel = True Else Cancel = False End If End Sub
hvis den indtastede email adresse er ugyldigt, poper up en message boks hvor står : "Email Adresse hjhjhjhjMin.com : false Det gør den sætning: "Email Adresse: " & sCheckEmail & ": " & Status sCheckmail er teksboksens navn.
som funktion i query, kolonen som du navn giver fx IsEmail(mintabel.feltnavn) as validEmail, hvis værdien er false så får den værdien 0, etc.
Undskyld den lange svartid, men jeg har ikke været i stand til at logge ind på systemet. Begge løsninger er anvendelige, men de checker ikke for den komplette liste af gyldige tegn (ex skal danske bogstaver udelukkes, specialtegn mv) - kan man opstille en form for "gyldighedsarray" som der checkes op mod ?
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.