####クエリーの発行
xxx__c[] result = Database.query(query);
sObject[] result = [SELECT xxx FROM xxx_c];
if (result.isEmpty()){
//0件チェック
...
}else{
...
}
//1件しかデータがない場合は下記の形式も取れるが、データが0件の場合はnullが返るわけではなくQueryExceptionが返ることに注意
xxx__c result = Database.query(query);
####日付の条件1
DAY_IN_YEAR関数を使って年で比較する
WHERE DAY_IN_YEAR(convertTimezone(StartDateTime)) >= :fromDayOfYear AND DAY_IN_YEAR(convertTimezone(StartDateTime)) <= :toDayOfYear
####日付の条件2
LAST_N_DAYS関数を使って過去の日付分を取り出す(0:00からxx日前のデータを取得する。本日のデータも含まれる)
LastPublishedDate = LAST_N_DAYS:5'
####DateとDatetimeの比較
DAY_ONLY(datetime__c) =:date
####日付文字列との比較
DAY_ONLY(createddate) >= 2017-03-26
####レコードタイプの取得
Nameは表示ラベル、DeveloperNameはレコードタイプ名として英字で指定したもの
SELECT RecordTypeId, RecordType.Name, RecordType.DeveloperName FROM xx
xx はオブジェクト
上記のDeveloperNameからレコードタイプIDを取得するクエリー
SELECT DeveloperName, Id, Name FROM RecordType WHERE sObjectType='xxx__c' AND DeveloperName='###'
####公開グループの取得
Type='Regular'が通常のグループ。ロールに紐付いて作成されるものは'RoleAndSubordinates'がセットされる
//公開グループの取得
Group[] groups = [SELECT DeveloperName, Name, Type FROM Group WHERE DeveloperName=:xx];
//グループメンバーの取得 (UserOrGroupIdにユーザーまたはグループのIDがセットされている
SELECT GroupId, Id, UserOrGroupId FROM GroupMember WHERE GroupId=:groups[0].Id
####権限セットを持っているかのチェック
SELECT AssigneeId, Id FROM PermissionSetAssignment
WHERE PermissionSetId in
(SELECT Id FROM PermissionSet WHERE Name = '##権限セット名##')
###ロール関連
API名(xx_xx)は DeveloperName項目を使う。
//特定のロールに紐付くユーザを取得する。developerNameは英字名
SELECT Id, Name From User WHERE userRoleId in
(SELECT Id from UserRole WHERE DeveloperName = 'xxxx')
//ユーザーに紐付くロール名を取得する
SELECT Id, userRole.Name, Name FROM User WHERE Id='xxx'
添付ファイル(Files)
- 従来からの添付ファイルはサブクエリー(SELECT Id, Name FROM Attachments)を使って取得できるが、Filesに格納されたファイルは ContentDocumentLinkオブジェクトから取得する。
ContentDocumentはファイルを管理する親オブジェクトであり、実際のファイルを取得するには各バージョンを管理する ContentVersion から取得する。 - ファイル本体はContentVersion#VersionDateフィールドにBase64形式で格納されている。
- ContentBodyは内部用なので直接使わない。代わりにContentVersionを使う。
//LinkedEntityIdにレコードのIDを指定すると、そのレコードに紐付くファイルの一覧を取得できる
SELECT ContentDocumentId, Id FROM ContentDocumentLink
WHERE LinkedEntityId ='a0SN0000004B75W'
//上記で取得できるのはContentDocumentIdなので、実際にダウンロード可能な各バージョンは
ContentVersionオブジェクトから取得する
SELECT Id, CreatedDate, Title, Description, FileType, Owner.UserName,
VersionNumber, ContentDocumentId
FROM ContentVersion Where IsLatest = true and ContentDocumentId in :cIds order by CreatedDate desc
####取引先住所の検索
BillingAddressやShippingAddressという項目はない。
BillingCountry : 国(請求先)
BillingPostalCode : 郵便番号(請求先)
BillingState : 都道府県(請求先)
BillingCity : 市区郡(請求先)
BillingStreet : 町名・番地(請求先)
SELECT BillingCountry,BillingPostalCode,BillingState,
BillingCity,BillingStreet FROM Account
####ユーザー住所の検索
Addressではなく、個別に項目を検索する。
PostalCode : 郵便番号
Country : 国
State : 都道府県
City : 市区郡
Street : 町名・番地
SELECT Country, PostalCode, State, City, Street From User
####グループ関数を使う
AggregateResultを使う
参考
AggregateResult[] groupedResults
= [SELECT AVG(Amount)aver FROM Opportunity];
Object avgAmount = groupedResults[0].get('aver');