[Salesforce][ENG]Get Prefix from ObjectName

Share to get the Prefix from Salesforce’s ObjectName.

Execute the following on the “Open Execute Anonymous Window” screen of the “Debug” tab on the development console screen.

    String objName ='Account';	
    schema.sObjectType sObjType = Schema.getGlobalDescribe().get(objName);
    system.debug('prefix:'+(sObjType.getDescribe().getKeyPrefix()));

The DebugLog result is below.

prefix:001

[Salesforce][ENG]Get object API reference name from object label

Here is an example of getting an object display label from an object API reference name.

    String searchObjLabelName = '取引先';
    Map<String, Schema.SObjectType> gd = Schema.getGlobalDescribe();
    for (String sKey : gd.keySet()) {
        Schema.DescribeSObjectResult targetObject = gd.get(sKey).getDescribe();
        if(targetObject.getLabel() == searchObjLabelName){
			System.debug('targetObject.getLabel()----->targetObject.getName()::::::'+targetObject.getLabel()+'----->'+targetObject.getName());
        }
    }

[Salesforce]リストビューで表示されたレコードを一括処理

リストビューで表示されたレコードを一括してコピー例を紹介します。

コントローラ

public with sharing class CustomAccountSetController {
    public List<Account> selectedAccs {get;set;}
    public CustomAccountSetController(ApexPages.StandardSetController controller) {
        List<Account> accs = controller.getSelected();
        this.selectedAccs = [SELECT Id, Name FROM Account WHERE Id IN :(new Map<Id, Account>(accs)).keySet()];
    }
    public void execute() {
   system.debug('execute');
    }
}

Visualforceページ

<apex:page standardController="Account" recordSetvar="accs" extensions="CustomAccountSetController">
    <apex:form>
        <apex:pageBlock title="選択済み取引先" >
            <apex:pageBlockButtons location="bottom">
                <apex:commandButton action="{!execute}" value="実行" oncomplete="history.back();" />
            </apex:pageBlockButtons>
            <apex:pageBlockTable value="{!selectedAccs}" var="acc">
                <apex:column value="{!acc.Name}"/>
            </apex:pageBlockTable>
        </apex:pageBlock>
    </apex:form>
</apex:page>

カスタムボタン

取引先リストビュー

[Salesforce]Visualforceアクション

Visualforceアクションを紹介します。

Visualforceコントローラ

public with sharing class lifecycle {

    private final Account acct;
    Integer EmpAdd;

    public lifecycle(myController controller) {
        this.acct = (Account)controller.getAccount();
    }

    public String getGreeting() {
        return acct.name + ' Current Information';
    }
    
    public void resetEmp() {
        acct.numberofemployees = 10;
        update acct;
    }
}

Visualforceページ

<apex:page controller="myController" tabStyle="Account" extensions="lifecycle" action="{!resetEmp}">
    <apex:messages />
    <apex:pageBlock title="{!greeting}">
        <apex:outputLabel value="{!$ObjectType.account.fields.Name.label}: " 
                          for="acctName"/>
        <apex:outputField value="{!account.name}" id="acctName"/>
        <br/>
        <apex:outputLabel 
              value="{!$ObjectType.account.fields.NumberOfEmployees.label}: "
              for="emps"/>
        <apex:outputField value="{!account.NumberOfEmployees}" id="emps"/>
        <br/>
    </apex:pageBlock>
    <apex:pageBlock title="Variable values">
        <c:editMode value="{!$CurrentPage.parameters.key}"/>
    </apex:pageBlock>
    <apex:form rendered="{!$CurrentPage.parameters.key = 'true'}">
        <apex:pageBlock title="Update the Account" id="thePageBlock">
            <apex:pageBlockSection columns="1">
                <apex:inputField id="aName" value="{!account.name}"/>
                <apex:inputField value="{!account.NumberOfEmployees}"/>
                <apex:pageBlockSectionItem>
                    <apex:outputLabel value="{!$ObjectType.account.fields.Industry.label}"
                        for="acctIndustry"/>
                    <apex:actionRegion>
                        <apex:inputField value="{!account.Industry}" id="acctIndustry">
                            <apex:actionSupport event="onchange" rerender="thePageBlock"
                                status="status"/>
                        </apex:inputField>
                    </apex:actionRegion>
                </apex:pageBlockSectionItem>
            </apex:pageBlockSection>
            <apex:pageBlockButtons location="bottom">
                <apex:commandButton action="{!save}" value="Save"/>
                <apex:commandButton action="{!cancel}" value="Cancel" immediate="true"/>
            </apex:pageBlockButtons>
        </apex:pageBlock>
    </apex:form>
</apex:page>

上記のVisualforceページ以下がアクションです。

action="{!resetEmp}"

[Salesforce]StandardController クラス

StandardController クラス紹介します。

Visualforceページコントローラ

public class myControllerExtension {

    private final Account acct;
    
    // The extension constructor initializes the private member
    // variable acct by using the getRecord method from the standard
    // controller.
    public myControllerExtension(ApexPages.StandardController stdController) {
        this.acct = (Account)stdController.getRecord();
    }

    public String getGreeting() {
        return 'Hello ' + acct.name + ' (' + acct.id + ')';
    }
}

Visualforceページ

<apex:page standardController="Account" extensions="myControllerExtension">
    {!greeting} <p/>
    <apex:form>
        <apex:inputField value="{!account.name}"/> <p/>
        <apex:commandButton value="Save" action="{!save}"/>
    </apex:form>
</apex:page>

[Salesforce]Exception

[Salesforce]Exceptionについて紹介します。

getCause:
例外オブジェクトとして例外の原因を返します。

getLineNumber:
例外が発生した箇所の行番号を返します。

getMessage: 
ユーザに表示されるエラーメッセージを返します。

getStackTraceString: 
文字列としてスタック追跡を返します。

getTypeName: 
DMLException、ListException、MathException などの例外種別を返します。

try {
    xxx
} catch(Exception e) {
    System.debug('Exception type: ' + e.getTypeName());
    System.debug('Message: ' + e.getMessage());
    System.debug('Cause: ' + e.getCause());
    System.debug('Line number: ' + e.getLineNumber());
    System.debug('Stack trace: ' + e.getStackTraceString());
}

[phpMyAdmin]編集、コピー、削除リンク表示

編集、コピー、削除リンク表示手順を共有します。

・メニュー「構造」押下

・セクション「インデックス」の「実行」押下

・項目「インデックス名」に「PRIMARY」入力、項目「インデックスの選択」に「PRIMARY」選択、カラムに、例えば項目「id(text)」選択とサイズ「9」入力

・「実行」押下

上記の順で実行すると、項目「id」に鍵マークが表示される。

メニュー「表示」押下すると、「編集」、「コピー」、「削除」リンクが表示される。