You need to sign in to do that
Don't have an account?
The Walrus
Adding a database row using an apex class
I built a very simple apex class, based on a test class, to add a row of data to a database table:
Private class Invoice_Balance_Record_Inserter { static void validateInvoice_Payment() { Invoice_Balance__c i = new Invoice_Balance__c(Name='I110811EP3-1', Invoice__c = 'a00U00000020IgSIAU', Invoice_Balance_Amount__c=300); insert i; } }
The code will run, either in system log or in force ide, but I don't end up with a record in Invoice_Balace__c. Is there a way I can run this code that will result in a record being added? thanks
In System Log: do not use the class or method to run the code. Just write the code and click execute. The record will be inserted.
Invoice_Balance__c i = new Invoice_Balance__c(Name='I110811EP3-1',
Invoice__c = 'a00U00000020IgSIAU',
Invoice_Balance_Amount__c=300);
insert i;
All Answers
The first question I would have is where is this being called from? Is this being called from a trigger? or Another class?
You may need to also create a trigger to call the method:
trigger Invoice_AfterInsertUpdate on Invoice__c(after insert, after update) {
Invoice_Balance_Record_Inserter.validateInvoice_Payment(trigger.new);
}
Try changing the Private class to Public, then in the method section add:
public class Invoice_Balance_Record_Inserter {
public static void validateInvoice_Payment(list<Invoice__c> lstInvoice) {
list<Invoice_Balance__c> invBal = new list<Invoice_Balance__c>();
for(Invoice__c inv : lstInvoice) {
Invoice_Balance__c i = new Invoice_Balance__c(Name='I110811EP3-1',
Invoice__c = 'a00U00000020IgSIAU',
Invoice_Balance_Amount__c=300);
invBal.add(i);
}
database.insert(invBal);
}
}
Private classes are generally used only for @isTest classes
See if that works for you.
It's not really being called from anywhere - I was hoping to get a quick method to add some rows to my table for testing purposes.
Eventually, I will probable use the data loader or a similar capability to get some excel spreadsheet rows into a table, but that is a little further down the line. Right now, a little script that would add a row would be handy. Thanks
In System Log: do not use the class or method to run the code. Just write the code and click execute. The record will be inserted.
Invoice_Balance__c i = new Invoice_Balance__c(Name='I110811EP3-1',
Invoice__c = 'a00U00000020IgSIAU',
Invoice_Balance_Amount__c=300);
insert i;
thank you - that worked great!