Tag Archives: SOQL

How to get picklist values based on record type in Visualforce page?

Here in below example I’ve a custom object “Customer__c”, which has two record types “HR” and “Marketing”.

Apex Class:

public with sharing class recordTypeSample{

    public String selectedRT {get;set;}
    public List<SelectOption> recordTypeList {get;set;}
    public Customer__c customer {get;set;}
    
    public recordTypeSample(){
    
        customer = new Customer__c();
        recordTypeList = new List<SelectOption>();
        getRecordTypeList();
    
    }
    
    public void getRecordTypeList(){
         
        List<RecordType> rtList = [SELECT Id,Name FROM RecordType WHERE SObjectType='Customer__c'];
        recordTypeList.add(new SelectOption('--None--', '--None--'));
        for(RecordType rt : rtList)
        {
            recordTypeList.add(new SelectOption(rt.Id, rt.Name));
        }
    }
    
     public void getPickListValues(){
     
        if(selectedRT != null){
            customer = new Customer__c(RecordTypeId = selectedRT);
        }
    }
}

Visualforce Page:

<apex:page controller="recordTypeSample">
    <apex:form >
        <apex:pageBlock >
            <apex:pageBlockSection >
                <apex:selectList value="{!selectedRT}" size="1" multiselect="false" label="Record Type" title="Record Type" id="recordTypes"> 
                    <apex:actionSupport event="onchange" action="{!getPickListValues}" reRender="categoryPicList" />
                    <apex:selectOptions   value="{!RecordTypeList}" /> 
                </apex:selectList>
                <apex:inputField id="categoryPicList" value="{!customer.Category__c}"/>
            </apex:pageBlockSection>
        </apex:pageBlock>
    </apex:form>
</apex:page>

HR Record Type Picklist :

Marketing Record Type Picklist :

How SOQL differs from SQL?

  • No INSERT, UPDATE or DELETE statements, only SELECT.
  • No command execution.
  • No wild cards for fields, all fields must be explicitly typed.
  • No JOIN statement. However, we can include information from parent objects like Select name, phone, account.name from contact.
  • No UNION operator.
  • Queries cannot be chained together.

How to query data which was modified in specific time limit in Salesforce?

Below is the SOQL to query data which was modified between 8 PM and 10 PM.

Sample SOQL:

SELECT Id, LastModifiedDate FROM Contact WHERE LastModifiedDate = TODAY AND HOUR_IN_DAY(LastModifiedDate) >= 20 AND HOUR_IN_DAY(LastModifiedDate) < 22