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
colin Berrouardcolin Berrouard 

Assigning a value to a field object

Hi
I have an Insert trigger (after insert) on object Reservation Terrain than update Terrain Disponible object.
I have to update the Terrain_Disponible.Available field to "NO", and update Terrain_Disponible.Date_reserve field to Reservation_Terrain.Date_de_reservation value

Here is the schema

User-added image

Here the code with an error at line 13
trigger TRG_Reservation2 on Reservation_Terrain__c (after insert) {
    Set<Id> tdIdSet = new Set<Id>();
    for(Reservation_Terrain__c rt: Trigger.new) {
        if(rt.Terrain_Disponible__c != null)
            tdIdSet.add(rt.Terrain_Disponible__c);
    }
   
    if(!tdIdSet.isEmpty()) {
        List<Terrain_Disponible__c> tdList = [SELECT Id, Name, Available__c, Date_reserve__c FROM Terrain_Disponible__c WHERE Id IN: tdIdSet];
       
        for(Terrain_Disponible__c td: tdList) {
            td.Available__c = 'NO';
            td.Date_reserve__c = Date_de_reservation__c.new;  <-- The error line
        }
        update tdList;
    }
}

Could you give me a hand?

thank you

 
Best Answer chosen by colin Berrouard
Mahesh DMahesh D

Hi Colin,

Please find the below code:

trigger TRG_Reservation2 on Reservation_Terrain__c (after insert) {
    Set<Id> tdIdSet = new Set<Id>();
	Map<Id, Reservation_Terrain__c> rtMap = new Map<Id, Reservation_Terrain__c>();
    for(Reservation_Terrain__c rt: Trigger.new) {
		if(rt.Terrain_Disponible__c != null) {
			tdIdSet.add(rt.Terrain_Disponible__c);
			rtMap.put(rt.Terrain_Disponible__c, rt);
		}
    }
    
	if(!tdIdSet.isEmpty()) {
		List<Terrain_Disponible__c> tdList = [SELECT Id, Name, Available__c, Date_reserve__c FROM Terrain_Disponible__c WHERE Id IN: tdIdSet];
		
		for(Terrain_Disponible__c td: tdList) {
			td.Available__c = 'NO';
			td.Date_reserve__c = rtMap.get(td.Id).Date_de_reservation__c;
		}
		update tdList;
	}
}

Please do let me know if it helps you.

Regards,
Mahesh

All Answers

venkat-Dvenkat-D
  td.Date_reserve__c = Trigger.NewMap.get(td.Reservation_Terrain__c ).Date_de_reservation__c

assuming Reservation_Terrain__c  is the field name of reservation terrain in Terrain_Disponible. if its not replace it with the name
VamsiVamsi
Hi colin Berrouard,

Please try with the below code and make sure with the field API names and object API names. please make sure with the child relationship name in the sub query ***** Reservation_Terrains__c ******

trigger TRG_Reservation2 on Reservation_Terrain__c (after insert)
{
    Set<Id> tdIdSet = new Set<Id>();
list<Terrain_Disponible__c> ttdlist = new ttdlist<Terrain_Disponible__c>();
    for(Reservation_Terrain__c rt: Trigger.new)
{
        if(rt.Terrain_Disponible__c != null)
            tdIdSet.add(rt.Terrain_Disponible__c);
    }
if(!tdIdSet.isEmpty())
{
        List<Terrain_Disponible__c> tdList = [SELECT Id, Name, Available__c, Date_reserve__c,(select Date_de_reservation__c from Reservation_Terrains__c ) FROM Terrain_Disponible__c WHERE Id IN: tdIdSet];
}
       
        for(Terrain_Disponible__c td: tdList)
{
            td.Available__c = 'NO';
        for (Reservation_Terrain__c  r : td.Reservation_Terrains__c )
         {
            td.Date_reserve__c = r.Date_de_reservation__c;
           ttdlist.add(td);
          }
}
        update ttdlist;
}


if you have any issue with the above code then please let me know or else if it works then please mark this as best answer !!!!
Mahesh DMahesh D

Hi Colin,

Please find the below code:

trigger TRG_Reservation2 on Reservation_Terrain__c (after insert) {
    Set<Id> tdIdSet = new Set<Id>();
	Map<Id, Reservation_Terrain__c> rtMap = new Map<Id, Reservation_Terrain__c>();
    for(Reservation_Terrain__c rt: Trigger.new) {
		if(rt.Terrain_Disponible__c != null) {
			tdIdSet.add(rt.Terrain_Disponible__c);
			rtMap.put(rt.Terrain_Disponible__c, rt);
		}
    }
    
	if(!tdIdSet.isEmpty()) {
		List<Terrain_Disponible__c> tdList = [SELECT Id, Name, Available__c, Date_reserve__c FROM Terrain_Disponible__c WHERE Id IN: tdIdSet];
		
		for(Terrain_Disponible__c td: tdList) {
			td.Available__c = 'NO';
			td.Date_reserve__c = rtMap.get(td.Id).Date_de_reservation__c;
		}
		update tdList;
	}
}

Please do let me know if it helps you.

Regards,
Mahesh
This was selected as the best answer
colin Berrouardcolin Berrouard
Thanks Mahesh

It works