Evaluate @ValidateInternetAddress returns wrong result

Hi,I got a problem with the Evaluate function.

I use it to verify the email adresse contianed in a field.I use @ValidateInternetAddress under Lotus Script. Called with Evaluate. The result returned indicates the email adddress is invalid BUT it is NOT invalid. For example “TOTO@dominoarea.org” is evaluated as invalid but it is not. The email address is contained in a field called “POINT_MAIL_RAPPORTEUR”.

eval = Evaluate ({@ValidateInternetAddress([Address822];POINT_MAIL_RAPPORTEUR)}, doc)

If Not Isnull (eval) Then

  Messagebox   uidoc.FieldGetText("POINT_MAIL_RAPPORTEUR") & " : adresse internet invalide ! Courriel non envoyé.",_ 

  MB_OK,"Gestion des actes administratifs" 

  Exit Sub 

End If

Thank you for your kind help.

Subject: Evaluate @ValidateInternetAddress returns wrong result

First I would separate the @function from the evaluate so that you are sure where the problem lies. If the @function is working fine on its own then you know the issue is with your usage of EVALUATE.

I think this might be because EVALUATE returns an array variant. If that is the case then try looking at the first element of what is returned.

Subject: RE: Evaluate @ValidateInternetAddress returns wrong result

I solved it by using a function :Public Function ValidateInternetAddress_LS (Address As String) As Integer

’ cet fonction détermine si l’adresse passé en paramêtre est une adresse internet valide

Dim Like1 As String

Dim Like2 As String

Dim Like3 As String

Dim Like4 As String

Dim nmName As NotesName

’ On Error Goto ErreurValidateInternetAddress_LS

Like1 =  "*[!a-z,!A-Z,!0-9,!@,!.,!_,-]*"    'liste des caracteres autorise

Like2 = "*@*@*"                                  'evite le double @

Like3 = "*?@?*.??"                 'l'adresse doit contnier au mois 2 caracteres avant et apres le @ et 3 caracteres apres le point

Like4 = "*?@?*.???"                          'l'adresse doit contnier au mois 2 caracteres avant et apres le @ et 2 caracteres apres le point

'Teste si une adresse est passe en parametre

If Trim(Address) = "" Then

	ValidateInternetAddress_LS  = False

	Exit Function

End If

'test si l’adresse possede un format ADR821 : xxxxx@xxxxx.xxx

Set nmName = New NotesName(Address)

If Trim(nmName.Addr821) = "" Then

	ValidateInternetAddress_LS  = False

	Exit Function

End If

'Teste les caracteres autorises

If nmName.Addr821 Like Like1 Then

	ValidateInternetAddress_LS  = False

	Exit Function

End If

'Teste s’il y a plus d’une fois le @

If nmName.Addr821 Like Like2 Then

	ValidateInternetAddress_LS  = False

	Exit Function

End If

'test si formatage

If nmName.Addr821 Like Like3 Then

	ValidateInternetAddress_LS  = True

Else

	If nmName.Addr821 Like Like4 Then

		ValidateInternetAddress_LS  = True

	Else

		ValidateInternetAddress_LS = False

		Exit Function

	End If

End If



Exit Function

End Function

Subject: Evaluate @ValidateInternetAddress returns wrong result

I think this is just confusing in the help files - it’ll actually return an empty string if validation is successful, and you do need to check the return value as an array. So use:

If eval(0)<>“” THen

messagebox …

Exit sub

End If