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
Map gd = 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.