Skip to main content
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   

 
11 个回答
  1. 2018年10月23日 12:14
    There are 3 parts of code involved, the trigger, and the Appex Classes, this should be pretty straight forward, not sure how I messed it up, you put it in workbench then it has the code for you to copy as you go. This is to create a contact from a candidate form. When I attempt to create the candidate is when I have the error.  

    ****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);

    }

     
0/9000