You need to sign in to do that
Don't have an account?
@anilbathula@
System.ListException: List index out of bounds
Hi guys,
please help me to come out of this error.
for(Comments__c cs:trigger.New){
cms=cs;
if(cms.Opportunity__c==null && cms.Contact__c!=null ){
sobjectSetOfIds.add(cms.Contact__c);
}
}
Map<Id,Contact>smap1= new Map<Id, Contact>([Select id
,Name
,(select id ,Name from opportunities limit1)
from Contact
where Id in : sobjectSetOfIds]);
for(Comments__c s: trigger.new){
if(smap1.containsKey(s.Contact__c)){
s.Opportunity__c=smap1.get(s.Contact__c).Opportunities__r[0].id; //Error
}
}
Thanks
Anil.B
Hi
Just remove [0] from the line "s.Opportunity__c=smap1.get(s.Contact__c).Opportunities__r[0].id;" and make it as below
s.Opportunity__c=smap1.get(s.Contact__c).Opportunities__r.id .
Mark it as resolved if it helps you.
Sanj
Hi sanjdev,
it gives error when u remove [0].
the error will be :- Invalid foreign key relationship: Contact.Opportunities__r
Thanks for ur response
Thanks
Anil.B
I think it is
s.Opportunity__c=smap1.get(s.Contact__c).Opportunities[0].id;
Hi Sdry
Thanks for the reply .
actually its giving error.
if i use this s.Opportunity__c=smap1.get(s.Contact__c).Opportunities[0].id;
Error:The configuration of your org has changed, please reload the page. Missing dependent object: Field: Opportunity.ContactId at line 47 column 54
If i use this way s.Opportunity__c=smap1.get(s.Contact__c).Opportunities__r[0].id;
No error on saving the trigger .But it displaying error on creating the record.
Error:
System.ListException: List index out of bounds: 0: Trigger.Updtcon: line 48, column 1
Thanks
Anil.B
That makes it easier .. it is never good practise to hardcode an index without checking if it and the list exist.
if(smap1.get(s.Contact__c).Opportunities__r[0] != null && smap1.get(s.Contact__c).Opportunities__r[0].size() >0){
s.Opportunity__c=smap1.get(s.Contact__c).Opportunities__r[0].id ;
}
Hi Sdry
It giving a new error that is Method doesnot exist or incorrect signature : [SOBJECT:Opportunity].size() at line 48 column 114
Can u check the trigger ;-
trigger Updtcon on comments__c (before insert) {
Set<Id> sobjectSetOfIds = new Set<Id>();
Comments__c cms;
opportunity opp;
Contact con;
/* updating Contact from Opportunity object comments related list*/
for(Comments__c cs:trigger.New){
cms=cs;
if(cms.Opportunity__c!=null && cms.Contact__c==null ){
sobjectSetOfIds.add(cms.Opportunity__c);
}
}
Map<Id,Opportunity>smap= new Map<Id, Opportunity>([Select id
,Name
,Borrower__c
from Opportunity
where Id in : sobjectSetOfIds]);
for(Comments__c s: trigger.new){
if(smap.containsKey(s.Opportunity__c)){
s.Contact__c=smap.get(s.Opportunity__c).Borrower__c;
}
}
/* updating opportunity from contact object comments related list*/
for(Comments__c cs:trigger.New){
cms=cs;
if(cms.Opportunity__c==null && cms.Contact__c!=null ){
sobjectSetOfIds.add(cms.Contact__c);
}
}
Map<Id,Contact>smap1= new Map<Id, Contact>([Select id
,Name
,(select id,name from opportunities)
from Contact
where Id in : sobjectSetOfIds]);
System.debug('::->'+smap1);
for(Comments__c s: trigger.new){
if(smap1.containsKey(s.Contact__c)){
if(smap1.get(s.Contact__c).Opportunities__r[0] != null && smap1.get(s.Contact__c).Opportunities__r[0].size()>0){ //error
s.Opportunity__c=smap1.get(s.Contact__c).Opportunities__r[0].id ;
}
}
}
}
Thanks
Anil.B
First of all, you have the relationship name wrong. It should be
smap1.get(s.Contact__c).Opportunities not smap1.get(s.Contact__c).Opportunities__r
Next,
smap1.get(s.Contact__c).Opportunities points to a related list of records.
What you have to do is to check if this list is empty.
So what you will need to do is
if(smap1.get(s.Contact__c).Opportunities != null && smap1.get(s.Contact__c).Opportunities.size()>0)
If you know that the list Opportunities has elements, then you can reference the first entry in that list.
Edit - Updated to use Opportunities instead of Opportunities__r
Hi Jerun jose
Thanks a lot for ur reply.
When i use Opportunities it is showing a different error:-
Error: Compile Error: The configuration of your org has changed, please reload the page. Missing dependent object: Field: Opportunity.ContactId at line 49 column 58
Thanks
Anil.B
The updated trigger:-
trigger Updtcon on comments__c (before insert) {
Set<Id> sobjectSetOfIds = new Set<Id>();
Comments__c cms;
opportunity opp;
/* updating Contact from Opportunity object comments related list*/
for(Comments__c cs:trigger.New){
cms=cs;
if(cms.Opportunity__c!=null && cms.Contact__c==null ){
sobjectSetOfIds.add(cms.Opportunity__c);
}
}
Map<Id,Opportunity>smap= new Map<Id, Opportunity>([Select id
,Name
,Borrower__c
from Opportunity
where Id in : sobjectSetOfIds]);
for(Comments__c s: trigger.new){
if(smap.containsKey(s.Opportunity__c)){
s.Contact__c=smap.get(s.Opportunity__c).Borrower__c;
}
}
/* updating opportunity from contact object comments related list*/
for(Comments__c cs:trigger.New){
cms=cs;
if(cms.Opportunity__c==null && cms.Contact__c!=null ){
sobjectSetOfIds.add(cms.Contact__c);
}
}
Map<Id,Contact>smap1= new Map<Id,Contact>([Select id
,Name
,(select id,name from opportunities)
from Contact
where Id in : sobjectSetOfIds]);
System.debug('::->'+smap1);
for(Comments__c s: trigger.new){
if(smap1.containsKey(s.Contact__c)){
if(smap1.get(s.Contact__c).Opportunities[0] != null && smap1.get(s.Contact__c).Opportunities[0].size()>0){
s.Opportunity__c=smap1.get(s.Contact__c).Opportunities[0].id ;
}
}
}
}
Try the code below and let me know if you have issues
Jerun Jose,
sorry man it showing the same error.
Error: Compile Error: The configuration of your org has changed, please reload the page. Missing dependent object: Field: Opportunity.ContactId at line 48 column 58
Thanks
Anil.B
Hi guys
Thanks a lot for ur support to get me the solution.
But unfortunately we could not able to figure out the solution in this way.
But i used another way and got it solved temporarily.By the help of kerwintang .
this is the link:-
http://boards.developerforce.com/t5/Apex-Code-Development/How-to-query-for-opportunity-from-contact/m-p/474297#M87041
The efforts u put on for giving me a solution is marvelous .
Hats off to u guys Jerun Jose and Sdry.
I raised a case to salesforce on this but they said they stopped support for developers .so i raised a case from my company org lets check what they will do.
Thanks to sanjdev also.
Thanks
Anil.B