Associate user when created with an existing Account

123 Views Asked by At

I have a code that checks an inquery database a for user, If the user does not exist, then the code will create a new user in Contact,

Here is only part of the code:

newcontact = [SELECT Id, FirstName FROM Contact WHERE Contact.Email =inquery.email__c]; 

      if(newcontact.size() == 0) {
        Account[] aa = [SELECT Id FROM Account WHERE Name = :inquery.Institution__c];

      contact = new Contact();
     contact.FirstName  = inquery.First_Name__c;
     contact.LastName   = inquery.Last_Name__c;
     contact.Email      = inquery.email__c;
      contact.AccountId  = aa.Id;
      try {
     insert contact; // inserts the new record into the database
   } catch (DMLException e) {
     ApexPages.addMessage(new ApexPages.message(ApexPages.severity.ERROR,'Error creating new contact'));
     return null;
   }

I am trying to associate that user with an existing Account?

But the following line gives me an error:

contact.AccountId  = aa.Id;

Which is

 Initial term of field expression must be a concrete SObject: LIST<Account> at line 

And aa.size() returns 1, as it should, Because the account exists,

Can someone please tell me what wrong?

Thanks

2

There are 2 best solutions below

0
On

This line contact.AccountId = aa.get(0).Id; will fail if your query returns 0 rows. Make sure to wrap your code within a if (aa.size() > 0) clause to ensure proper execution in all cases.

0
On

Ok I fixed it, as follows:

contact.AccountId = aa.get(0).Id;

Best