본 포스트에서는 각 레코드 타입에 따른 레코드의 사용 방법에 대해 알아보겠습니다.


# 레코드의 데이터 타입

 

레코드의 데이터 타입은 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

+ Recent posts