Wednesday, September 9, 2015

Uniqueness in combination of two fields

In the account object Say we have to maintain uniqueness on 2 fields(name and phone).

we need to create a new Text field that has been set as unique.  This field can then be updated based on a workflow rule.


Create a workflow
In the Rule Criteria section in the first drop down menu choose "Account: phone" not equal to and then leave the value blank. Click the “Save & Next” button.


click the "Add Workflow Action" drop down and click "New Field Update". Give the name to update the field name. In the Field to update dropdown choose the Field created. In the "Specify New Field Value" section choose "Use a formula to set new value". Click the “Show Formula Editor” link. Click "Insert Field". Find the "External Field" field. Click the "Insert" button. Click the "Save" button. Click the "Done" button. Click the "Activate" button.



This Can be achieved even with trigger. Please find the below code

trigger updateaccountExternalField on Account (before insert, before update) {

    Map<String, Account> accountMap =new Map<String, Account>();
    for (Account acc : Trigger.new){
        if ((acc.phone  !=null) &&(Trigger.isInsert ||(acc.phone  != Trigger.oldMap.get(acc.Id).phone))){
            if (accountMap.containsKey(acc.Name+acc.phone)){
                acc.External_Field__c .addError('Another Account has the same phone.');
            }else{
                accountMap.put(acc.Name+acc.phone, acc);
            }
       }
    acc.External_Field__c = acc.Name+acc.phone;
    }
    
    for (Account account : [SELECT External_Field__c FROM Account WHERE External_Field__c IN :accountMap.KeySet()]){
        Account newContact = accountMap.get(acc.External_Field__c);
        newContact.External_Field__c.addError('An Account with this phone already exists.');
    }
}

No comments :

Post a Comment

Labels

visualforce page ( 13 ) apex integration ( 5 ) apex trigger ( 4 ) csv file from vf page ( 4 ) javascript ( 4 ) csv visualforce page ( 3 ) Too many ( 2 ) call out ( 2 ) integration ( 2 ) rest api ( 2 ) salesforce rest api ( 2 ) salesforce to salesforce integration ( 2 ) sfdc rest api ( 2 ) trigger ( 2 ) 15 digit to 18 digit ( 1 ) DML rows in Apex ( 1 ) Date Conversion ( 1 ) Date/Time conversion ( 1 ) Deploy ( 1 ) Objects to Future Annotated Methods ( 1 ) SFDC limits ( 1 ) Sobject to Future Annotated Methods ( 1 ) Test Class ( 1 ) TimeZone Conversion ( 1 ) Too many dml rows ( 1 ) Too many future calls ( 1 ) annotations ( 1 ) apex code ( 1 ) closed opportunities ( 1 ) commit ( 1 ) convert ( 1 ) create records ( 1 ) csv create records ( 1 ) custom setting ( 1 ) deployment ( 1 ) deployment changeset ( 1 ) disable apex class ( 1 ) disable apex trigger ( 1 ) disable in production ( 1 ) document ( 1 ) download ( 1 ) field name ( 1 ) formula fields ( 1 ) iframe ( 1 ) inactive ( 1 ) intellisense ( 1 ) jsforce ( 1 ) limits ( 1 ) matrix report in vf page ( 1 ) multi select ( 1 ) multi select salesforce ( 1 ) multiselect ( 1 ) paypal ( 1 ) picklist ( 1 ) record type ( 1 ) rollback ( 1 ) salesforce limits ( 1 ) salesforce list ( 1 ) salesforce map ( 1 ) salesforce rest ( 1 ) salesforce set ( 1 ) salesforce1 ( 1 ) sandbox deployment ( 1 ) sfdc collection ( 1 ) sfdc list ( 1 ) sfdc map ( 1 ) sfdc rest ( 1 ) sfdc set ( 1 ) uncommitted ( 1 ) updated field ( 1 ) user ( 1 ) validation rule opportunity ( 1 ) validation rules opportunities ( 1 ) vf page ( 1 )

Ad