You need to sign in to do that
Don't have an account?
How to write trigger for unrelated Objects to update records?
Hi Every one,
I want to write a trigger to update record for unrelated object. So that i written one trigger it showing error can any one help me out.
trigger populateExpenseFromUser on Expense__c (before insert , before update)
{
Set<ID> setExpIds = new Set<ID>();
for(Expense__c exp : trigger.new){
if(exp.Claim_Purpose__c!= null)
setExpIds.add(exp.Claim_Purpose__c);
}
MAP<ID , User> mapExp = new MAP<ID , User>([Select Id,Branch__c,Department__c,Designation__c from user where id in: setExpIds]);
for(Expense__c exp : trigger.new)
{
if(exp.Claim_Purpose__c != null)
{
User tr = mapExp.get(exp.Claim_Purpose__c);
exp.Branch__c= tr.Branch__c;
exp.Department__c= tr.Department__c;
exp.Designation__c=tr.Designation__c;
// update exp;
}
}
}
I want to write a trigger to update record for unrelated object. So that i written one trigger it showing error can any one help me out.
trigger populateExpenseFromUser on Expense__c (before insert , before update)
{
Set<ID> setExpIds = new Set<ID>();
for(Expense__c exp : trigger.new){
if(exp.Claim_Purpose__c!= null)
setExpIds.add(exp.Claim_Purpose__c);
}
MAP<ID , User> mapExp = new MAP<ID , User>([Select Id,Branch__c,Department__c,Designation__c from user where id in: setExpIds]);
for(Expense__c exp : trigger.new)
{
if(exp.Claim_Purpose__c != null)
{
User tr = mapExp.get(exp.Claim_Purpose__c);
exp.Branch__c= tr.Branch__c;
exp.Department__c= tr.Department__c;
exp.Designation__c=tr.Designation__c;
// update exp;
}
}
}
finally , i make it if this code is helpful please like it and let me know ....
Thank you
Avaneesh Singh
All Answers
What is your error please put that and let me know
1- Claim_Purpose__c is this field have id of User
and in which line did you get error
The code is correct. You don't need to write update operation I could see that it is commented. So this code should work fine. Please post the error you are getting.
Thanks,
Sukanya Banekar
It is not showing any error, but while saving record in expense it is not gets saved.
I want to Fetch current id and then i can display data in expense.
May be in your org data are satisfied your trigger use debug
use these three debug in you code I put there and let me know in which line you are not getting value ??
There is no errors after debug also.I Guess trigger not able fetch current user Id.
Can you please refer my code according with my requirement.
1. I am using Expense custom object and User Standard Object.
2. In User Object there are three fields like Branch__c,Department__c,Designation__c.
3.I given Lookup relation from Expense to User.
4. When He select User Name in Expense then it has search data in User like User__c== User Name.
5. Then it has to fetch the data from User Standard Obect.
Here It is my updated Code:
trigger populateExpenseFromUser on Expense__c (before insert , before update)
{
Set<ID> setExpIds = new Set<ID>();
for(Expense__c exp : trigger.new){
if(exp.User__c!= null)
setExpIds.add(exp.User__c);
}
MAP<ID , User> mapExp = new MAP<ID , User>([Select Id,Branch__c,Department__c,Designation__c from user where id in: setExpIds]);
for(Expense__c exp : trigger.new)
{
if(exp.User__c != null)
{
User tr = mapExp.get(exp.User__c);
exp.Branch__c= tr.Branch__c;
exp.Department__c= tr.Department__c;
exp.Designation__c=tr.Designation__c;
// update exp;
}
}
}
just give me few minute's
Here is your trigger first we need to write this trigger in after insert not before because in before insert we don't have id to Query
in this trigger, in Expense__c object, I create a lookup field of the user name as a user if this was helpful please mark as best answer else let me know
Thank you
Avaneesh Singh
I Want some more help extends to this one.
1. Now we selecting User from lookup field. can we do with out selecting user.
2. That is the user who is login automatically populate in that lookup Field.
hmmm......ok let me try
finally , i make it if this code is helpful please like it and let me know ....
Thank you
Avaneesh Singh