You need to sign in to do that
Don't have an account?
Trigger after update
Hi,
Am updating account object through data loader facing an error please help me
form433fupdate: execution of AfterUpdate
caused by: System.ListException: Duplicate id in list: a1B30000001oZDwEAM
Trigger.form433fupdate: line 34, column 1
trigger form433fupdate on Account (after update)
{
set<id> aset=new set<id>();
for(account a:trigger.new)
{
aset.add(a.id);
}
list<form433f__c> flist=new list<form433f__c>();
for(account a1:trigger.new)
{
for(form433f__c f:[select id,Scell__c,Shome__c,Swork__c,Ssecurity_No__c,E_Sbirthdate__c,Spouse_FullName__c,cell__c,Security_No__c,E_Birth__c,Home__c,work__c,Account__c,name,Personmailingcity__c,Personmailingpostalcode__c,Personmailingstate__c,Personmailingstreet__c from form433f__c where account__c in:aset])
{
f.name=a1.name;
f.county_of_Residence__c=a1.Personmailingcountry;
f.Personmailingcity__c=a1.Personmailingcity;
f.Personmailingpostalcode__c=a1.Personmailingpostalcode;
f.Personmailingstate__c=a1.Personmailingstate;
f.Personmailingstreet__c=a1.Personmailingstreet;
f.cell__c=a1.PersonMobilePhone;
f.Home__c =a1.PersonHomePhone;
f.work__c =a1.PersonOtherPhone;
f.Security_No__c =a1.SSN1__c;
f.E_Birth__c =a1.PersonBirthdate;
f.Ssecurity_No__c =a1.Spouse_SSN1__c;
f.E_Sbirthdate__c =a1.Spouse_Birthdate__c;
f.Spouse_FullName__c=a1.Spouse_FullName__c;
f.Scell__c = a1.Spouse_Cell_Phone__c;
f.Shome__c = a1.Spouse_Home_Phone__c;
f.Swork__c = a1.Spouse_Work_Phone__c;
flist.add(f);
}
}
update flist;
}
hi
try this
trigger form433fupdate on Account (after update)
{
set<id> aset=new set<id>();
for(account a:trigger.new)
{
aset.add(a.id);
}
list<form433f__c> flist=new list<form433f__c>();
for(account a1:trigger.new)
{
for(form433f__c f:[select id,Scell__c,Shome__c,Swork__c,Ssecurity_No__c,E_Sbirthdate__c,Spouse_FullName__c,cell__c,Security_No__c,E_Birth__c,Home__c,work__c,Account__c,name,Personmailingcity__c,Personmailingpostalcode__c,Personmailingstate__c,Personmailingstreet__c from form433f__c where account__c in:aset])
{
if(a1.id==f.account__c)
{
f.name=a1.name;
f.county_of_Residence__c=a1.Personmailingcountry;
f.Personmailingcity__c=a1.Personmailingcity;
f.Personmailingpostalcode__c=a1.Personmailingpostalcode;
f.Personmailingstate__c=a1.Personmailingstate;
f.Personmailingstreet__c=a1.Personmailingstreet;
f.cell__c=a1.PersonMobilePhone;
f.Home__c =a1.PersonHomePhone;
f.work__c =a1.PersonOtherPhone;
f.Security_No__c =a1.SSN1__c;
f.E_Birth__c =a1.PersonBirthdate;
f.Ssecurity_No__c =a1.Spouse_SSN1__c;
f.E_Sbirthdate__c =a1.Spouse_Birthdate__c;
f.Spouse_FullName__c=a1.Spouse_FullName__c;
f.Scell__c = a1.Spouse_Cell_Phone__c;
f.Shome__c = a1.Spouse_Home_Phone__c;
f.Swork__c = a1.Spouse_Work_Phone__c;
flist.add(f);
}
}
}
update flist;
}
All Answers
I guess you're trying to copy all the account details to another object and trying to update that. For that you've created a set which
contains all the unique IDs of accounts, But you're also trying to iterate at the same time.
Below for loop to iterate the account is the one which is creating the problem. Please remove the below for loop and try
for(account a1:trigger.new)
{
}
In the below SOQL query you're iterating the accounts. So iterating on Account is redundant
for(form433f__c f:[select id,Scell__c,Shome__c,Swork__c,Ssecurity_No__c,E_Sb
irthdate__c,Spouse_FullName__c,cell__c,Security_No__c,E_Birth__c,Home__c,work__c,Account__c,name,Personmailingcity__c,Personmailingpostalcode__c,Personmailingstate__c,Personmailingstreet__c from form433f__c where account__c in:aset])
{
f.name=a1.name;
f.county_of_Residence__c=a1.Personmailingcountry;
f.Personmailingcity__c=a1.Personmailingcity;
f.Personmailingpostalcode__c=a1.Personmailingpostalcode;
f.Personmailingstate__c=a1.Personmailingstate;
f.Personmailingstreet__c=a1.Personmailingstreet;
f.cell__c=a1.PersonMobilePhone;
f.Home__c =a1.PersonHomePhone;
f.work__c =a1.PersonOtherPhone;
f.Security_No__c =a1.SSN1__c;
f.E_Birth__c =a1.PersonBirthdate;
f.Ssecurity_No__c =a1.Spouse_SSN1__c;
f.E_Sbirthdate__c =a1.Spouse_Birthdate__c;
f.Spouse_FullName__c=a1.Spouse_FullName__c;
f.Scell__c = a1.Spouse_Cell_Phone__c;
f.Shome__c = a1.Spouse_Home_Phone__c;
f.Swork__c = a1.Spouse_Work_Phone__c;
flist.add(f);
}
Let me know if it didn't work
Hi Can i remove the for loop am geeting an error
Error: Compile Error: Variable does not exist: a1.name at line 17 column 8
please help me
hi
try this
trigger form433fupdate on Account (after update)
{
set<id> aset=new set<id>();
for(account a:trigger.new)
{
aset.add(a.id);
}
list<form433f__c> flist=new list<form433f__c>();
for(account a1:trigger.new)
{
for(form433f__c f:[select id,Scell__c,Shome__c,Swork__c,Ssecurity_No__c,E_Sbirthdate__c,Spouse_FullName__c,cell__c,Security_No__c,E_Birth__c,Home__c,work__c,Account__c,name,Personmailingcity__c,Personmailingpostalcode__c,Personmailingstate__c,Personmailingstreet__c from form433f__c where account__c in:aset])
{
if(a1.id==f.account__c)
{
f.name=a1.name;
f.county_of_Residence__c=a1.Personmailingcountry;
f.Personmailingcity__c=a1.Personmailingcity;
f.Personmailingpostalcode__c=a1.Personmailingpostalcode;
f.Personmailingstate__c=a1.Personmailingstate;
f.Personmailingstreet__c=a1.Personmailingstreet;
f.cell__c=a1.PersonMobilePhone;
f.Home__c =a1.PersonHomePhone;
f.work__c =a1.PersonOtherPhone;
f.Security_No__c =a1.SSN1__c;
f.E_Birth__c =a1.PersonBirthdate;
f.Ssecurity_No__c =a1.Spouse_SSN1__c;
f.E_Sbirthdate__c =a1.Spouse_Birthdate__c;
f.Spouse_FullName__c=a1.Spouse_FullName__c;
f.Scell__c = a1.Spouse_Cell_Phone__c;
f.Shome__c = a1.Spouse_Home_Phone__c;
f.Swork__c = a1.Spouse_Work_Phone__c;
flist.add(f);
}
}
}
update flist;
}
Please use the below code
trigger form433fupdate on Account (after update)
{
set<id> aset=new set<id>();
list<form433f__c> flist=new list<form433f__c>();
Map<Id,Account> accountMap = new Map<Id,Account>();
for(account a:trigger.new)
{
aset.add(a.id);
accountMap.put(a.id,a);
}
for(form433f__c f:[select id,Scell__c,Shome__c,Swork__c,Ssecurity_No__c,E_Sb
irthdate__c,Spouse_FullName__c,cell__c,Security_No__c,E_Birth__c,Home__c,work__c,Account__c,name,Personmailingcity__c,Personmailingpostalcode__c,Personmailingstate__c,Personmailingstreet__c from form433f__c where account__c in:aset])
{
Account a1 = accountMap.get(f.account__c );
f.name=a1.name;
f.county_of_Residence__c=a1.Personmailingcountry;
f.Personmailingcity__c=a1.Personmailingcity;
f.Personmailingpostalcode__c=a1.Personmailingpostalcode;
f.Personmailingstate__c=a1.Personmailingstate;
f.Personmailingstreet__c=a1.Personmailingstreet;
f.cell__c=a1.PersonMobilePhone;
f.Home__c =a1.PersonHomePhone;
f.work__c =a1.PersonOtherPhone;
f.Security_No__c =a1.SSN1__c;
f.E_Birth__c =a1.PersonBirthdate;
f.Ssecurity_No__c =a1.Spouse_SSN1__c;
f.E_Sbirthdate__c =a1.Spouse_Birthdate__c;
f.Spouse_FullName__c=a1.Spouse_FullName__c;
f.Scell__c = a1.Spouse_Cell_Phone__c;
f.Shome__c = a1.Spouse_Home_Phone__c;
f.Swork__c = a1.Spouse_Work_Phone__c;
flist.add(f);
}
update flist;
}
Hey,
Thank you its working but i have a small doubt in system debug it showing in list same account name
many times more than child records and when update using data loader more than 100 child records in a particular record
is it throw an error?
Thank you for your fast replay.
hi
it not thrown any error more that 100 child records. because you queries are all outside for loop.
trigger takes batch of 200 records. you are collecting 200 record ids in "set". you are writing a single query for getting all child records.
sorry for late responce yes it is also perfectly working.
Thank very much.