function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
Jeremy EvansJeremy Evans 

Using ISCHANGED on a Validation Rules

I have an object with 5 page layouts and about 15 fields I want to lock. I want to apply a validation rule that prevents these fields from being edited if a checkbox is marked as true. I'm still learning how to write these so bare with me.. any help is appreciated

AND(ISCHANGED ("Amount__c"),(ISCHANGED ("Payee__c")),(ISCHANGED ("From_Finanncial_Account_Number__c")), (ISCHANGED ("Shares__c")), (ISCHANGED ("Security_Symbol__c")), (ISCHANGED ("Security_Name__c")),(ISCHANGED ("Broker_Dealer_Name__c")), (ISCHANGED ("DTC_Number__c))",(ISCHANGED ("From_Account_Number__c")), (ISCHANGED ("To_Account_Number__c")), (ISCHANGED ("To_Financial_Account__c")), (ISCHANGED ("Bank_Name__c","ABA_Number__c")), (ISCHANGED ("To_Account_Name__c")), (ISCHANGED ("From_Account_Number__c")),  (ISCHANGED ("To_Financial_Account__c")),(RecordTypeId = "012d0000000P6ER"),(RecordTypeId = "012d0000000P6O"),(RecordTypeId = "012d0000000P6Fj"),(RecordTypeId ="012d0000000P6FZ"),(RecordTypeId = "012d0000000P6F"), AND ("Lead_Approval_Completed__c") = TRUE
Jeremy EvansJeremy Evans
Update:
AND(OR(ISCHANGED ("Amount__c"),ISCHANGED ("Payee__c"),ISCHANGED ("From_Finanncial_Account_Number__c"), ISCHANGED ("Shares__c"), ISCHANGED ("Security_Symbol__c"), ISCHANGED ("Security_Name__c"),ISCHANGED ("Broker_Dealer_Name__c"), ISCHANGED ("DTC_Number__c)",ISCHANGED ("From_Account_Number__c"), ISCHANGED ("To_Account_Number__c"), ISCHANGED ("To_Financial_Account__c"), ISCHANGED ("Bank_Name__c","ABA_Number__c"), ISCHANGED ("To_Account_Name__c"), ISCHANGED ("From_Account_Number__c"), ISCHANGED ("To_Financial_Account__c")), OR(RecordTypeId = "012d0000000P6ER"),(RecordTypeId = "012d0000000P6O"),(RecordTypeId = "012d0000000P6Fj"),(RecordTypeId ="012d0000000P6FZ"),(RecordTypeId = "012d0000000P6F")), ("Lead_Approval_Completed__c"= TRUE))

and I'm getting :
Error: Incorrect argument type for function 'ISCHANGED()'.
@anilbathula@@anilbathula@
Hi Jeremy Evans,

Try this formula hope it works :-
AND(OR(ISCHANGED (Amount__c),ISCHANGED (Payee__c),
ISCHANGED (From_Finanncial_Account_Number__c), 
ISCHANGED (Shares__c), ISCHANGED (Security_Symbol__c),
 ISCHANGED (Security_Name__c),ISCHANGED (Broker_Dealer_Name__c),
 ISCHANGED (DTC_Number__c),ISCHANGED (From_Account_Number__c), 
 ISCHANGED (To_Account_Number__c), ISCHANGED (To_Financial_Account__c), 
 ISCHANGED (Bank_Name__c),ISCHANGED(ABA_Number__c), 
ISCHANGED (To_Account_Name__c), 
 ISCHANGED (From_Account_Number__c), 
ISCHANGED (To_Financial_Account__c)), 
 OR(RecordTypeId = "012d0000000P6ER",
RecordTypeId = "012d0000000P6O",RecordTypeId = "012d0000000P6Fj",
RecordTypeId ="012d0000000P6FZ",RecordTypeId = "012d0000000P6F"), 
Lead_Approval_Completed__c= TRUE)

Thanks
Anil.B
Jeremy EvansJeremy Evans
So weird so while I was waiting for a response I kept messing with it and it AND(OR(ISCHANGED (Amount__c),ISCHANGED (Payee__c),ISCHANGED (Shares__c), ISCHANGED (Security_Symbol__c), ISCHANGED (Security_Name__c),ISCHANGED (Broker_Dealer_Name__c), ISCHANGED (DTC_Number__c),ISCHANGED (From_Account_Number__c), ISCHANGED (To_Account_Number__c), ISCHANGED (To_Financial_Account__c), ISCHANGED (Bank_Name__c), ISCHANGED (ABA_Number__c), ISCHANGED (To_Account_Name__c), ISCHANGED (From_Account_Number__c), ISCHANGED (To_Financial_Account__c)),OR(RecordTypeId = "012d0000000P6ER",RecordTypeId = "012d0000000P6O",RecordTypeId = "012d0000000P6Fj",RecordTypeId ="012d0000000P6FZ",RecordTypeId = "012d0000000P6F"),Lead_Approval_Completed__c=TRUE) Would you believe that didn’t work.. killed my syntax errors but didn’t do what I wanted to do. I changed all the ISCHANGED to NOT (ISCHANGED) and it works…. Which is counterintuitive to me because I thought the statement needed to be true to fire the error message so.. I’m just all in the dark but at least it works AND(OR (NOT(ISCHANGED (Amount__c)),NOT (ISCHANGED (Payee__c)),NOT (ISCHANGED (Shares__c)), NOT (ISCHANGED (Security_Symbol__c)),Not (ISCHANGED (Security_Name__c)),NOT (ISCHANGED (Broker_Dealer_Name__c)),NOT (ISCHANGED (DTC_Number__c)), NOT (ISCHANGED (From_Account_Number__c)),NOT(ISCHANGED (To_Account_Number__c)), NOT (ISCHANGED (To_Financial_Account__c)), NOT (ISCHANGED (Bank_Name__c)), NOT (ISCHANGED (ABA_Number__c)), NOT (ISCHANGED (To_Account_Name__c)), NOT (ISCHANGED (From_Account_Number__c)),NOT(ISCHANGED (To_Financial_Account__c)),OR(RecordTypeId = "012d0000000P6ER",RecordTypeId = "012d0000000P6O",RecordTypeId = "012d0000000P6Fj",RecordTypeId ="012d0000000P6FZ",RecordTypeId = "012d0000000P6F"),Lead_Approval_Completed__c=TRUE) R? Jeremy Evans Technology/Salesforce Specialist P 415.371.7846 | F 415.371.7801 ASPIRIANT 50 Calfornia Street, Suite 2600 San Francisco, CA 94111 aspiriant.com
William TranWilliam Tran
Jeremy,

I think you are missing a parenthesis in you final code posted.

is it here:

NOT(ISCHANGED (To_Financial_Account__c))  need another ) ?

or is it here:

Lead_Approval_Completed__c=TRUE) need another ) ?

Are you sure you tested all scenarios?  like changing one of the fields not on this list.

Thx

Here's your code, unless I copied it wrong, a parenthesis is missing.
AND(OR (NOT(ISCHANGED (Amount__c)),
NOT (ISCHANGED (Payee__c)),
NOT (ISCHANGED (Shares__c)), 
NOT (ISCHANGED (Security_Symbol__c)),
Not (ISCHANGED (Security_Name__c)),
NOT (ISCHANGED (Broker_Dealer_Name__c)),
NOT (ISCHANGED (DTC_Number__c)), 
NOT (ISCHANGED (From_Account_Number__c)),
NOT(ISCHANGED (To_Account_Number__c)), 
NOT (ISCHANGED (To_Financial_Account__c)), 
NOT (ISCHANGED (Bank_Name__c)), 
NOT (ISCHANGED (ABA_Number__c)), 
NOT (ISCHANGED (To_Account_Name__c)), 
NOT (ISCHANGED (From_Account_Number__c)),
NOT(ISCHANGED (To_Financial_Account__c)),
OR(RecordTypeId = "012d0000000P6ER",RecordTypeId = "012d0000000P6O",RecordTypeId = "012d0000000P6Fj",RecordTypeId ="012d0000000P6FZ",RecordTypeId = "012d0000000P6F"),
Lead_Approval_Completed__c=TRUE)