본 포스트에서는 각 레코드 타입에 따른 레코드의 사용 방법에 대해 알아보겠습니다.
# 레코드의 데이터 타입
레코드의 데이터 타입은 Visualforce 페이지나 개체의 페이지 레이아웃을 사용하여 화면을 작성할 때,
데이터를 어떠한 형식으로 입력 및 표시하는가에 따라 구분하여 사용합니다.
예를 들어, 똑같은 숫자 데이터를 입력 하더라도, 데이터 타입에 따라 표시되는 형식이 다릅니다.
예) 입력치 : 100
숫자 : 100
통화 : \100 (Salesforce에 설정된 언어 및 지역에 따라 단위가 바뀝니다. 일본이면 ¥, 미국이면 $ )
백분율 : 100%
개체에서 레코드를 생성할 때 선택 가능한 데이터 타입은 다음과 같습니다.
데이터 타입 | 설명 |
롤업 요약 | "누적 집계"라고도 불리며, 주종 관계에서 자식 개체의 특정 항목을 지정하여 데이터의 최대값, 최소값, 합계 등 과 같은 집계 정보를 자동 설정 하는 데이터 타입 |
수식 | 직접 지정한 수식을 계산하여 자동 설정 하는 데이터 타입 |
자동 번호 | 레코드가 등록 될 때 마다 지정된 형식으로 1씩 증가하는 데이터 타입 예) {0000} 로 설정하면 등록되는 레코드마다 0001, 0002, ... 로 자동 증가 |
마스터-세부 사항 관계 | 데이터베이스의 주종 관계와 동일 |
외부 조회 관계 | 부모가 외부 개체인 경우에 사용 |
조회 관계 | 다른 개체를 참조하기 위한 데이터 타입, 관계 필드를 통해 다른 개체의 레코드를 참조 가능 |
URL | 웹 사이트의 주소 입력이 가능한 데이터 타입, 지정된 URL이 별도의 브라우저 창에 표시 |
긴 텍스트 영역 | 긴 문자열을 저장할 때 사용되는 데이터 타입, 최대 131,072자 까지 입력 가능 |
날짜 | 날짜를 저장하기 위한 데이터 타입 (yyyy/MM/dd) |
날짜/시간 | 날짜와 시간을 저장하기 위한 데이터 타입 (yyyy/MM/dd HH:mm:ss) |
백분율 | 백분율 숫자를 입력하면 자동으로 백분율 기호가 추가되는 데이터 타입 |
텍스트 영역(서식 있는 텍스트) | 서식이 있는 긴 문자열, 이미지, 링크 등이 입력 가능한 데이터 타입, 최대 131,072자 까지 입력 가능 |
선택 목록 | 사용자가 정의한 리스트에서 값을 선택할 수 있는 데이터 타입 |
선택 목록(다중 선택) | 사용자가 정의한 리스트에서 여러개의 값을 선택할 수 있는 데이터 타입 |
숫자 | 숫자를 저장하기 위한 데이터 타입 |
시간 | 시간을 저장하기 위한 데이터 타입 (HH:mm:ss) |
이메일 | 이메일 주소를 저장하기 위한 데이터 타입 |
전화 | 전화번호를 저장하기 위한 데이터 타입 |
지리적 위치 | 위치를 저장하기 위한 데이터 타입 |
텍스트 | 문자열을 저장하기 위한 데이터 타입, 최대 255자 까지 입력 가능 |
텍스트(암호화됨) | 문자열을 암호화된 형식으로 저장할 수 있는 데이터 타입 |
텍스트 영역 | 여러 줄에 걸쳐 문자열을 입력할 수 있는 데이터 타입, 최대 255자 까지 입력 가능 |
통화 | 금액을 저장하기 위한 데이터 타입, 통화를 자동으로 형식화 할 수 있음 |
확인란 | Boolean 타입의 정보를 저장하기 위한 데이터 타입, TRUE, FALSE 입력 가능 |
# 데이터 타입 확인용 개체 및 레코드 등록
일단, 데이터 타입의 동작을 확인하기 위한 개체와 레코드를 등록하겠습니다.
알기 쉽도록 각각 "부모" 와 "자녀" 라는 명칭의 개체를 만들고,
두 개체는 서로 "마스터-세부 사항 관계" 가 되도록 만들겠습니다.
"부모" 개체에는 각각의 데이터 타입을 가진 레코드를 만들것이며, 명칭은 알아서 적당히 지정하셔도 무방합니다.
※ "마스터-세부 사항 관계" 타입의 레코드는 자식 개체에서 생성해야 합니다.
"자식" 개체는 단순히 "마스터-세부 사항 관계"를 사용하기 위해 추가한 부속개체이며, 이 개체는 롤업 요약을 사용하기 위한 레코드만 생성하겠습니다.
레코드 생성시 추가로 설명이 필요한 항목은 다음과 같습니다.
☞ 롤업 요약
: 롤업 요약 타입의 레코드를 생성하는 경우, "요약된 개체" 에서 자식에 해당하는 개체를 선택하고, 최소값, 최대값 또는 합계를 구할 자식 개체의 항목을 지정해야 합니다.
또한, 계산 대상이 될 레코드를 선택하기 위한 조건을 추가하고 싶다면,
필터 기준에서 "특정 기준에 맞는 레코드만 계산에 포함되어야 합니다."에 체크를 한 후, 조건을 추가하면 됩니다.
☞ 자동 번호
: 자동 번호는 표시 형식이라는 입력 란에 번호를 생성할 규칙을 지정해야 합니다.
지정 규칙은 여기 를 참고해주세요.
여기서는 10자리의 숫자로 생성하도록 다음과 같이 지정하겠습니다.
자동 번호 표시 형식: {0000000000}
☞ 조회 관계
: 다른 개체를 참조하기 위한 데이터 타입이므로, 참조 대상이 되는 개체를 선택해야 합니다.
※ 동일 개체 참조 가능
예) 부모 -> 부모
: 하위 관계의 이름을 지정해야 합니다. 이곳에서 지정한 하위 관계 이름을 통해 데이터를 습득하는 것이 가능합니다.
예) 하위 관계 이름 : Parents1_Parents2_Rel
SELECT ID, (SELECT Id FROM Parents1_Parents2_Rel) FROM Parents1
☞ 수식
: 수식 타입은 현 개체의 레코드 또는 조회 관계로 참조하고 있는 개체의 레코드 등을 직접적으로 참조하여 데이터를 저장 및 계산할 수 있습니다. 또한, 숫자나 문자열을 고정치로 입력하는 것도 가능합니다.
※ 수식 타입은 레코드가 등록(INSERT, UPDATE)이 되고 난 후에 값이 설정되기 떄문에,
레코드가 등록되기 전에는 값이 없는 상태이니 사용할 때 주의해야 합니다.
☞ 선택 목록, 선택 목록(다중 선택)
: "전역 선택 목록 값 세트 사용"을 사용하기 위해서는 [빌드 - 만들기 - 선택 목록 값 집합]에서 선택 목록의 선택지를 생성해야 합니다.
"부모" 개체 등록 결과입니다.
"자녀" 개체 등록 결과입니다.
이제 동작 확인을 위해 각 레코드에 데이터를 넣어보겠습니다.
"부모" 개체에는 2개의 레코드, "자식" 개체에는 3개의 레코드를 등록한 후 결과를 확인해보겠습니다.
[개발자 콘솔 - Debug - Open Execute Anonymous Window]를 선택해 Apex코드 입력창을 표시합니다.
그 후, 다음의 코드를 입력한 후, [Execute] 버튼을 클릭해 데이터를 등록합니다.
먼저, 부모의 조회 관게에 설정할 부모 레코드를 1개 등록합니다.
Parent__c parent = new Parent__c();
parent.Text__c = '부모 참조용';
insert parent;
다음으로, 데이터 타입 확인용 부모 레코드를 등록합니다.
// 이전에 등록한 부모 레코드 습득
List<Parent__c> pList = [SELECT Id FROM Parent__c];
Parent__c parent = new Parent__c();
// 부모 레코드 생성
parent.Url__c = 'https://www.google.com/';
parent.LongTextArea__c = '긴 텍스트 영역 테스트';
parent.Date__c = Date.Today();
parent.Datetime__c = Datetime.now();
parent.Percent__c = 100;
parent.SelectList__c = 'a';
parent.SelectListMultiple__c = 'a;b;c';
parent.Decimal__c = 500;
parent.Time__c = Datetime.now().time();
parent.Email__c = 'abc@gmail.com';
parent.Phone__c = '010-0000-0000';
parent.TextArea__c = '텍스트 영역 테스트';
parent.Text__c = '텍스트 테스트';
parent.TextEncryption__c = '텍스트 암호화 테스트';
parent.Currency__c = 15000;
parent.Boolean__c = true;
parent.Parents__c = pList.get(0).Id;
// 부모 레코드 INSERT
insert parent;
다음으로 자식 레코드를 3개 등록하겠습니다.
// 등록된 부모 레코드를 등록시간 역순으로 습득
List<Parent__c> pList = [SELECT Id FROM Parent__c ORDER BY CreatedDate DESC];
// INSERT용 자식 리스트 정의
List<Child__c> insertChildList = new List<Child__c>();
// 자식 레코드를 3개 생성
Child__c child1 = new Child__c();
child1.Date__c = Date.today();
child1.Parents__c = pList.get(0).Id;
child1.Decimal__c = 100;
child1.Currency__c = 100;
Child__c child2 = new Child__c();
child2.Date__c = Date.today();
child2.Parents__c = pList.get(0).Id;
child2.Decimal__c = 1000;
child2.Currency__c = 1000;
Child__c child3 = new Child__c();
child3.Date__c = Date.today();
child3.Parents__c = pList.get(0).Id;
child3.Decimal__c = 10000;
child3.Currency__c = 10000;
insertChildList.add(child1);
insertChildList.add(child2);
insertChildList.add(child3);
// 자식 레코드 INSERT
insert insertChildList;
# 레코드 값 확인 결과
각 레코드의 값이 Visualforce 페이지에서 어떠한 형식으로 표시되는지 확인해보겠습니다.
※ 페이지 에서의 각 항목 표시는 <apex:inputField>만을 사용해서 표시하였습니다.
기초 연습용 도서 관리 프로그램에서도 같은 것을 사용하였기 때문에, 직접 만들어 보시는 것을 추천합니다.
*결과 화면
소스 코드는 아래의 링크에서 확인하실 수 있습니다.
github.com/mokochi/Blog_SFDC_force.com_DataType.git
이상으로 레코드의 데이터 타입에 따른 사용 방법에 대해 알아보았습니다.
텍스트, 이메일, 전화, URL 등은 단순히 텍스트 형식처럼 사용할 수 있으며,
숫자, 백분율, 통화 등은 단순히 숫자 형식처럼 사용할 수 있습니다.
단지 그 항목의 데이터를 그대로 표시할 경우, 표시 형식이 자동으로 변환될 뿐인 것입니다.
그러므로 그때그때 상황에 따라, 필요에 따라 사용하시면 되겠습니다.
참고1) https://developer.salesforce.com/docs/atlas.en-us.224.0.apexcode.meta/apexcode/apex_dev_guide.htm - Apex 개발자 가이드
참고2) https://developer.salesforce.com/docs/atlas.en-us.226.0.pages.meta/pages/pages_intro.htm - Visualforce 개발자 가이드
'Salesforce.com' 카테고리의 다른 글
[SFDC] Salesforce란? (0) | 2020.06.22 |
---|