Multiple OR (||) Conditions in If Statement Announcing the arrival of Valued Associate #679: Cesar Manara Planned maintenance scheduled April 23, 2019 at 00:00UTC (8:00pm US/Eastern) 2019 Moderator Election Q&A - Questionnaire 2019 Community Moderator Election ResultsBug in List.contains for Id data type?Multiple conditions on rendered attributeMultiple conditions in visualforcehow to bulkify soql with multiple where conditionsMultiple OR conditions not working IF statementLimiting Number of Accounts for UserRun a Trigger only during weekdaysPublic Write Access allows for mass edits, how to throttle editable batch size for certain users for specific field?Methods to Check if Sobjects are EqualWhy does the trigger always read my if statement as null?SOQL Search function of Contact Name With Account Parent to Contact Child

Why should I vote and accept answers?

Chinese Seal on silk painting - what does it mean?

When a candle burns, why does the top of wick glow if bottom of flame is hottest?

Generate an RGB colour grid

Can a new player join a group only when a new campaign starts?

What is the font for "b" letter?

How could we fake a moon landing now?

How to install press fit bottom bracket into new frame

Sum letters are not two different

Hangman Game with C++

NumericArray versus PackedArray in MMA12

Does lack of seasonality imply random time series?

How often does castling occur in grandmaster games?

What do you call the main part of a joke?

Should I follow up with an employee I believe overracted to a mistake I made?

Why aren't air breathing engines used as small first stages?

Source for Esri sample data from 911 Hot Spot Analysis

Do I really need to have a message in a novel to appeal to readers?

What is the topology associated with the algebras for the ultrafilter monad?

Selecting user stories during sprint planning

Can anything be seen from the center of the Boötes void? How dark would it be?

Take 2! Is this homebrew Lady of Pain warlock patron balanced?

Significance of Cersei's obsession with elephants?

Most bit efficient text communication method?



Multiple OR (||) Conditions in If Statement



Announcing the arrival of Valued Associate #679: Cesar Manara
Planned maintenance scheduled April 23, 2019 at 00:00UTC (8:00pm US/Eastern)
2019 Moderator Election Q&A - Questionnaire
2019 Community Moderator Election ResultsBug in List.contains for Id data type?Multiple conditions on rendered attributeMultiple conditions in visualforcehow to bulkify soql with multiple where conditionsMultiple OR conditions not working IF statementLimiting Number of Accounts for UserRun a Trigger only during weekdaysPublic Write Access allows for mass edits, how to throttle editable batch size for certain users for specific field?Methods to Check if Sobjects are EqualWhy does the trigger always read my if statement as null?SOQL Search function of Contact Name With Account Parent to Contact Child



.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty margin-bottom:0;








1















Can anyone explain why the following If statement does not work with multiple OR conditions. The goal is when this trigger runs, if the user's Id who is updating the record is not equal to a specific Id, then an error is thrown. The If clause works only when I compare the current user's Id with a single specific Id.



 String currentUserId = UserInfo.getUserId();

if (currentUserId != 'XXXXXXXXX' || currentUserId != 'YYYYYYYYY' || currentUserId != 'ZZZZZZZZZ')
Trigger.new[0].addError('Only specific users are able to change the Account Classification Field');



EDIT FYI: I know I can accomplish this by using the following code, but I am curious as to why the OR operator is not working as I had expected.



 if (currentUserId != 'XXXXXXXXX') 
if (currentUserId != 'YYYYYYYYY')
if (currentUserId != 'ZZZZZZZZZ')
Trigger.new[0].addError('Only specific users are able to change the Account Classification Field');












share|improve this question






























    1















    Can anyone explain why the following If statement does not work with multiple OR conditions. The goal is when this trigger runs, if the user's Id who is updating the record is not equal to a specific Id, then an error is thrown. The If clause works only when I compare the current user's Id with a single specific Id.



     String currentUserId = UserInfo.getUserId();

    if (currentUserId != 'XXXXXXXXX' || currentUserId != 'YYYYYYYYY' || currentUserId != 'ZZZZZZZZZ')
    Trigger.new[0].addError('Only specific users are able to change the Account Classification Field');



    EDIT FYI: I know I can accomplish this by using the following code, but I am curious as to why the OR operator is not working as I had expected.



     if (currentUserId != 'XXXXXXXXX') 
    if (currentUserId != 'YYYYYYYYY')
    if (currentUserId != 'ZZZZZZZZZ')
    Trigger.new[0].addError('Only specific users are able to change the Account Classification Field');












    share|improve this question


























      1












      1








      1








      Can anyone explain why the following If statement does not work with multiple OR conditions. The goal is when this trigger runs, if the user's Id who is updating the record is not equal to a specific Id, then an error is thrown. The If clause works only when I compare the current user's Id with a single specific Id.



       String currentUserId = UserInfo.getUserId();

      if (currentUserId != 'XXXXXXXXX' || currentUserId != 'YYYYYYYYY' || currentUserId != 'ZZZZZZZZZ')
      Trigger.new[0].addError('Only specific users are able to change the Account Classification Field');



      EDIT FYI: I know I can accomplish this by using the following code, but I am curious as to why the OR operator is not working as I had expected.



       if (currentUserId != 'XXXXXXXXX') 
      if (currentUserId != 'YYYYYYYYY')
      if (currentUserId != 'ZZZZZZZZZ')
      Trigger.new[0].addError('Only specific users are able to change the Account Classification Field');












      share|improve this question
















      Can anyone explain why the following If statement does not work with multiple OR conditions. The goal is when this trigger runs, if the user's Id who is updating the record is not equal to a specific Id, then an error is thrown. The If clause works only when I compare the current user's Id with a single specific Id.



       String currentUserId = UserInfo.getUserId();

      if (currentUserId != 'XXXXXXXXX' || currentUserId != 'YYYYYYYYY' || currentUserId != 'ZZZZZZZZZ')
      Trigger.new[0].addError('Only specific users are able to change the Account Classification Field');



      EDIT FYI: I know I can accomplish this by using the following code, but I am curious as to why the OR operator is not working as I had expected.



       if (currentUserId != 'XXXXXXXXX') 
      if (currentUserId != 'YYYYYYYYY')
      if (currentUserId != 'ZZZZZZZZZ')
      Trigger.new[0].addError('Only specific users are able to change the Account Classification Field');









      apex trigger if






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited 4 hours ago







      Max Goldfarb

















      asked 5 hours ago









      Max GoldfarbMax Goldfarb

      133




      133




















          4 Answers
          4






          active

          oldest

          votes


















          2














          "OR" means "true if either value is true". If the ID is "XXXXXXXXX", for example, it will NOT be "YYYYYYYYY", therefore OR will result in a true value. You need to use "AND" (&&) instead, meaning "true only if both values are true."




          Side note: It's not enough to just put an error on Trigger.new[0]; there may be multiple records in the trigger context, and this can result in a "too many retries" error during bulk data operations.






          share|improve this answer























          • Maybe my logic is incorrect, but I believe do want "true if either [any] value is true" and not "true only if both values are true." Please correct me if I am wrong, but if I use the && operator than the error will be thrown only if the User's Id is equal to XXXXXXXXX, YYYYYYYYY, AND ZZZZZZZZZ?

            – Max Goldfarb
            4 hours ago











          • Then use == instead of != in your comparison.

            – Sebastian Kessel
            4 hours ago











          • That'd mean If the user is EQUAL to X OR Y OR Z. You have it written as if the user is DIFFERENT to X OR Y OR Z

            – Sebastian Kessel
            4 hours ago






          • 2





            @MaxGoldfarb You'll want to look at de Morgan's Laws. If the user Id must be one of three values, you would say "Id is equal to XXXXX OR YYYYY OR ZZZZZ".

            – sfdcfox
            4 hours ago











          • Awesome thanks for your help guys, I really appreciate it, @sfdcfox using the && operator seems to satisfy my requirements from my brief testing. Again, really appreciate you guys/girls help!

            – Max Goldfarb
            4 hours ago


















          1














          @sfdcfox is correct, Although I would do a



          !( (new List<String>'XXXX','YYYY','ZZZZ').contains(currentUserId) )


          Chaining a bunch of Logical OR's gets messy, especially if you need to add to the list in the future. I would make a public static variable of it to describe the classes permission if you plan on using that permission group you have there in more than one place.






          share|improve this answer























          • That's a really good idea, will probably do this. Thanks!

            – Max Goldfarb
            4 hours ago











          • If you want also you could make a property of the class and say something like Class.UserIsInAdminGroup

            – Zach Hutchins
            4 hours ago











          • I would look into this ticket if you are planning on using List<Id> salesforce.stackexchange.com/questions/224490/…. Theres a reason i use string because salesforce fixing things won't come in your or my lifetime

            – Zach Hutchins
            4 hours ago


















          1














          In programming,



          if (currentUserId != 'XXXXXXXXX' || currentUserId != 'YYYYYYYYY' || currentUserId != 'ZZZZZZZZZ') 


          means that, if at least any of the 3 conditions is TRUE, the full expression is TRUE.



          For a currentUserId='XXXXXXXXX', the expression is evaluated as




          currentUserId != 'XXXXXXXXX' ==> FALSE

          currentUserId != 'YYYYYYYYY' ==> TRUE

          currentUserId != 'ZZZZZZZZZ' ==> TRUE




          So, for currentUserId='XXXXXXXXX', it adds the error Only specific users are able to change the Account Classification Field, which is not desirable.



          It can be explained by De Morgan's Law.




          Not (A and B) is the same as Not A or Not B.



          Not (A or B) is the same as Not A and Not B.




          In your case,




          currentUserId NOT ('XXXXXXXXX' OR 'YYYYYYYYY' OR 'ZZZZZZZZZ')




          which can be written as




          currentUserId NOT 'XXXXXXXXX' AND currentUserId NOT 'YYYYYYYYY' AND currentUserId NOT 'ZZZZZZZZZ'







          share|improve this answer






























            1














            While your logic will always return true because the value is always not one of the three values, correcting this code by inverting || to && would be missing the point that there is a better way to filter logic so it is specific to a subset of users. The two most ideal ways to code for this so that it is configurable are Custom Permissions and Hierarchy Custom Settings.



            Custom Permissions



            1. Create a Custom Permission named e.g. CanDoOperationX.

            2. Create a Permission Set which contains only this permission.

            3. Assign this Permission Set to each User in your whitelist.

            4. Update your condition to check FeatureManagement.checkPermission('CanDoOperationX')

            Hierarchy Custom Setting



            This option doesn't make as much sense unless you have other user specific overrides for this functionality, but it is certainly viable.



            1. Create a Hierarchy Custom Setting named e.g. MyTriggerSettings.

            2. Add a Checkbox field named e.g. Can_Do_Operation_X__c.

            3. Create a new record in this setting for each User in your whitelist.

            4. Update your condition to check $MyTriggerSettings__c.getInstance().Can_Do_Operation_X__c.





            share|improve this answer























              Your Answer








              StackExchange.ready(function()
              var channelOptions =
              tags: "".split(" "),
              id: "459"
              ;
              initTagRenderer("".split(" "), "".split(" "), channelOptions);

              StackExchange.using("externalEditor", function()
              // Have to fire editor after snippets, if snippets enabled
              if (StackExchange.settings.snippets.snippetsEnabled)
              StackExchange.using("snippets", function()
              createEditor();
              );

              else
              createEditor();

              );

              function createEditor()
              StackExchange.prepareEditor(
              heartbeatType: 'answer',
              autoActivateHeartbeat: false,
              convertImagesToLinks: false,
              noModals: true,
              showLowRepImageUploadWarning: true,
              reputationToPostImages: null,
              bindNavPrevention: true,
              postfix: "",
              imageUploader:
              brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
              contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
              allowUrls: true
              ,
              onDemand: true,
              discardSelector: ".discard-answer"
              ,immediatelyShowMarkdownHelp:true
              );



              );













              draft saved

              draft discarded


















              StackExchange.ready(
              function ()
              StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fsalesforce.stackexchange.com%2fquestions%2f258350%2fmultiple-or-conditions-in-if-statement%23new-answer', 'question_page');

              );

              Post as a guest















              Required, but never shown

























              4 Answers
              4






              active

              oldest

              votes








              4 Answers
              4






              active

              oldest

              votes









              active

              oldest

              votes






              active

              oldest

              votes









              2














              "OR" means "true if either value is true". If the ID is "XXXXXXXXX", for example, it will NOT be "YYYYYYYYY", therefore OR will result in a true value. You need to use "AND" (&&) instead, meaning "true only if both values are true."




              Side note: It's not enough to just put an error on Trigger.new[0]; there may be multiple records in the trigger context, and this can result in a "too many retries" error during bulk data operations.






              share|improve this answer























              • Maybe my logic is incorrect, but I believe do want "true if either [any] value is true" and not "true only if both values are true." Please correct me if I am wrong, but if I use the && operator than the error will be thrown only if the User's Id is equal to XXXXXXXXX, YYYYYYYYY, AND ZZZZZZZZZ?

                – Max Goldfarb
                4 hours ago











              • Then use == instead of != in your comparison.

                – Sebastian Kessel
                4 hours ago











              • That'd mean If the user is EQUAL to X OR Y OR Z. You have it written as if the user is DIFFERENT to X OR Y OR Z

                – Sebastian Kessel
                4 hours ago






              • 2





                @MaxGoldfarb You'll want to look at de Morgan's Laws. If the user Id must be one of three values, you would say "Id is equal to XXXXX OR YYYYY OR ZZZZZ".

                – sfdcfox
                4 hours ago











              • Awesome thanks for your help guys, I really appreciate it, @sfdcfox using the && operator seems to satisfy my requirements from my brief testing. Again, really appreciate you guys/girls help!

                – Max Goldfarb
                4 hours ago















              2














              "OR" means "true if either value is true". If the ID is "XXXXXXXXX", for example, it will NOT be "YYYYYYYYY", therefore OR will result in a true value. You need to use "AND" (&&) instead, meaning "true only if both values are true."




              Side note: It's not enough to just put an error on Trigger.new[0]; there may be multiple records in the trigger context, and this can result in a "too many retries" error during bulk data operations.






              share|improve this answer























              • Maybe my logic is incorrect, but I believe do want "true if either [any] value is true" and not "true only if both values are true." Please correct me if I am wrong, but if I use the && operator than the error will be thrown only if the User's Id is equal to XXXXXXXXX, YYYYYYYYY, AND ZZZZZZZZZ?

                – Max Goldfarb
                4 hours ago











              • Then use == instead of != in your comparison.

                – Sebastian Kessel
                4 hours ago











              • That'd mean If the user is EQUAL to X OR Y OR Z. You have it written as if the user is DIFFERENT to X OR Y OR Z

                – Sebastian Kessel
                4 hours ago






              • 2





                @MaxGoldfarb You'll want to look at de Morgan's Laws. If the user Id must be one of three values, you would say "Id is equal to XXXXX OR YYYYY OR ZZZZZ".

                – sfdcfox
                4 hours ago











              • Awesome thanks for your help guys, I really appreciate it, @sfdcfox using the && operator seems to satisfy my requirements from my brief testing. Again, really appreciate you guys/girls help!

                – Max Goldfarb
                4 hours ago













              2












              2








              2







              "OR" means "true if either value is true". If the ID is "XXXXXXXXX", for example, it will NOT be "YYYYYYYYY", therefore OR will result in a true value. You need to use "AND" (&&) instead, meaning "true only if both values are true."




              Side note: It's not enough to just put an error on Trigger.new[0]; there may be multiple records in the trigger context, and this can result in a "too many retries" error during bulk data operations.






              share|improve this answer













              "OR" means "true if either value is true". If the ID is "XXXXXXXXX", for example, it will NOT be "YYYYYYYYY", therefore OR will result in a true value. You need to use "AND" (&&) instead, meaning "true only if both values are true."




              Side note: It's not enough to just put an error on Trigger.new[0]; there may be multiple records in the trigger context, and this can result in a "too many retries" error during bulk data operations.







              share|improve this answer












              share|improve this answer



              share|improve this answer










              answered 4 hours ago









              sfdcfoxsfdcfox

              266k13212459




              266k13212459












              • Maybe my logic is incorrect, but I believe do want "true if either [any] value is true" and not "true only if both values are true." Please correct me if I am wrong, but if I use the && operator than the error will be thrown only if the User's Id is equal to XXXXXXXXX, YYYYYYYYY, AND ZZZZZZZZZ?

                – Max Goldfarb
                4 hours ago











              • Then use == instead of != in your comparison.

                – Sebastian Kessel
                4 hours ago











              • That'd mean If the user is EQUAL to X OR Y OR Z. You have it written as if the user is DIFFERENT to X OR Y OR Z

                – Sebastian Kessel
                4 hours ago






              • 2





                @MaxGoldfarb You'll want to look at de Morgan's Laws. If the user Id must be one of three values, you would say "Id is equal to XXXXX OR YYYYY OR ZZZZZ".

                – sfdcfox
                4 hours ago











              • Awesome thanks for your help guys, I really appreciate it, @sfdcfox using the && operator seems to satisfy my requirements from my brief testing. Again, really appreciate you guys/girls help!

                – Max Goldfarb
                4 hours ago

















              • Maybe my logic is incorrect, but I believe do want "true if either [any] value is true" and not "true only if both values are true." Please correct me if I am wrong, but if I use the && operator than the error will be thrown only if the User's Id is equal to XXXXXXXXX, YYYYYYYYY, AND ZZZZZZZZZ?

                – Max Goldfarb
                4 hours ago











              • Then use == instead of != in your comparison.

                – Sebastian Kessel
                4 hours ago











              • That'd mean If the user is EQUAL to X OR Y OR Z. You have it written as if the user is DIFFERENT to X OR Y OR Z

                – Sebastian Kessel
                4 hours ago






              • 2





                @MaxGoldfarb You'll want to look at de Morgan's Laws. If the user Id must be one of three values, you would say "Id is equal to XXXXX OR YYYYY OR ZZZZZ".

                – sfdcfox
                4 hours ago











              • Awesome thanks for your help guys, I really appreciate it, @sfdcfox using the && operator seems to satisfy my requirements from my brief testing. Again, really appreciate you guys/girls help!

                – Max Goldfarb
                4 hours ago
















              Maybe my logic is incorrect, but I believe do want "true if either [any] value is true" and not "true only if both values are true." Please correct me if I am wrong, but if I use the && operator than the error will be thrown only if the User's Id is equal to XXXXXXXXX, YYYYYYYYY, AND ZZZZZZZZZ?

              – Max Goldfarb
              4 hours ago





              Maybe my logic is incorrect, but I believe do want "true if either [any] value is true" and not "true only if both values are true." Please correct me if I am wrong, but if I use the && operator than the error will be thrown only if the User's Id is equal to XXXXXXXXX, YYYYYYYYY, AND ZZZZZZZZZ?

              – Max Goldfarb
              4 hours ago













              Then use == instead of != in your comparison.

              – Sebastian Kessel
              4 hours ago





              Then use == instead of != in your comparison.

              – Sebastian Kessel
              4 hours ago













              That'd mean If the user is EQUAL to X OR Y OR Z. You have it written as if the user is DIFFERENT to X OR Y OR Z

              – Sebastian Kessel
              4 hours ago





              That'd mean If the user is EQUAL to X OR Y OR Z. You have it written as if the user is DIFFERENT to X OR Y OR Z

              – Sebastian Kessel
              4 hours ago




              2




              2





              @MaxGoldfarb You'll want to look at de Morgan's Laws. If the user Id must be one of three values, you would say "Id is equal to XXXXX OR YYYYY OR ZZZZZ".

              – sfdcfox
              4 hours ago





              @MaxGoldfarb You'll want to look at de Morgan's Laws. If the user Id must be one of three values, you would say "Id is equal to XXXXX OR YYYYY OR ZZZZZ".

              – sfdcfox
              4 hours ago













              Awesome thanks for your help guys, I really appreciate it, @sfdcfox using the && operator seems to satisfy my requirements from my brief testing. Again, really appreciate you guys/girls help!

              – Max Goldfarb
              4 hours ago





              Awesome thanks for your help guys, I really appreciate it, @sfdcfox using the && operator seems to satisfy my requirements from my brief testing. Again, really appreciate you guys/girls help!

              – Max Goldfarb
              4 hours ago













              1














              @sfdcfox is correct, Although I would do a



              !( (new List<String>'XXXX','YYYY','ZZZZ').contains(currentUserId) )


              Chaining a bunch of Logical OR's gets messy, especially if you need to add to the list in the future. I would make a public static variable of it to describe the classes permission if you plan on using that permission group you have there in more than one place.






              share|improve this answer























              • That's a really good idea, will probably do this. Thanks!

                – Max Goldfarb
                4 hours ago











              • If you want also you could make a property of the class and say something like Class.UserIsInAdminGroup

                – Zach Hutchins
                4 hours ago











              • I would look into this ticket if you are planning on using List<Id> salesforce.stackexchange.com/questions/224490/…. Theres a reason i use string because salesforce fixing things won't come in your or my lifetime

                – Zach Hutchins
                4 hours ago















              1














              @sfdcfox is correct, Although I would do a



              !( (new List<String>'XXXX','YYYY','ZZZZ').contains(currentUserId) )


              Chaining a bunch of Logical OR's gets messy, especially if you need to add to the list in the future. I would make a public static variable of it to describe the classes permission if you plan on using that permission group you have there in more than one place.






              share|improve this answer























              • That's a really good idea, will probably do this. Thanks!

                – Max Goldfarb
                4 hours ago











              • If you want also you could make a property of the class and say something like Class.UserIsInAdminGroup

                – Zach Hutchins
                4 hours ago











              • I would look into this ticket if you are planning on using List<Id> salesforce.stackexchange.com/questions/224490/…. Theres a reason i use string because salesforce fixing things won't come in your or my lifetime

                – Zach Hutchins
                4 hours ago













              1












              1








              1







              @sfdcfox is correct, Although I would do a



              !( (new List<String>'XXXX','YYYY','ZZZZ').contains(currentUserId) )


              Chaining a bunch of Logical OR's gets messy, especially if you need to add to the list in the future. I would make a public static variable of it to describe the classes permission if you plan on using that permission group you have there in more than one place.






              share|improve this answer













              @sfdcfox is correct, Although I would do a



              !( (new List<String>'XXXX','YYYY','ZZZZ').contains(currentUserId) )


              Chaining a bunch of Logical OR's gets messy, especially if you need to add to the list in the future. I would make a public static variable of it to describe the classes permission if you plan on using that permission group you have there in more than one place.







              share|improve this answer












              share|improve this answer



              share|improve this answer










              answered 4 hours ago









              Zach HutchinsZach Hutchins

              829




              829












              • That's a really good idea, will probably do this. Thanks!

                – Max Goldfarb
                4 hours ago











              • If you want also you could make a property of the class and say something like Class.UserIsInAdminGroup

                – Zach Hutchins
                4 hours ago











              • I would look into this ticket if you are planning on using List<Id> salesforce.stackexchange.com/questions/224490/…. Theres a reason i use string because salesforce fixing things won't come in your or my lifetime

                – Zach Hutchins
                4 hours ago

















              • That's a really good idea, will probably do this. Thanks!

                – Max Goldfarb
                4 hours ago











              • If you want also you could make a property of the class and say something like Class.UserIsInAdminGroup

                – Zach Hutchins
                4 hours ago











              • I would look into this ticket if you are planning on using List<Id> salesforce.stackexchange.com/questions/224490/…. Theres a reason i use string because salesforce fixing things won't come in your or my lifetime

                – Zach Hutchins
                4 hours ago
















              That's a really good idea, will probably do this. Thanks!

              – Max Goldfarb
              4 hours ago





              That's a really good idea, will probably do this. Thanks!

              – Max Goldfarb
              4 hours ago













              If you want also you could make a property of the class and say something like Class.UserIsInAdminGroup

              – Zach Hutchins
              4 hours ago





              If you want also you could make a property of the class and say something like Class.UserIsInAdminGroup

              – Zach Hutchins
              4 hours ago













              I would look into this ticket if you are planning on using List<Id> salesforce.stackexchange.com/questions/224490/…. Theres a reason i use string because salesforce fixing things won't come in your or my lifetime

              – Zach Hutchins
              4 hours ago





              I would look into this ticket if you are planning on using List<Id> salesforce.stackexchange.com/questions/224490/…. Theres a reason i use string because salesforce fixing things won't come in your or my lifetime

              – Zach Hutchins
              4 hours ago











              1














              In programming,



              if (currentUserId != 'XXXXXXXXX' || currentUserId != 'YYYYYYYYY' || currentUserId != 'ZZZZZZZZZ') 


              means that, if at least any of the 3 conditions is TRUE, the full expression is TRUE.



              For a currentUserId='XXXXXXXXX', the expression is evaluated as




              currentUserId != 'XXXXXXXXX' ==> FALSE

              currentUserId != 'YYYYYYYYY' ==> TRUE

              currentUserId != 'ZZZZZZZZZ' ==> TRUE




              So, for currentUserId='XXXXXXXXX', it adds the error Only specific users are able to change the Account Classification Field, which is not desirable.



              It can be explained by De Morgan's Law.




              Not (A and B) is the same as Not A or Not B.



              Not (A or B) is the same as Not A and Not B.




              In your case,




              currentUserId NOT ('XXXXXXXXX' OR 'YYYYYYYYY' OR 'ZZZZZZZZZ')




              which can be written as




              currentUserId NOT 'XXXXXXXXX' AND currentUserId NOT 'YYYYYYYYY' AND currentUserId NOT 'ZZZZZZZZZ'







              share|improve this answer



























                1














                In programming,



                if (currentUserId != 'XXXXXXXXX' || currentUserId != 'YYYYYYYYY' || currentUserId != 'ZZZZZZZZZ') 


                means that, if at least any of the 3 conditions is TRUE, the full expression is TRUE.



                For a currentUserId='XXXXXXXXX', the expression is evaluated as




                currentUserId != 'XXXXXXXXX' ==> FALSE

                currentUserId != 'YYYYYYYYY' ==> TRUE

                currentUserId != 'ZZZZZZZZZ' ==> TRUE




                So, for currentUserId='XXXXXXXXX', it adds the error Only specific users are able to change the Account Classification Field, which is not desirable.



                It can be explained by De Morgan's Law.




                Not (A and B) is the same as Not A or Not B.



                Not (A or B) is the same as Not A and Not B.




                In your case,




                currentUserId NOT ('XXXXXXXXX' OR 'YYYYYYYYY' OR 'ZZZZZZZZZ')




                which can be written as




                currentUserId NOT 'XXXXXXXXX' AND currentUserId NOT 'YYYYYYYYY' AND currentUserId NOT 'ZZZZZZZZZ'







                share|improve this answer

























                  1












                  1








                  1







                  In programming,



                  if (currentUserId != 'XXXXXXXXX' || currentUserId != 'YYYYYYYYY' || currentUserId != 'ZZZZZZZZZ') 


                  means that, if at least any of the 3 conditions is TRUE, the full expression is TRUE.



                  For a currentUserId='XXXXXXXXX', the expression is evaluated as




                  currentUserId != 'XXXXXXXXX' ==> FALSE

                  currentUserId != 'YYYYYYYYY' ==> TRUE

                  currentUserId != 'ZZZZZZZZZ' ==> TRUE




                  So, for currentUserId='XXXXXXXXX', it adds the error Only specific users are able to change the Account Classification Field, which is not desirable.



                  It can be explained by De Morgan's Law.




                  Not (A and B) is the same as Not A or Not B.



                  Not (A or B) is the same as Not A and Not B.




                  In your case,




                  currentUserId NOT ('XXXXXXXXX' OR 'YYYYYYYYY' OR 'ZZZZZZZZZ')




                  which can be written as




                  currentUserId NOT 'XXXXXXXXX' AND currentUserId NOT 'YYYYYYYYY' AND currentUserId NOT 'ZZZZZZZZZ'







                  share|improve this answer













                  In programming,



                  if (currentUserId != 'XXXXXXXXX' || currentUserId != 'YYYYYYYYY' || currentUserId != 'ZZZZZZZZZ') 


                  means that, if at least any of the 3 conditions is TRUE, the full expression is TRUE.



                  For a currentUserId='XXXXXXXXX', the expression is evaluated as




                  currentUserId != 'XXXXXXXXX' ==> FALSE

                  currentUserId != 'YYYYYYYYY' ==> TRUE

                  currentUserId != 'ZZZZZZZZZ' ==> TRUE




                  So, for currentUserId='XXXXXXXXX', it adds the error Only specific users are able to change the Account Classification Field, which is not desirable.



                  It can be explained by De Morgan's Law.




                  Not (A and B) is the same as Not A or Not B.



                  Not (A or B) is the same as Not A and Not B.




                  In your case,




                  currentUserId NOT ('XXXXXXXXX' OR 'YYYYYYYYY' OR 'ZZZZZZZZZ')




                  which can be written as




                  currentUserId NOT 'XXXXXXXXX' AND currentUserId NOT 'YYYYYYYYY' AND currentUserId NOT 'ZZZZZZZZZ'








                  share|improve this answer












                  share|improve this answer



                  share|improve this answer










                  answered 4 hours ago









                  Noor A ShuvoNoor A Shuvo

                  1256




                  1256





















                      1














                      While your logic will always return true because the value is always not one of the three values, correcting this code by inverting || to && would be missing the point that there is a better way to filter logic so it is specific to a subset of users. The two most ideal ways to code for this so that it is configurable are Custom Permissions and Hierarchy Custom Settings.



                      Custom Permissions



                      1. Create a Custom Permission named e.g. CanDoOperationX.

                      2. Create a Permission Set which contains only this permission.

                      3. Assign this Permission Set to each User in your whitelist.

                      4. Update your condition to check FeatureManagement.checkPermission('CanDoOperationX')

                      Hierarchy Custom Setting



                      This option doesn't make as much sense unless you have other user specific overrides for this functionality, but it is certainly viable.



                      1. Create a Hierarchy Custom Setting named e.g. MyTriggerSettings.

                      2. Add a Checkbox field named e.g. Can_Do_Operation_X__c.

                      3. Create a new record in this setting for each User in your whitelist.

                      4. Update your condition to check $MyTriggerSettings__c.getInstance().Can_Do_Operation_X__c.





                      share|improve this answer



























                        1














                        While your logic will always return true because the value is always not one of the three values, correcting this code by inverting || to && would be missing the point that there is a better way to filter logic so it is specific to a subset of users. The two most ideal ways to code for this so that it is configurable are Custom Permissions and Hierarchy Custom Settings.



                        Custom Permissions



                        1. Create a Custom Permission named e.g. CanDoOperationX.

                        2. Create a Permission Set which contains only this permission.

                        3. Assign this Permission Set to each User in your whitelist.

                        4. Update your condition to check FeatureManagement.checkPermission('CanDoOperationX')

                        Hierarchy Custom Setting



                        This option doesn't make as much sense unless you have other user specific overrides for this functionality, but it is certainly viable.



                        1. Create a Hierarchy Custom Setting named e.g. MyTriggerSettings.

                        2. Add a Checkbox field named e.g. Can_Do_Operation_X__c.

                        3. Create a new record in this setting for each User in your whitelist.

                        4. Update your condition to check $MyTriggerSettings__c.getInstance().Can_Do_Operation_X__c.





                        share|improve this answer

























                          1












                          1








                          1







                          While your logic will always return true because the value is always not one of the three values, correcting this code by inverting || to && would be missing the point that there is a better way to filter logic so it is specific to a subset of users. The two most ideal ways to code for this so that it is configurable are Custom Permissions and Hierarchy Custom Settings.



                          Custom Permissions



                          1. Create a Custom Permission named e.g. CanDoOperationX.

                          2. Create a Permission Set which contains only this permission.

                          3. Assign this Permission Set to each User in your whitelist.

                          4. Update your condition to check FeatureManagement.checkPermission('CanDoOperationX')

                          Hierarchy Custom Setting



                          This option doesn't make as much sense unless you have other user specific overrides for this functionality, but it is certainly viable.



                          1. Create a Hierarchy Custom Setting named e.g. MyTriggerSettings.

                          2. Add a Checkbox field named e.g. Can_Do_Operation_X__c.

                          3. Create a new record in this setting for each User in your whitelist.

                          4. Update your condition to check $MyTriggerSettings__c.getInstance().Can_Do_Operation_X__c.





                          share|improve this answer













                          While your logic will always return true because the value is always not one of the three values, correcting this code by inverting || to && would be missing the point that there is a better way to filter logic so it is specific to a subset of users. The two most ideal ways to code for this so that it is configurable are Custom Permissions and Hierarchy Custom Settings.



                          Custom Permissions



                          1. Create a Custom Permission named e.g. CanDoOperationX.

                          2. Create a Permission Set which contains only this permission.

                          3. Assign this Permission Set to each User in your whitelist.

                          4. Update your condition to check FeatureManagement.checkPermission('CanDoOperationX')

                          Hierarchy Custom Setting



                          This option doesn't make as much sense unless you have other user specific overrides for this functionality, but it is certainly viable.



                          1. Create a Hierarchy Custom Setting named e.g. MyTriggerSettings.

                          2. Add a Checkbox field named e.g. Can_Do_Operation_X__c.

                          3. Create a new record in this setting for each User in your whitelist.

                          4. Update your condition to check $MyTriggerSettings__c.getInstance().Can_Do_Operation_X__c.






                          share|improve this answer












                          share|improve this answer



                          share|improve this answer










                          answered 4 hours ago









                          Adrian LarsonAdrian Larson

                          110k19121259




                          110k19121259



























                              draft saved

                              draft discarded
















































                              Thanks for contributing an answer to Salesforce Stack Exchange!


                              • Please be sure to answer the question. Provide details and share your research!

                              But avoid


                              • Asking for help, clarification, or responding to other answers.

                              • Making statements based on opinion; back them up with references or personal experience.

                              To learn more, see our tips on writing great answers.




                              draft saved


                              draft discarded














                              StackExchange.ready(
                              function ()
                              StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fsalesforce.stackexchange.com%2fquestions%2f258350%2fmultiple-or-conditions-in-if-statement%23new-answer', 'question_page');

                              );

                              Post as a guest















                              Required, but never shown





















































                              Required, but never shown














                              Required, but never shown












                              Required, but never shown







                              Required, but never shown

































                              Required, but never shown














                              Required, but never shown












                              Required, but never shown







                              Required, but never shown







                              Popular posts from this blog

                              How to create a command for the “strange m” symbol in latex? Announcing the arrival of Valued Associate #679: Cesar Manara Planned maintenance scheduled April 23, 2019 at 23:30 UTC (7:30pm US/Eastern)How do you make your own symbol when Detexify fails?Writing bold small caps with mathpazo packageplus-minus symbol with parenthesis around the minus signGreek character in Beamer document titleHow to create dashed right arrow over symbol?Currency symbol: Turkish LiraDouble prec as a single symbol?Plus Sign Too Big; How to Call adfbullet?Is there a TeX macro for three-legged pi?How do I get my integral-like symbol to align like the integral?How to selectively substitute a letter with another symbol representing the same letterHow do I generate a less than symbol and vertical bar that are the same height?

                              Category:Tremithousa Media in category "Tremithousa"Navigation menuUpload media34° 49′ 02.7″ N, 32° 26′ 37.32″ EOpenStreetMapGoogle EarthProximityramaReasonatorScholiaStatisticsWikiShootMe

                              Dokschytsy (Steed) Kwelen | NawigatsjuunBelarus: Vitebsk Region, citypopulation.de