I spend most of my time over Community, best place to learn and share knowledge. There are many questions related to sObject, and out of all a very interesting one is "How I can insert sObject record dynamically?"
I will provide a user interface with two text fields which will take "Object Name" and "Record Name" as string from user. And when I click on Save the record with Name entered should be inserted in the provided Object. Is this possible, of-course it is.
Here is the Visualforce Page code :
Here is the Apex Code :
Code provided is flexible and you can extend it according to your need.
I will provide a user interface with two text fields which will take "Object Name" and "Record Name" as string from user. And when I click on Save the record with Name entered should be inserted in the provided Object. Is this possible, of-course it is.
Here is the Visualforce Page code :
<apex:page controller="InsertDynamicSobjectController"> <apex:form > <apex:pageBlock > <apex:pageBlockButtons > <apex:commandButton value="Save" action="{!Save}"/> </apex:pageBlockButtons> <apex:pageMessages /> <apex:pageBlockSection > <apex:pageBlockSectionItem > <apex:outputLabel value="Enter Object Name"/> <apex:inputText value="{!ObjectName}"/> </apex:pageBlockSectionItem> <apex:pageBlockSectionItem > <apex:outputLabel value="Enter Name for Record"/> <apex:inputText value="{!RecordName}"/> </apex:pageBlockSectionItem> </apex:pageBlockSection> </apex:pageBlock> </apex:form> </apex:page>
Here is the Apex Code :
public class InsertDynamicSobjectController { public String ObjectName {get; set;} public String RecordName {get; set;} public InsertDynamicSobjectController() { ObjectName = '' ; RecordName = '' ; } public PageReference Save() { //use GlobalDecribe to get a list of all available Objects Mapgd = Schema.getGlobalDescribe(); Set objectKeys = gd.keySet(); if(objectKeys.contains(Objectname.toLowerCase())) { try { //Creating a new sObject sObject sObj = Schema.getGlobalDescribe().get(ObjectName).newSObject() ; sObj.put('name' , RecordName) ; insert sObj ; PageReference pg = new PageReference('/'+sObj.Id) ; return pg ; } Catch(Exception e) { ApexPages.addMessages(e) ; return null ; } } else { ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'Object API name is invalid')) ; return null ; } } }
Code provided is flexible and you can extend it according to your need.