You need to sign in to do that
Don't have an account?
Alexandre Santos 8
Apex trigger - a.__r__c == NULL
My trigger dont get "a.Reserva__r.Data_de_inicio__c" and "a.Reserva__r.Data_de_terminio__c" !
--------------------------------------------------------------------
trigger RegraDeInscricao on Contactos_inscritos__c (before insert) {
List<Reserva__c> lista1=new List<reserva__c>([Select ID,Orador__c,Data_De_inicio__c,Data_De_terminio__c from Reserva__c LIMIT 25000]);
List<Contactos_inscritos__c> lista2=new List<Contactos_inscritos__c>([Select ID,Colaborador__c,reserva__c,reserva__r.Data_De_Inicio__c,reserva__r.Orador__c,Reserva__r.Data_de_terminio__c from Contactos_inscritos__c WHERE Reserva__c IN :lista1 LIMIT 25000]);
for(Contactos_inscritos__c a:Trigger.new){
for(Contactos_inscritos__c O:lista2){
}
if(a.Colaborador__c == O.reserva__r.Orador__c && a.Reserva__r.Data_de_inicio__c >= O.Reserva__r.Data_De_Inicio__c &&
a.Reserva__r.Data_de_terminio__c <= O.Reserva__r.Data_de_terminio__c) {
a.adderror('teste');
}
if(a.Colaborador__c == O.reserva__r.Orador__c && a.Reserva__r.Data_de_inicio__c <= O.Reserva__r.Data_De_Inicio__c &&
a.Reserva__r.Data_de_terminio__c <= O.Reserva__r.Data_de_terminio__c && a.Reserva__r.Data_de_terminio__c >= O.Reserva__r.Data_De_Inicio__c ) {
a.adderror('teste');
}
if(a.Colaborador__c == O.reserva__r.Orador__c && a.Reserva__r.Data_de_inicio__c >= O.Reserva__r.Data_De_Inicio__c &&
a.Reserva__r.Data_de_terminio__c >= O.Reserva__r.Data_de_terminio__c && a.Reserva__r.Data_de_inicio__c <= O.Reserva__r.Data_de_terminio__c) {
a.adderror('teste');
}
if(a.Colaborador__c == O.reserva__r.Orador__c && a.Reserva__r.Data_de_inicio__c <= O.Reserva__r.Data_De_Inicio__c &&
a.Reserva__r.Data_de_terminio__c >= O.Reserva__r.Data_de_terminio__c ) {
a.adderror('teste');
}
}
}
}
--------------------------------------------------------------------
trigger RegraDeInscricao on Contactos_inscritos__c (before insert) {
List<Reserva__c> lista1=new List<reserva__c>([Select ID,Orador__c,Data_De_inicio__c,Data_De_terminio__c from Reserva__c LIMIT 25000]);
List<Contactos_inscritos__c> lista2=new List<Contactos_inscritos__c>([Select ID,Colaborador__c,reserva__c,reserva__r.Data_De_Inicio__c,reserva__r.Orador__c,Reserva__r.Data_de_terminio__c from Contactos_inscritos__c WHERE Reserva__c IN :lista1 LIMIT 25000]);
for(Contactos_inscritos__c a:Trigger.new){
for(Contactos_inscritos__c O:lista2){
}
if(a.Colaborador__c == O.reserva__r.Orador__c && a.Reserva__r.Data_de_inicio__c >= O.Reserva__r.Data_De_Inicio__c &&
a.Reserva__r.Data_de_terminio__c <= O.Reserva__r.Data_de_terminio__c) {
a.adderror('teste');
}
if(a.Colaborador__c == O.reserva__r.Orador__c && a.Reserva__r.Data_de_inicio__c <= O.Reserva__r.Data_De_Inicio__c &&
a.Reserva__r.Data_de_terminio__c <= O.Reserva__r.Data_de_terminio__c && a.Reserva__r.Data_de_terminio__c >= O.Reserva__r.Data_De_Inicio__c ) {
a.adderror('teste');
}
if(a.Colaborador__c == O.reserva__r.Orador__c && a.Reserva__r.Data_de_inicio__c >= O.Reserva__r.Data_De_Inicio__c &&
a.Reserva__r.Data_de_terminio__c >= O.Reserva__r.Data_de_terminio__c && a.Reserva__r.Data_de_inicio__c <= O.Reserva__r.Data_de_terminio__c) {
a.adderror('teste');
}
if(a.Colaborador__c == O.reserva__r.Orador__c && a.Reserva__r.Data_de_inicio__c <= O.Reserva__r.Data_De_Inicio__c &&
a.Reserva__r.Data_de_terminio__c >= O.Reserva__r.Data_de_terminio__c ) {
a.adderror('teste');
}
}
}
}
You want to access the fields of the related record of an object. but you can't access the related object fields without a query on that object.
If you want to access those fields you have to query on that record.
I hope you find the above solution helpful. If it does, please mark as Best Answer to help others too.
Thanks and Regards,
Deepali Kulshrestha
Try this code:
Trigger:
trigger RegraDeInscricao on Contactos_inscritos__c (after insert) {
if(trigger.IsAfter && trigger.IsInsert) {
RegraDeInscricao_handler.addErrorMethod(trigger.newMap);
}
}
Handler Class:
public class RegraDeInscricao_handler {
public static void addErrorMethod(Map<Id, Contactos_inscritos__c> ciMap) {
try {
List<Contactos_inscritos__c> lista2 = new List<Contactos_inscritos__c>();
List<Contactos_inscritos__c> listaNew = new List<Contactos_inscritos__c>();
listaNew = [Select ID,
Colaborador__c,
reserva__c,
reserva__r.Data_De_Inicio__c,
reserva__r.Orador__c,
Reserva__r.Data_de_terminio__c
from Contactos_inscritos__c
WHERE Id IN : ciMap.keyset()
LIMIT 25000];
Map<Id, Reserva__c> mapa1 = new Map<Id, Reserva__c>([Select ID,
Orador__c,
Data_De_inicio__c,
Data_De_terminio__c
from Reserva__c
WHERE Orador__c != null AND Data_De_inicio__c != null AND Data_De_terminio__c != null
LIMIT 25000]);
if(!mapa1.IsEmpty()) {
lista2 = [Select ID,
Colaborador__c,
reserva__c,
reserva__r.Data_De_Inicio__c,
reserva__r.Orador__c,
Reserva__r.Data_de_terminio__c
from Contactos_inscritos__c
WHERE Reserva__c IN : mapa1.keyset()
LIMIT 25000];
}
if(lista2.size() > 0) {
for(Contactos_inscritos__c a : listaNew) {
for(Contactos_inscritos__c O : lista2) {
if(a.Colaborador__c != null && a.Reserva__r.Data_de_inicio__c != null && a.Reserva__r.Data_de_terminio__c != null) {
if(a.Colaborador__c == O.reserva__r.Orador__c) {
if(ciMap.containsKey(a.Id)) {
ciMap.get(a.Id).addError('teste');
}
}
if(a.Colaborador__c == O.reserva__r.Orador__c && a.Reserva__r.Data_de_inicio__c <= O.Reserva__r.Data_De_Inicio__c &&
a.Reserva__r.Data_de_terminio__c <= O.Reserva__r.Data_de_terminio__c && a.Reserva__r.Data_de_terminio__c >= O.Reserva__r.Data_De_Inicio__c ) {
if(ciMap.containsKey(a.Id)) {
ciMap.get(a.Id).addError('teste');
}
}
if(a.Colaborador__c == O.reserva__r.Orador__c && a.Reserva__r.Data_de_inicio__c >= O.Reserva__r.Data_De_Inicio__c &&
a.Reserva__r.Data_de_terminio__c >= O.Reserva__r.Data_de_terminio__c && a.Reserva__r.Data_de_inicio__c <= O.Reserva__r.Data_de_terminio__c) {
if(ciMap.containsKey(a.Id)) {
ciMap.get(a.Id).addError('teste');
}
}
if(a.Colaborador__c == O.reserva__r.Orador__c && a.Reserva__r.Data_de_inicio__c <= O.Reserva__r.Data_De_Inicio__c &&
a.Reserva__r.Data_de_terminio__c >= O.Reserva__r.Data_de_terminio__c ) {
if(ciMap.containsKey(a.Id)) {
ciMap.get(a.Id).addError('teste');
}
}
}
}
}
}
} catch (Exception ex) {
system.debug('Exception---ofLine--->' + ex.getLineNumber());
system.debug('Exception---Message--->' + ex.getMessage());
}
}
}
I hope you find the above solution helpful. If it does, please mark as Best Answer to help others too.
Thanks,
Ajay Dubedi