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
ckellieckellie 

AggregateResult Returning an Error

I am trying to group owner names for a dynamic picklist and I have hit a brick wall that I am not sure how to solve.

 

Here is the error

Non-void method might not return a value or might have statement after a return statement.

 And the code

 

    public List<CampaignMember> getactiveOwners(){
        for(AggregateResult agr : [ Select OwnerName__r.Full_Name__c From CampaignMember  where OwnerName__c != null
             group by OwnerName__r.Full_Name__c]){
             
             
             aOwner = string.valueof(agr.get('ownerName__r.Full_Name__c'));
             }
             }

 

 

How do I solve the error?

 

Thank you

 

Best Answer chosen by Admin (Salesforce Developers) 
cloudcodercloudcoder

try something like this:

 

 

 public List<CampaignMember> getactiveOwners(){
   List<CampaingMember> allMembers = new List<CampaignMember>();
   

        for(CampaignMember m : [ Select OwnerName__r.Full_Name__c From CampaignMember  where OwnerName__c != null
             group by OwnerName__r.Full_Name__c]){
             
             //perform your business logic on 'm'
             //then add it to your List
            allMembers.add(m);
             }

  return allMembers;
  }

 

 

All Answers

bob_buzzardbob_buzzard

This is a syntax error rather than a problem with your query.

 

Your method signature indicates you will return a list of campaign members, but you don't have a return statement.

 

 

ckellieckellie

I am struggling with this type of method,

 

would I write:

 

    public List<CampaignMember> getactiveOwners(){
        for(AggregateResult agr : [ Select OwnerName__r.Full_Name__c From CampaignMember  where OwnerName__c != null
             group by OwnerName__r.Full_Name__c]){
             
             
             aOwner = string.valueof(agr.get('ownerName__r.Full_Name__c'));
             }

return agr;
             }

 

 

cloudcodercloudcoder

try something like this:

 

 

 public List<CampaignMember> getactiveOwners(){
   List<CampaingMember> allMembers = new List<CampaignMember>();
   

        for(CampaignMember m : [ Select OwnerName__r.Full_Name__c From CampaignMember  where OwnerName__c != null
             group by OwnerName__r.Full_Name__c]){
             
             //perform your business logic on 'm'
             //then add it to your List
            allMembers.add(m);
             }

  return allMembers;
  }

 

 

This was selected as the best answer
ckellieckellie

Thank you Quinton,

 

Your code has helped me write my first Aggregate Result.

 

thank you,

ckellie