Hi L See,
Lorsque le traitement par lots gère plusieurs enregistrements, la boucle s'exécute de manière répétée, dépassant instantanément la limite de transaction et provoquant l'échec de l'opération.
Pour résoudre cette limitation, vous devez adapter votre code pour le traitement en masse (bulkification) en déplaçant toutes les interactions avec la base de données totalement en dehors de vos boucles d'itération. Vous devez d'abord déclarer un Set Apex et exécuter une première boucle sur vos enregistrements uniquement pour collecter leurs numéros d'identification uniques dans ce Set. Ensuite, vous exécutez une unique requête SOQL en dehors de la boucle, en utilisant la clause de liaison IN pour récupérer simultanément tous les enregistrements correspondants à partir des identifiants stockés dans votre Set. Vous devez ensuite affecter les résultats de cette requête à une Map Apex. Cette structure en mémoire permet à votre boucle de traitement final d'extraire les données associées directement depuis la Map plutôt que d'interroger à nouveau la base de données, réduisant ainsi des centaines d'appels à un seul et permettant à votre traitement par lots de s'exécuter avec succès.
J'espère que cette réponse vous a apporté des informations utiles. Si tel est le cas, veuillez cliquer sur « accepter la réponse ». Si vous avez des questions, n'hésitez pas à laisser un commentaire.
VPHAN