You need to sign in to do that
Don't have an account?
Denise Neal 2
For this project:Quick Start: Apex Coding for Admins
I have gotten all the way to Create a Trigger, and I get:
Couldn’t find the record named 'Nina Simone' with Email 'nsimone@test.com'. Please double check the instructions.
When I try to create the candidate, I get:
CreateContact: execution of AfterInsert caused by: System.QueryException: List has more than 1 row for assignment to SObject Class.CreateContactFromCan.createContact: line 5, column 1 Trigger.CreateContact: line 5, column 1
Couldn’t find the record named 'Nina Simone' with Email 'nsimone@test.com'. Please double check the instructions.
When I try to create the candidate, I get:
CreateContact: execution of AfterInsert caused by: System.QueryException: List has more than 1 row for assignment to SObject Class.CreateContactFromCan.createContact: line 5, column 1 Trigger.CreateContact: line 5, column 1
Assumption: inserion happens but due to some issue in after insert event, transaction rolls back.
****BankAcct
public class BankAcct {
private integer balance=0;
public string acctName;
//Declare a public string attribute called accttype
public string accttype;
public void makeDeposit (integer deposit) {
balance = balance + deposit;
}
//Declare a method named getBalance that returns an integer and no input parameter
public integer getBalance() {
//Return the balance attribute
return balance;
}
}
***For CreateContactFromCan
public with sharing class CreateContactFromCan {
//Declare a method that does not return anything and takes one input parameter of a Candidate list object called candsFromTrigger
public void createContact (List<Candidate__c> candsFromTrigger){
//Select the Recruiting record from the database and assign to an object called candAcct from the sObject Account class
Account candAcct = [SELECT a.Id FROM Account a WHERE a.Name = 'Recruiting'];
//Instantiate a Contact list object from the List class called conList
List<Contact> conList = new List<Contact>();
//Declare a For list loop to loop through the input parameter list candsFromTrigger with an iterationvariable called currentCandidate
for(Candidate__c currentCandidate:candsFromTrigger){
//Instantiate an object called con from the sObject class contact
Contact con = new Contact();
//Set the attribute AccountID of the con object to the value of the Id attribute of the candAcct object
con.AccountId = candAcct.Id;
//Set the attribute Firstname of the con object to the value of the First_Name__c attribute of the currentCandidate object
con.FirstName = currentCandidate.First_Name__c;
//Set the attribute Lastname of the con object to the value of the Last_Name__c attribute of the currentCandidate object
con.LastName = currentCandidate.Last_Name__c;
//Set the attribute Email of the con object to the value of the Email__c attribute of the currentCandidate object
con.Email = currentCandidate.Email__c;
//Add the con object to the conList
conList.add(con);
}
//Persist the conList to the database
Database.insert(conList);
}
}
****And the Trigger on Candidates
trigger CreateContact on Candidate__c (after insert){
//Instantiate an object called cc from the class CreateContactFromCan
CreateContactFromCan cc = new CreateContactFromCan();
//Invoke the method createContact and send a List of Candidates as an input parameter
cc.createContact(Trigger.new);
}
Nice posting here. Saved life.
Thanks
Abhishek Shukla
Account candAcct = [SELECT Id FROM Account WHERE Name = 'Recruiting' LIMIT 1];
Add LIMIT 1 at the end in class CreateContactFromCan.