Tag Archives: Apex

Export Data In Excel Using Visualforce Page

Here in below example I have a VF Page “AccountDetails.vf” with parameter of account Id. In that VF Page I’m showing the Account record respective Contacts. And a button that export the Contact records to excel sheet. Another VF Page “ContactExportToExcel.vf” for excel.

Viualforce Page: AccountDetails.vf

<apex:page standardController="Account" extensions="ContactExportToExcel">
    <apex:form>
        <apex:pageBlock title="Hello {!$User.FirstName}!">
            You are viewing the {!account.name} account.
        </apex:pageBlock>
        <apex:pageBlock title="Contacts">
            <apex:pageBlockTable value="{!account.Contacts}" var="contact">
                <apex:column value="{!contact.Name}"/>
                <apex:column value="{!contact.Email}"/>
                <apex:column value="{!contact.Phone}"/>
            </apex:pageBlockTable>
        </apex:pageBlock>
        
        <apex:commandButton value="Export To Excel" Action="{!ExportToExcel}"/>  
    </apex:form>
</apex:page>

Remember to pass an Account ID as a query string to this page.

Controller:

public with sharing class ContactExportToExcel {
    
    Public List<String> selectedFieldsList {get;set;}
    Public List<Contact> conList {get;set;}
    
    public ContactExportToExcel(ApexPages.StandardController stdCtrl) {
        Account acc = (Account)stdCtrl.getRecord();
        conList = New List<Contact>();
        conList = [Select Id, Name, Email, Phone From Contact Where AccountId =: acc.Id];
    }
    
    Public PageReference ExportToExcel(){
        selectedFieldsList = New List<string>();
        selectedFieldsList.add('Name'); 
        selectedFieldsList.add('Email');
        selectedFieldsList.add('Phone');
        
        PageReference pgRef = New Pagereference('/apex'+'/ContactExportToExcel');
        pgRef.setRedirect(false); 
        return pgRef;
    }
    
}

Visualforce Page: ContactExportToExcel.vf

<apex:page standardController="Account" extensions="ContactExportToExcel" contentType="application/vnd.ms-excel#Contacts.xls" cache="true">
    <apex:pageBlock >
        <apex:pageblocktable value="{!conList }" var="tab">
            <apex:repeat value="{!selectedFieldsList}" var="field">
                <apex:column value="{!tab[field]}"/>
            </apex:repeat>
        </apex:pageblocktable>
    </apex:pageBlock>
</apex:page>

Output:

Select All Checkbox Using Apex in Visualforce Page

Controller:

public class Sample {
    
    public List<ContactWrapper> allContacts { get; set; }
    public Boolean allChecked { get; set; }
    
    public Sample() {
        allContacts = new List<ContactWrapper>();
        allChecked = false;
        
        for(Contact con: [SELECT Name, Title, Department, Email From Contact LIMIT 10]){ 
            allContacts.add(new ContactWrapper(con));
        } 
    }
    
    public PageReference CheckAll(){
        
        for(ContactWrapper con : allContacts){
            con.selected = allChecked;
        }
        
        return null;
    }
    
    public PageReference ProcessSelectedContacts(){
        
        for (ContactWrapper contactWrapper : allContacts ){
            if(contactWrapper.selected == true){
                /* Do Some Processing */
            }
        }
        
        return null;
    }
    
    public class ContactWrapper {
        
        public Contact con{get; set;}
        public Boolean selected {get; set;}
        
        public ContactWrapper(Contact c){
            con = c;
            selected = false;
        }
    }
}

Visualforce Page:

<apex:page controller="Sample">
    <apex:form>
        <apex:dataTable value="{!allContacts}" var="c" id="contactsTable">
            <apex:column >
                <apex:facet name="header">
                    <apex:inputCheckbox value="{!allChecked}">
                        <apex:actionSupport event="onclick" action="{!CheckAll}" rerender="contactsTable"/>
                    </apex:inputCheckbox>
                </apex:facet>
                <apex:inputCheckbox value="{!c.selected}"/>
            </apex:column>
            <apex:column value="{!c.con.Name}" headervalue="Full Name"/>
            <apex:column value="{!c.con.Title}" headervalue="Title"/>
            <apex:column value="{!c.con.Department}" headervalue="Department"/>
            <apex:column value="{!c.con.Email}" headervalue="Email"/>
        </apex:dataTable>
        <apex:commandButton action="{!ProcessSelectedContacts}" value="Process Selected Contacts"/>
    </apex:form>
</apex:page>

Output:

Get Map Result From SOQL Query in Salesforce

//Creating Map with account id as key and account record as value
Map<Id,Account> accountMap = new Map<Id,Account>([SELECT Id, Name, Site, Rating, AccountNumber From Account LIMIT 100]);
 
//Getting list of account using map.values method
List<account> accList = accountMap.values();
 
//Getting set of account Id's using map.keySet method
Set<Id> accIdSet = accountMap.keySet();
 
//Getting list of account Id's using list.addAll method
List<Id> accIdList.addAll(accIdSet);

SOQL For Loop

Biswajeet   March 19, 2014   No Comments on SOQL For Loop

The SOQL for loops iterate over ALL the sObjects returned by a SOQL query. Here is the syntax for the for loop in SOQL:

Option 1 – (Include the SOQL in the loop definition):

for (someVariables : [soql_query])
{
    //Your Code
}

Note: The variables above must be of the same type as the sObject that are returned by the soql_query. Here’s an example below of a simple for loop function that uses the clauses WHERE and LIKE:

String s = ‘Biswajeet Samal’;
For ( Lead a : [SELECT Id, Name from Lead where Name = : (s)])
{
    //Your Code
}

Option 2 – (Create a list of results (sObject list) first and then loop through them):

// Create a list of account records from a SOQL query
Account[] accs = [SELECT Id, Name FROM Account WHERE Name =  'Biswajeet Samal'];
  
// Loop through the list and update the Name field
for(Account a : accs){
   a.Name = 'Biswajeet Samal';
}

 

How to deploy any trigger from sandbox to production?

In order to deploy a trigger from sandbox to production, you need to take care of some points:

  • At first I would like to request you all that before going for any deployment, make sure that there is no test failure or less than 75% code coverage in Production Instance. Because when we deploy any thing from sandbox to Production, “Run All Test” is performed automatically in Production. If there is any issue in Production then it will not let you deploy your new code.
  • If you are deploying any trigger in Production, then you must write a test class for that trigger with no Test failure and more than 75% code coverage.
  • Create deployment connection in sandbox.
  • Create Outbound change set in Sandbox and add your trigger and its associated test class in the change set.
  • Create Inbound change set in Production.
  • Add Change set components in Sandbox.
  • Upload the change set.
  • You can validate the change set in Production.
  • Finally deploy the change set in Production.

Hope this will help to deploy a trigger from sandbox to production.