Loading

De Apex-fout 'Lijst heeft geen rijen voor toewijzing aan SObject'

Publicatiedatum: Aug 31, 2020
Beschrijving


De volgende query retourneert geen enkele record:

"[SELECT Id FROM Account WHERE Id = :Trigger.new[0].Account__c]"

Het foutbericht 'Lijst heeft geen rijen voor toewijzing aan SObject' wordt weergegeven wanneer de query geen rijen retourneert.

Oplossing
 
 
Terwijl een 'SELECT'-query normaal gesproken een array/lijst retourneert, wordt met deze instructies de verkorte syntax gebruikt die aanneemt dat er slechts één rij wordt geretourneerd. Wat niet vanzelfsprekend is, is dat deze syntax ook aanneemt dat er precies één rij wordt geretourneerd.
 
Hoewel het onwaarschijnlijk is dat dit bij 'Contact' gebeurt, is het zeer waarschijnlijk dat het gebeurt bij alle aangepaste objecten die u maakt, vooral wanneer er een 'WHERE'-instructie wordt gebruikt die mogelijk nul rijen oplevert, zoals:
 
Player__c player = [SELECT Id from Player__c where Name = :username]; if (player != null)  p = player.Id;

De bovenstaande code mislukt als er geen 'Player__c'-record is met een overeenkomende gebruikersnaam. Er wordt dan in feite geen null geretourneerd.
 

Het zou veiliger zijn om het volgende te doen:
Player__c[] players = [SELECT Id from Player__c where Name = :username]; if (players.size() > 0) p = players[0].Id;

Dit is een situatie waarvoor u normaal gesproken niet zou denken aan het maken van een test, dus het is veiliger om gewoon de mogelijkheid te voorkomen.
Knowledge-artikelnummer

000385697

 
Wordt geladen
Salesforce Help | Article