At 12:58 12/6/2010, W. D. wrote: >At 12:30 12/6/2010, Ross Dickson wrote: >>WD, >> >>One way is to create several calculated fields, each comprising one >of the criteria. >>So, you have the following fields: Thanks for your help, Ross. Here's what I came up with. Hope it saves someone some time & effort: // Much of this is based on following links and other // FileMaker code: // // <http://haacked.com/archive/2007/08/21/i-knew-how-to-validate-an-email-address-until-i.aspx> // // <http://www.regular-expressions.info/email.html> // // <http://www.google.com/search?q=RFC+2822> Field Name Field Type Formula / Entry Option SerialRecordNum Number Serial Number with Current Value: "1" Increment: "1" Prevent data that is automatically entered from being changed. Do not allow user to override validation Unique values only Strict data type: "Numeric Only" SortIndex Number Serial Number with Current Value: "1" Increment: "1" Do not allow user to override validation Unique values only Strict data type: "Numeric Only" Indexed CreationDate Date Auto-enter the: "Creation Date" Prevent data that is automatically entered from being changed. Required value CreationTime Time Auto-enter the: "Creation Time" Prevent data that is automatically entered from being changed. CreationPerson Text Auto-enter the: "Creator Name" Prevent data that is automatically entered from being changed. ModifyDate Date Auto-enter the: "Modification Date" Indexed ModifyTime Time Auto-enter the: "Modification Time" ModifyPerson Text Auto-enter the: "Modifier Name" EmailAddress Text Indexed EmailLength Calculation (Number) = Length(EmailAddress) LeftPart Calculation (Text) Indexed = Left(EmailAddress,(Position( EmailAddress,"@",1,1) -1)) RightPart Calculation (Text) Indexed = Right(EmailAddress,( EmailLength-Position( EmailAddress,"@",1,1))) TopLevelDomain Calculation (Text) Indexed = MiddleWords(Substitute(Middle( EmailAddress, Position(EmailAddress, "@", 1, 1)+1, EmailLength),"."," "), WordCount(Substitute(Middle( EmailAddress,Position(EmailAddress, "@", 1, 1)+1,EmailLength),"."," ")), 1) TLDUpper Calculation (Text) = Upper(TopLevelDomain) TLDplusDot Calculation (Text) = "." & TLDUpper TLDLower Calculation (Text) = Lower(TopLevelDomain) DomainName Calculation (Text) Indexed = If( WordCount(Substitute(Middle( EmailAddress,Position(EmailAddress, "@", 1, 1)+1, EmailLength),"."," " ))>=2, MiddleWords( Substitute(Middle( EmailAddress, Position( EmailAddress, "@", 1, 1)+1, EmailLength),"."," "), WordCount(Substitute(Middle( EmailAddress, Position( EmailAddress, "@", 1, 1)+1, EmailLength),"."," "))-1, 1) & ".", "") & MiddleWords(Substitute( Middle( EmailAddress, Position( EmailAddress, "@", 1, 1)+1, EmailLength), "."," "), WordCount(Substitute(Middle( EmailAddress, Position(EmailAddress, "@", 1, 1)+1, EmailLength),"."," ")), 1) DomainNmUpper Calculation (Text) Indexed = Upper(DomainName) LeftPartUpper Calculation (Text) Indexed = Upper(LeftPart) NumberOfSpaces Calculation (Number) Indexed = PatternCount(EmailAddress, " " ) NumberOfDoubleDots Calculation (Number) Indexed = PatternCount(EmailAddress, ".." ) NumberOfATs Calculation (Number) Indexed = PatternCount(EmailAddress, "@" ) NumberOfDotATs Calculation (Number) Indexed = PatternCount(EmailAddress, ".@" ) NumberOfATDots Calculation (Number) Indexed = PatternCount(EmailAddress, "@." ) TLDisOnList1 Calculation (Text) = Case( TLDUpper="AC","TRUE", TLDUpper="AD","TRUE", TLDUpper="AE","TRUE", TLDUpper="AERO","TRUE", TLDUpper="AF","TRUE", TLDUpper="AG","TRUE", TLDUpper="AI","TRUE", TLDUpper="AL","TRUE", TLDUpper="AM","TRUE", TLDUpper="AN","TRUE", TLDUpper="AO","TRUE", TLDUpper="AQ","TRUE", TLDUpper="AR","TRUE", TLDUpper="ARPA","TRUE", TLDUpper="AS","TRUE", TLDUpper="ASIA","TRUE", TLDUpper="AT","TRUE", TLDUpper="AU","TRUE", TLDUpper="AW","TRUE", TLDUpper="AX","TRUE", TLDUpper="AZ","TRUE", TLDUpper="BA","TRUE", TLDUpper="BB","TRUE", TLDUpper="BD","TRUE", TLDUpper="BE","TRUE", TLDUpper="BF","TRUE", TLDUpper="BG","TRUE", TLDUpper="BH","TRUE", TLDUpper="BI","TRUE", TLDUpper="BIZ","TRUE", TLDUpper="BJ","TRUE", TLDUpper="BM","TRUE", TLDUpper="BN","TRUE", TLDUpper="BO","TRUE", TLDUpper="BR","TRUE", TLDUpper="BS","TRUE", TLDUpper="BT","TRUE", TLDUpper="BV","TRUE", TLDUpper="BW","TRUE", TLDUpper="BY","TRUE", TLDUpper="BZ","TRUE", TLDUpper="CA","TRUE", TLDUpper="CAT","TRUE", TLDUpper="CC","TRUE", TLDUpper="CD","TRUE", TLDUpper="CF","TRUE", TLDUpper="CG","TRUE", TLDUpper="CH","TRUE", TLDUpper="CI","TRUE", "FALSE" ) TLDisOnList2 Calculation (Text) = Case( TLDUpper="CK","TRUE", TLDUpper="CL","TRUE", TLDUpper="CM","TRUE", TLDUpper="CN","TRUE", TLDUpper="CO","TRUE", TLDUpper="COM","TRUE", TLDUpper="COOP","TRUE", TLDUpper="CR","TRUE", TLDUpper="CU","TRUE", TLDUpper="CV","TRUE", TLDUpper="CX","TRUE", TLDUpper="CY","TRUE", TLDUpper="CZ","TRUE", TLDUpper="DE","TRUE", TLDUpper="DJ","TRUE", TLDUpper="DK","TRUE", TLDUpper="DM","TRUE", TLDUpper="DO","TRUE", TLDUpper="DZ","TRUE", TLDUpper="EC","TRUE", TLDUpper="EDU","TRUE", TLDUpper="EE","TRUE", TLDUpper="EG","TRUE", TLDUpper="ER","TRUE", TLDUpper="ES","TRUE", TLDUpper="ET","TRUE", TLDUpper="EU","TRUE", TLDUpper="FI","TRUE", TLDUpper="FJ","TRUE", TLDUpper="FK","TRUE", TLDUpper="FM","TRUE", TLDUpper="FO","TRUE", TLDUpper="FR","TRUE", TLDUpper="GA","TRUE", TLDUpper="GB","TRUE", TLDUpper="GD","TRUE", TLDUpper="GE","TRUE", TLDUpper="GF","TRUE", TLDUpper="GG","TRUE", TLDUpper="GH","TRUE", TLDUpper="GI","TRUE", TLDUpper="GL","TRUE", TLDUpper="GM","TRUE", TLDUpper="GN","TRUE", TLDUpper="GOV","TRUE", TLDUpper="GP","TRUE", TLDUpper="GQ","TRUE", TLDUpper="GR","TRUE", "FALSE" ) TLDisOnList3 Calculation (Text) = Case( TLDUpper="GS","TRUE", TLDUpper="GT","TRUE", TLDUpper="GU","TRUE", TLDUpper="GW","TRUE", TLDUpper="GY","TRUE", TLDUpper="HK","TRUE", TLDUpper="HM","TRUE", TLDUpper="HN","TRUE", TLDUpper="HR","TRUE", TLDUpper="HT","TRUE", TLDUpper="HU","TRUE", TLDUpper="ID","TRUE", TLDUpper="IE","TRUE", TLDUpper="IL","TRUE", TLDUpper="IM","TRUE", TLDUpper="IN","TRUE", TLDUpper="INFO","TRUE", TLDUpper="INT","TRUE", TLDUpper="IO","TRUE", TLDUpper="IQ","TRUE", TLDUpper="IR","TRUE", TLDUpper="IS","TRUE", TLDUpper="IT","TRUE", TLDUpper="JE","TRUE", TLDUpper="JM","TRUE", TLDUpper="JO","TRUE", TLDUpper="JOBS","TRUE", TLDUpper="JP","TRUE", TLDUpper="KE","TRUE", TLDUpper="KG","TRUE", TLDUpper="KH","TRUE", TLDUpper="KI","TRUE", TLDUpper="KM","TRUE", TLDUpper="KN","TRUE", TLDUpper="KP","TRUE", TLDUpper="KR","TRUE", TLDUpper="KW","TRUE", TLDUpper="KY","TRUE", TLDUpper="KZ","TRUE", TLDUpper="LA","TRUE", TLDUpper="LB","TRUE", TLDUpper="LC","TRUE", TLDUpper="LI","TRUE", TLDUpper="LK","TRUE", TLDUpper="LR","TRUE", TLDUpper="LS","TRUE", TLDUpper="LT","TRUE", TLDUpper="LU","TRUE", TLDUpper="LV","TRUE", TLDUpper="LY","TRUE", "FALSE" ) TLDisOnList4 Calculation (Text) = Case( TLDUpper="MA","TRUE", TLDUpper="MC","TRUE", TLDUpper="MD","TRUE", TLDUpper="ME","TRUE", TLDUpper="MG","TRUE", TLDUpper="MH","TRUE", TLDUpper="MIL","TRUE", TLDUpper="MK","TRUE", TLDUpper="ML","TRUE", TLDUpper="MM","TRUE", TLDUpper="MN","TRUE", TLDUpper="MO","TRUE", TLDUpper="MOBI","TRUE", TLDUpper="MP","TRUE", TLDUpper="MQ","TRUE", TLDUpper="MR","TRUE", TLDUpper="MS","TRUE", TLDUpper="MT","TRUE", TLDUpper="MU","TRUE", TLDUpper="MUSEUM","TRUE", TLDUpper="MV","TRUE", TLDUpper="MW","TRUE", TLDUpper="MX","TRUE", TLDUpper="MY","TRUE", TLDUpper="MZ","TRUE", TLDUpper="NA","TRUE", TLDUpper="NAME","TRUE", TLDUpper="NC","TRUE", TLDUpper="NE","TRUE", TLDUpper="NET","TRUE", TLDUpper="NF","TRUE", TLDUpper="NG","TRUE", TLDUpper="NI","TRUE", TLDUpper="NL","TRUE", TLDUpper="NO","TRUE", TLDUpper="NP","TRUE", TLDUpper="NR","TRUE", TLDUpper="NU","TRUE", TLDUpper="NZ","TRUE", TLDUpper="OM","TRUE", TLDUpper="ORG","TRUE", TLDUpper="PA","TRUE", TLDUpper="PE","TRUE", TLDUpper="PF","TRUE", TLDUpper="PG","TRUE", TLDUpper="PH","TRUE", TLDUpper="PK","TRUE", TLDUpper="PL","TRUE", TLDUpper="PM","TRUE", TLDUpper="PN","TRUE", "FALSE" ) TLDisOnList5 Calculation (Text) = Case( TLDUpper="PR","TRUE", TLDUpper="PRO","TRUE", TLDUpper="PS","TRUE", TLDUpper="PT","TRUE", TLDUpper="PW","TRUE", TLDUpper="PY","TRUE", TLDUpper="QA","TRUE", TLDUpper="RE","TRUE", TLDUpper="RO","TRUE", TLDUpper="RS","TRUE", TLDUpper="RU","TRUE", TLDUpper="RW","TRUE", TLDUpper="SA","TRUE", TLDUpper="SB","TRUE", TLDUpper="SC","TRUE", TLDUpper="SD","TRUE", TLDUpper="SE","TRUE", TLDUpper="SG","TRUE", TLDUpper="SH","TRUE", TLDUpper="SI","TRUE", TLDUpper="SJ","TRUE", TLDUpper="SK","TRUE", TLDUpper="SL","TRUE", TLDUpper="SM","TRUE", TLDUpper="SN","TRUE", TLDUpper="SO","TRUE", TLDUpper="SR","TRUE", TLDUpper="ST","TRUE", TLDUpper="SU","TRUE", TLDUpper="SV","TRUE", TLDUpper="SY","TRUE", TLDUpper="SZ","TRUE", TLDUpper="TC","TRUE", TLDUpper="TD","TRUE", TLDUpper="TEL","TRUE", TLDUpper="TF","TRUE", TLDUpper="TG","TRUE", TLDUpper="TH","TRUE", TLDUpper="TJ","TRUE", TLDUpper="TK","TRUE", TLDUpper="TL","TRUE", TLDUpper="TM","TRUE", TLDUpper="TN","TRUE", TLDUpper="TO","TRUE", TLDUpper="TP","TRUE", TLDUpper="TR","TRUE", TLDUpper="TRAVEL","TRUE", TLDUpper="TT","TRUE", TLDUpper="TV","TRUE", TLDUpper="TW","TRUE", "FALSE" ) TLDisOnList6 Calculation (Text) = Case( TLDUpper="TZ","TRUE", TLDUpper="UA","TRUE", TLDUpper="UG","TRUE", TLDUpper="UK","TRUE", TLDUpper="US","TRUE", TLDUpper="UY","TRUE", TLDUpper="UZ","TRUE", TLDUpper="VA","TRUE", TLDUpper="VC","TRUE", TLDUpper="VE","TRUE", TLDUpper="VG","TRUE", TLDUpper="VI","TRUE", TLDUpper="VN","TRUE", TLDUpper="VU","TRUE", TLDUpper="WF","TRUE", TLDUpper="WS","TRUE", TLDUpper="XN--0ZWM56D","TRUE", TLDUpper="XN--11B5BS3A9AJ6G","TRUE", TLDUpper="XN--3E0B707E","TRUE", TLDUpper="XN--45BRJ9C","TRUE", TLDUpper="XN--80AKHBYKNJ4F","TRUE", TLDUpper="XN--9T4B11YI5A","TRUE", TLDUpper="XN--DEBA0AD","TRUE", TLDUpper="XN--FIQS8S","TRUE", TLDUpper="XN--FIQZ9S","TRUE", TLDUpper="XN--FPCRJ9C3D","TRUE", TLDUpper="XN--FZC2C9E2C","TRUE", TLDUpper="XN--G6W251D","TRUE", TLDUpper="XN--GECRJ9C","TRUE", TLDUpper="XN--H2BRJ9C","TRUE", TLDUpper="XN--HGBK6AJ7F53BBA","TRUE", TLDUpper="XN--HLCJ6AYA9ESC7A","TRUE", TLDUpper="XN--J6W193G","TRUE", TLDUpper="XN--JXALPDLP","TRUE", TLDUpper="XN--KGBECHTV","TRUE", TLDUpper="XN--KPRW13D","TRUE", TLDUpper="XN--KPRY57D","TRUE", TLDUpper="XN--MGBAAM7A8H","TRUE", TLDUpper="XN--MGBAYH7GPA","TRUE", TLDUpper="XN--MGBBH1A71E","TRUE", TLDUpper="XN--MGBERP4A5D4AR","TRUE", TLDUpper="XN--O3CW4H","TRUE", TLDUpper="XN--OGBPF8FL","TRUE", TLDUpper="XN--P1AI","TRUE", TLDUpper="XN--PGBS0DH","TRUE", TLDUpper="XN--S9BRJ9C","TRUE", TLDUpper="XN--WGBH1C","TRUE", TLDUpper="XN--WGBL6A","TRUE", TLDUpper="XN--XKC2AL3HYE2A","TRUE", TLDUpper="XN--XKC2DL3A5EE0H","TRUE", "FALSE" ) TLDisOnList7 Calculation (Text) = Case( TLDUpper="XN--YFRO4I67O","TRUE", TLDUpper="XN--YGBI2AMMX","TRUE", TLDUpper="XN--ZCKZAH","TRUE", TLDUpper="YE","TRUE", TLDUpper="YT","TRUE", TLDUpper="ZA","TRUE", TLDUpper="ZM","TRUE", TLDUpper="ZW","TRUE", "FALSE" ) TLDisOnList Calculation (Text) Indexed = Case( TLDisOnList1,"TRUE", TLDisOnList2,"TRUE", TLDisOnList3,"TRUE", TLDisOnList4,"TRUE", TLDisOnList5,"TRUE", TLDisOnList6,"TRUE", TLDisOnList7,"TRUE", "FALSE" ) RightPartWODomainName Calculation (Text) Indexed = Substitute(RightPart, DomainName, "") Subdomain Calculation (Text) = If(Right(RightPartWODomainName, 1) = ".",Middle(RightPartWODomainName, 1, Length(RightPartWODomainName) - 1), "") LeftPartValidChars Calculation (Number) = PatternCount(LeftPartUpper,"A") + PatternCount(LeftPartUpper,"B") + PatternCount(LeftPartUpper,"C") + PatternCount(LeftPartUpper,"D") + PatternCount(LeftPartUpper,"E") + PatternCount(LeftPartUpper,"F") + PatternCount(LeftPartUpper,"G") + PatternCount(LeftPartUpper,"H") + PatternCount(LeftPartUpper,"I") + PatternCount(LeftPartUpper,"J") + PatternCount(LeftPartUpper,"K") + PatternCount(LeftPartUpper,"L") + PatternCount(LeftPartUpper,"M") + PatternCount(LeftPartUpper,"N") + PatternCount(LeftPartUpper,"O") + PatternCount(LeftPartUpper,"P") + PatternCount(LeftPartUpper,"Q") + PatternCount(LeftPartUpper,"R") + PatternCount(LeftPartUpper,"S") + PatternCount(LeftPartUpper,"T") + PatternCount(LeftPartUpper,"U") + PatternCount(LeftPartUpper,"V") + PatternCount(LeftPartUpper,"W") + PatternCount(LeftPartUpper,"X") + PatternCount(LeftPartUpper,"Y") + PatternCount(LeftPartUpper,"Z") + PatternCount(LeftPartUpper,"0") + PatternCount(LeftPartUpper,"1") + PatternCount(LeftPartUpper,"2") + PatternCount(LeftPartUpper,"3") + PatternCount(LeftPartUpper,"4") + PatternCount(LeftPartUpper,"5") + PatternCount(LeftPartUpper,"6") + PatternCount(LeftPartUpper,"7") + PatternCount(LeftPartUpper,"8") + PatternCount(LeftPartUpper,"9") + PatternCount(LeftPartUpper,".") + PatternCount(LeftPartUpper,"_") + PatternCount(LeftPartUpper,"%") + PatternCount(LeftPartUpper,"+") + PatternCount(LeftPartUpper,"-") + PatternCount(LeftPartUpper,"*") + PatternCount(LeftPartUpper,"'") + PatternCount(LeftPartUpper,"&") LeftPartIsValid Calculation (Text) Indexed = Case(LeftPartValidChars = Length( LeftPart), "TRUE", "FALSE") LeftPartNonSuspiciousChars Calculation (Number) = PatternCount(LeftPartUpper,"A") + PatternCount(LeftPartUpper,"B") + PatternCount(LeftPartUpper,"C") + PatternCount(LeftPartUpper,"D") + PatternCount(LeftPartUpper,"E") + PatternCount(LeftPartUpper,"F") + PatternCount(LeftPartUpper,"G") + PatternCount(LeftPartUpper,"H") + PatternCount(LeftPartUpper,"I") + PatternCount(LeftPartUpper,"J") + PatternCount(LeftPartUpper,"K") + PatternCount(LeftPartUpper,"L") + PatternCount(LeftPartUpper,"M") + PatternCount(LeftPartUpper,"N") + PatternCount(LeftPartUpper,"O") + PatternCount(LeftPartUpper,"P") + PatternCount(LeftPartUpper,"Q") + PatternCount(LeftPartUpper,"R") + PatternCount(LeftPartUpper,"S") + PatternCount(LeftPartUpper,"T") + PatternCount(LeftPartUpper,"U") + PatternCount(LeftPartUpper,"V") + PatternCount(LeftPartUpper,"W") + PatternCount(LeftPartUpper,"X") + PatternCount(LeftPartUpper,"Y") + PatternCount(LeftPartUpper,"Z") + PatternCount(LeftPartUpper,"0") + PatternCount(LeftPartUpper,"1") + PatternCount(LeftPartUpper,"2") + PatternCount(LeftPartUpper,"3") + PatternCount(LeftPartUpper,"4") + PatternCount(LeftPartUpper,"5") + PatternCount(LeftPartUpper,"6") + PatternCount(LeftPartUpper,"7") + PatternCount(LeftPartUpper,"8") + PatternCount(LeftPartUpper,"9") + PatternCount(LeftPartUpper,".") + PatternCount(LeftPartUpper,"_") + PatternCount(LeftPartUpper,"-") LeftPartNonSuspiciousChars Calculation (Number) = PatternCount(LeftPartUpper,"A") + PatternCount(LeftPartUpper,"B") + PatternCount(LeftPartUpper,"C") + PatternCount(LeftPartUpper,"D") + PatternCount(LeftPartUpper,"E") + PatternCount(LeftPartUpper,"F") + PatternCount(LeftPartUpper,"G") + PatternCount(LeftPartUpper,"H") + PatternCount(LeftPartUpper,"I") + PatternCount(LeftPartUpper,"J") + PatternCount(LeftPartUpper,"K") + PatternCount(LeftPartUpper,"L") + PatternCount(LeftPartUpper,"M") + PatternCount(LeftPartUpper,"N") + PatternCount(LeftPartUpper,"O") + PatternCount(LeftPartUpper,"P") + PatternCount(LeftPartUpper,"Q") + PatternCount(LeftPartUpper,"R") + PatternCount(LeftPartUpper,"S") + PatternCount(LeftPartUpper,"T") + PatternCount(LeftPartUpper,"U") + PatternCount(LeftPartUpper,"V") + PatternCount(LeftPartUpper,"W") + PatternCount(LeftPartUpper,"X") + PatternCount(LeftPartUpper,"Y") + PatternCount(LeftPartUpper,"Z") + PatternCount(LeftPartUpper,"0") + PatternCount(LeftPartUpper,"1") + PatternCount(LeftPartUpper,"2") + PatternCount(LeftPartUpper,"3") + PatternCount(LeftPartUpper,"4") + PatternCount(LeftPartUpper,"5") + PatternCount(LeftPartUpper,"6") + PatternCount(LeftPartUpper,"7") + PatternCount(LeftPartUpper,"8") + PatternCount(LeftPartUpper,"9") + PatternCount(LeftPartUpper,".") + PatternCount(LeftPartUpper,"_") + PatternCount(LeftPartUpper,"-") LeftPartIsSuspicious Calculation (Text) Indexed = Case(LeftPartNonSuspiciousChars = Length(LeftPart), "FALSE", "TRUE") DomainPart Calculation (Text) = Substitute(DomainNmUpper, TLDplusDot, "") DomainPartValidChars Calculation (Number) = PatternCount(DomainPart,"A") + PatternCount(DomainPart,"B") + PatternCount(DomainPart,"C") + PatternCount(DomainPart,"D") + PatternCount(DomainPart,"E") + PatternCount(DomainPart,"F") + PatternCount(DomainPart,"G") + PatternCount(DomainPart,"H") + PatternCount(DomainPart,"I") + PatternCount(DomainPart,"J") + PatternCount(DomainPart,"K") + PatternCount(DomainPart,"L") + PatternCount(DomainPart,"M") + PatternCount(DomainPart,"N") + PatternCount(DomainPart,"O") + PatternCount(DomainPart,"P") + PatternCount(DomainPart,"Q") + PatternCount(DomainPart,"R") + PatternCount(DomainPart,"S") + PatternCount(DomainPart,"T") + PatternCount(DomainPart,"U") + PatternCount(DomainPart,"V") + PatternCount(DomainPart,"W") + PatternCount(DomainPart,"X") + PatternCount(DomainPart,"Y") + PatternCount(DomainPart,"Z") + PatternCount(DomainPart,"0") + PatternCount(DomainPart,"1") + PatternCount(DomainPart,"2") + PatternCount(DomainPart,"3") + PatternCount(DomainPart,"4") + PatternCount(DomainPart,"5") + PatternCount(DomainPart,"6") + PatternCount(DomainPart,"7") + PatternCount(DomainPart,"8") + PatternCount(DomainPart,"9") + PatternCount(DomainPart,"-") DomainPartFirstChar Calculation (Text) = Left(DomainPart,1) DomainPartLastChar Calculation (Text) = Right(DomainPart,1) DomainPartIsValid Calculation (Text) Indexed = Case( DomainPartFirstChar = "-", "FALSE", DomainPartLastChar = "-", "FALSE", DomainPartValidChars = Length( DomainPart), "TRUE","FALSE") EmailAddressIsValid Calculation (Text) Indexed = Case( TLDisOnList = "FALSE","FALSE", LeftPartIsValid = "FALSE","FALSE", DomainPartIsValid = "FALSE","FALSE", NumberOfSpaces > 0, "FALSE", NumberOfDotATs > 0, "FALSE", NumberOfATDots > 0, "FALSE", NumberOfDoubleDots > 0, "FALSE", NumberOfATs > 1, "FALSE", "TRUE") EmailAddressIsSuspicious Calculation (Text) Indexed = Case( LeftPartIsSuspicious = "TRUE", "TRUE", TLDisOnList = "FALSE","TRUE", LeftPartIsValid = "FALSE","TRUE", DomainPartIsValid = "FALSE","TRUE", "FALSE") EmailAddressInvalidReasons Calculation (Text) Indexed = If(TLDisOnList = "FALSE", "TLD-Not-On-List ", "") & If(LeftPartIsValid = "FALSE", "Left-Part-Is-Not-Valid ", "") & If(DomainPartIsValid = "FALSE", "Domain-Part-Is-Not-Valid ", "") & If(NumberOfSpaces > 0, "Spaces-In-Email-Address ", "") & If((NumberOfDotATs > 0) or (NumberOfATDots > 0), "Dot-Next-To-@-Sign ", "") & If(NumberOfDoubleDots > 0, "Dots-Next-To-Each-Other ", "") & If(NumberOfATs > 1, "More-Than-One-@-Sign ", "") DisableDate Date DisableReason Text EmailAddressIsUsable Calculation (Text) Indexed = Case( EmailAddressIsValid = "FALSE","FALSE", DisableDate <> "","FALSE", DisableReason <> "","FALSE", "TRUE") QuestionableDate Date QuestionableReasons Text EmailAddressIsQuestionable Calculation (Text) Indexed = Case( EmailAddressIsSuspicious = "TRUE", "TRUE", QuestionableDate <> "","TRUE", QuestionableReasons <> "","TRUE", "FALSE") Start Here to Find It Fast!™ -> http://www.US-Webmasters.com/best-start-page/ $8.77 Domain Names -> http://domains.us-webmasters.com/