A Leader of Enterprise e-Business Solution FORCS Co., LTD 1 목 차 Ⅰ. 시작하기 전에 …………………………………….…..……………………………………… 5 본 매뉴얼의 목적 ……………………………………….……………………………………… 6 본 매뉴얼 구성 …………………………………………….……..……………………….……. 6 매뉴얼 로드맵 …………………………..…………………….…….…………………………… 8 Ⅱ. 디자이너 설치 ……………………………………………………………………………….. 9 시스템 요구사항 ………………….…………………………………..……….….……………. 10 설치 ………………………………………………………………………..…………………….. 11 디자이너 파일 구성 ……………………………………………………….…….……………. 13 디자이너 실행하기 …………………………………………………….……..………………... 16 오즈 디자이너 제거하기……………………………………………………………………..… 18 Ⅲ. 디자이너 윈도우 ……………..… …………………………..………....…………………. 19 오즈 디자이너 구성 ……………………..……………………..…..………………….……. 20 메뉴바…………………………………………………………………..…..….………………….22 툴바…………………………………………………………………………..…..……………….. 33 좌표창, 선 두께창 …………………………………………………………………………….. 36 Ⅳ. Setting Up a Connection …………………….………….………………………….…... 37 데이터 소스 …………….……….………………………….……..…………………………….. 38 데이터베이스 연결 …………………………………………………..…...………..………….. 39 SQL 데이터 셋 생성 ……………………………………………..……..….…….…………… 45 동적 데이터베이스 연결 …………………………………………………..…………………... 47
217
Embed
Ⅰ 시작하기 전에 Ⅱ 디자이너 설치 윈도우 › ozguide › OLD › manual › OZ2.5_Manual › UserGuide.pdfDrill-Down and Hyper Link Design 서로 연관된 보고서간의
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
위의 CSV, XML 파일 샘플을 사용하여 FILESTORE나 HTTPSTORE를 설명하도록 하겠습니
다.
로컬 경로나 네트워크상에 연결된 파일로부터 데이터를 가져옵니다.
XML Set 오즈 디자이너의 데이터 소스 창에서 [FILESTORE] 항목을 오른쪽 마우스로
클릭한 후 [XML Set 추가]를 선택합니다.
File Store의 이용
166 FORCS Co., LTD
[XML Set 설정] 창이 아래와 같이 나타납니다.
XML Set 설정 윈도우 설명
항목 설명
FILE Store XML
DataSet 이름
해당 데이터 셋에 대한 이름으로 사용자가 임의로
부여합니다.
XML 파일 이름
(경로)
실제 서버에서 이용할 XML 파일의 경로와 이름입
니다.
디자인시 사용할
임시 XML 파일명
(경로)
오즈 서버와 디자이너에서 해당 XML 파일 경로가
다른 경우 디자인시에만 사용할 XML 파일의 임시
경로와 이름입니다.
DataSet 노드 이름해당 XML 파일에서 데이터 셋을 나타내는 노드
이름입니다. 기본값은 ‘DATASET’ 입니다.
RecordSet 노드
이름
해당 XML 파일에서 레코드 셋을 나타내는 노드
이름입니다. 기본값은 ‘RECORD’입니다.
해당 필드의 값을 입력하고 [데이터보기]를 이용하여 데이터를 확인합니다.
A Leader of Enterprise e-Business Solution
FORCS Co., LTD 167
[확인] 버튼을 눌러 디자이너로 돌아오면 [OZ DATA Tree]에 다음과 같이 필
드 정보가 생깁니다.
168 FORCS Co., LTD
CSV Set
오즈 디자이너의 데이터 소스 창에서 [FILESTORE] 항목을 오른쪽 마우스로
클릭한 후 [CSV Set 추가]를 선택합니다.
[CSV Set 설정] 창이 다음과 같이 나타납니다.
A Leader of Enterprise e-Business Solution
FORCS Co., LTD 169
CSV Set 설정 윈도우 설명
항목 설명
FILE Store CSV
DataSet 이름
해당 데이터 셋에 대한 이름으로 사용자가 임
의로 설정합니다.
CSV 파일이름 (경로) 실제 서버에서 사용할 CSV 파일의 경로와 이
름입니다.
디자인시 사용할 임시
CSV 파일명(경로)
오즈 서버와 디자이너에서 해당 CSV 파일의
경로가 다른 경우 디자인시에만 사용할 CSV
파일의 임시 경로와 이름입니다.
필드 구분자
필드 구분자를 선택합니다. TAB, SPACE,
SEMICOLON, COLON, COMMA는 미리 정의된
구분자로 선택 가능하며 기타 문자에 대해서는
사용자가 직접 입력해서 설정할 수 있습니다.
필드 정보 유무
해당 CSV 파일에 필드에 대한 타입 정보가
포함되어 있는지 유무를 선택합니다. ‘FALSE’
인 경우 모든 필드의 타입은 ‘VARCHAR’로 간
주됩니다. (TRUE/FALSE)
널 마크 NULL 데이터를 구분하기 위한 문자열을 정의
합니다.
Character Set
해당 파일의 문자셋을 정의합니다. 로컬 시스
템의 문자셋과 동일할 경우 설정하지 않아도
됩니다.
에러표시 코드
데이터 에러를 표시하기 위한 코드를 설정합니
다. 설정한 코드값이 파일의 첫 줄에 있을 경
우 보고서 미리보기를 수행하지 않고 ERROR
메시지 창을 뛰웁니다.
해당 필드의 값을 입력하고 [데이터보기]를 이용하여 데이터를 확인합니다..
170 FORCS Co., LTD
[확인] 버튼을 눌러 오즈 디자이너로 돌아오면 다음과 같이 [OZ DATA Tree]에
필드정보가 나타납니다.
Dynamic Set 추가 본 매뉴얼 “XI. Dynamic Set”을 참조하시기 바랍니다.
A Leader of Enterprise e-Business Solution
FORCS Co., LTD 171
HTTP 표준 출력으로부터 데이터를 가져옵니다. URL 경로에 있는 CSV, XML 파일 또
은 JSP나 ASP등의 사용자 애플리케이션 실행을 통해 브라우저에 출력되는 텍스트를
데이터 소스로 사용합니다. XML Set
다음과 같이 URL 경로를 통해 가져온 XML 파일을 HTTP STORE를 통해 연동
하는 방법을 설명합니다.
오즈 디자이너의 데이터 소스 창에서 [HTTPSTORE 소스] 항목을 오른쪽 마우
스로 클릭한 후 [XML Set 추가]를 선택합니다.
Http Store의 이용
172 FORCS Co., LTD
[XML Set 설정] 창이 아래와 같이 나타납니다.
A Leader of Enterprise e-Business Solution
FORCS Co., LTD 173
XML Set 설정 윈도우 설명
항목 설정
HTTP Store XML
DataSet 이름
해당 데이터 셋에 대한 이름으로 사용자가 임의
로 설정합니다.
Server URL 데이터를 가져올 파일 또는 사용자 애플리케이
션의 HTTP 주소입니다.
디자인시 사용할 임
시 XML 파일명(경로)
디자인시에만 사용할 수 있는 로컬 시스템의 파
일 경로와 이름입니다.
LOG 파일 이름
전달받은 데이터에 대한 로그를 남기기 원할 경
우 로그 파일명을 설정합니다. 설정하지 않을 경
우 로그를 남기지 않습니다.
URL 인코드 설정
Server URL 인코딩 유무를 설정합니다.
데이터 요청시 URL의 패러미터 부분에 한국어
나 기타 다국어 등이 포함되어 있을 경우 인코
딩을 ‘TRUE’로 설정합니다.
DataSet 노드 이름 해당 XML 파일에서 데이터 셋을 나타내는 노드
이름입니다. 기본값은 ‘DATASET’ 입니다.
RecordSet 노드
이름
해당 XML 파일에서 레코드 셋을 나타내는 노드
이름입니다. 기본값은 ‘RECORD’입니다.
POST 타입 전송 URL의 패러미터 전송시 GET 방식을 이용할 것
인지 POST 방식을 이용할 것인지 선택합니다.
해당 필드의 값을 입력하고 [데이터보기]를 이용하여 데이터를 확인합니다.
174 FORCS Co., LTD
[확인] 버튼을 눌러 오즈 디자이너로 돌아오면 [OZ DATA Tree]에 새로운 필드
정보가 나타납니다.
A Leader of Enterprise e-Business Solution
FORCS Co., LTD 175
CSV Set 다음은 사용자 애플리케이션에서 CSV 형태로 HTTP를 통해 데이터를 보낼 때
연동하는 방법입니다.
<http를 이용하여 정보를 전달 받는 경우>
위의 브라우저에서 소스 보기를 이용하여 html 소스를 보면 파일은 다음과 같
이 “,”로 구분된 CSV 형태의 파일입니다.
오즈 디자이너의 데이터 소스 창에서 [HTTPSTORE] 항목을 오른쪽 마우스로
클릭한 후 [CSV Set 추가]를 선택합니다.
176 FORCS Co., LTD
[CVS Set 설정] 창이 아래와 같이 나타납니다.
A Leader of Enterprise e-Business Solution
FORCS Co., LTD 177
CSV Set 설정 윈도우 설명
항목 설정
HTTP Store CSV
DataSet 이름
해당 데이터 셋에 대한 이름으로 사용자가 임의
로 설정합니다.
Server URL 데이터를 가져올 파일 또는 사용자 애플리케이션
의 HTTP 주소입니다.
디자인시 사용할 임
시 CSV파일명 (경로)
디자인시에만 사용할 수 있는 로컬 시스템의 파
일 경로와 이름입니다.
Log 파일 이름
전달받은 데이터에 대한 로그를 남기기 원할 경
우 로그 파일을 설정합니다. 설정하지 않을 경우
로그를 남기지 않습니다.
URL 인코드
설정
Server URL 인코딩 유무를 설정합니다.
데이터 요청시 URL의 패러미터 부분에 한국어나
기타 다국어 등이 포함되어 있을 경우 인코딩을
‘TRUE’로 설정합니다.
필드 구분자
필드 구분자를 선택합니다. TAB, SPACE,
SEMICOLON, COLON, COMMA는 미리 정의된
구분자로 선택 가능하며 기타 문자에 대해서는
사용자가 직접 입력해서 설정할 수 있습니다.
필드 정보 유무
해당 CSV 파일에 필드에 대한 타입 정보가 포
함되어 있는지 유무를 선택합니다. ‘FALSE’인 경
우 모든 필드의 타입은 ‘VARCHAR’로 간주됩니
다. (TRUE/FALSE)
널 마크 NULL 데이터를 구분하기 위한 문자열을 정의
합니다.
Character Set
해당 파일의 문자 셋을 정의합니다. 로컬 시스템
의 문자 셋과 동일할 경우 설정하지 않아도 됩
니다.
에러표시 코드
데이터 에러를 표시하기 위한 코드를 설정합니
다. 설정한 코드값이 파일의 첫 줄에 있을 경우
보고서 미리보기를 수행하지 않고 ERROR 메시
지를 창에 뛰웁니다.
POST 타입 전송 URL의 패러미터 전송시 GET 방식을 이용할 것
인지 POST 방식을 이용할 것인지 선택합니다.
178 FORCS Co., LTD
해당 필드의 값을 입력하고 [데이터보기]를 이용하여 데이터를 확인합니다.
<SQL 쿼리 결과>
[확인]을 눌러 디자이너로 돌아오면 [HTTPSTORE] 항목 아래에 다음과 같이
필드정보가 나타납니다.
Dynamic Set 추가
본 매뉴얼 “XI. Dynamic Set”을 참조하시기 바랍니다.
A Leader of Enterprise e-Business Solution
FORCS Co., LTD 179
XIV. UDS
UDS 개요
UDS 인터페이스
UDS 구현
UDS 활용
180 FORCS Co., LTD
UDS(User Data Source)는 오즈가 제공하는 Non-DB 데이터 연동을 위한 Java
Interface로 데이터베이스에 저장되어 있지 않은 일반 텍스트 파일, CSV, XML 등의
파일 데이터는 물론 EJB, Servlet, ASP, JSP, Applet 등 사용자 프로그램의 데이터 등
다양한 형태의 외부 데이터 소스로부터 데이터 셋을 생성하여 보고서를 생성할 수
있도록 합니다.
UDS 개발자는 자바를 이용하여 다양한 형태의 사용자 데이터를 받아 들이는 방법
과 이 데이터를 오즈가 인식할 수 있는 ResultSet 객체로 만들어서 오즈로 넘겨주는
방법을 구현해야 합니다. 이렇게 구현된 자바 프로그램은 클래스 파일로 만들어 보
고서와 연동하게 됩니다. UDS 데이터 셋은 일반 SQL 데이터 셋과 동일하게 사용할
수 있습니다.
오즈는 사용자 클래스로 패러미터 스트링을 전달할 수 있으며 패러미터 값에 따라
다이나믹하게 변화하는 데이터를 전달받을 수도 있습니다.
UDS 개요
A Leader of Enterprise e-Business Solution
FORCS Co., LTD 181
다음은 JDBC와 UDS 인터페이스를 비교 설명합니다.
OZ Server는 JDBC Driver를 통해 DBMS에 접속한 후 쿼리문을 전달하고 JDBC
Driver는 DBMS로부터 전달받은 쿼리 결과 데이터를 ResultSet 자바 객체에 담아 OZ
Server로 전달합니다.
이 ResultSet은 Java JDBC 사양에 따르면 java.sql.ResultSet Interface를 구현
(implement)한 것이어야 합니다. 즉, DBMS의 각 벤더들은 자신의 DBMS를 지원하는
JDBC Driver를 제공할 때 java.sql.ResultSet Interface를 구현한 Concrete ResultSet 클
래스를 같이 제공하는 것입니다. 이때 JDBC Driver를 제공하는 벤더가 반드시 지켜야
하는 것은 java.sql.ResultSet Interface를 따라 구현해야 하는 것입니다.
UDS(User Data Source)는 JDBC Driver의 역할을 하는 Custom Driver로 사용자가
java.sql.ResultSet interface를 따르면서 사용자 데이터 소스에 있는 데이터를 읽을 수
있는 ResultSet 클래스를 제공해 주는 것입니다.
JDBC Driver는 기능도 많고 복잡하여 구현하기가 힘듭니다. 그러나 오즈는 oz.uds.
UserDataStore라는 Interface를 제공하여 사용자가 UserDataStore Interface를 따르는
클래스와 ResultSet Interface를 따르는 클래스만 작성하면 어떠한 데이터 저장소와도
연동할 수 있도록 합니다. oz.uds.UserDataStore interface는 다음과 같이 단 4개의 메
소드만을 선언하고 있습니다.
package oz.uds;
import java.sql.*;
public interface OZUserDataStore {
public void init() throws OZUserDataStoreException;
public ResultSet getResultSet(String argument) throws
OZUserDataStoreException;
UDS 인터페이스
OZ Server
OZ Designer DBMS
JDBC DriverResultSet 객체
Query String
OZ Server
OZ Designer
사용자
데이터소스
Custom
JDBC
Driver Custom ResultSet 객체
실행문(패러미터)
182 FORCS Co., LTD
public void freeResultSet(ResultSet rst);
public void close();
}
이 중 init(), close()는 대부분의 경우 구현할 필요가 없습니다.
init() UDS가 처음 생성된 후 한번 호출되며, 사용자 데
이터 셋에 대한 초기화 작업을 수행합니다.
ResultSet getResultSet
(String argument)
오즈 서버나 디자이너로부터 Argument(실행문)을
넘겨받아 해당 실행문에 맞는 사용자 데이터를
ResultSet 객체로 변환하여 리턴합니다.
freeResultSet(ResultSet rst)
ResultSet의 종료 작업을 수행하며, 오즈 서버나
디자이너에 getResultSet에서 받은 ResultSet을 모
두 사용한 후 호출합니다.
close() UDS를 모두 사용한 후 마지막으로 호출되며, 사
용자 데이터 셋에 대한 종료 작업을 수행합니다.
UDS 구현에서 가장 중요한 부분은 실제 데이터를 받아오는데 필요한 getResultSet
메소드를 구현하는 것입니다.
UDS Source 구성 UDS Main 구현
오즈 서버나 디자이너에서 넘겨준 Argument에 따라 사용자 데이터를 받아
오는 부분을 구현합니다. import oz.uds.*; import java.sql.ResultSet; public class Extdata implements OZUserDataStore{ public void init() throws OZUserDataStoreException { // UDS 가 처음 생성된 후 한번 호출됩니다. DB 연결 등의 초기화 작업을 수행합니다. } public ResultSet getResultSet(String argument) throws OZUserDataStoreException { // Argument 에 따라서 사용자 데이터를 받고 Resultset 으로 변환 후 리턴합니다.
UDS 구현
A Leader of Enterprise e-Business Solution
FORCS Co., LTD 183
// Argument 는 OZ 디자이너에서 보고서 디자인 시에 넘기도록 설정합니다. } public void freeResultSet(ResultSet rst){ // getResultSet 에서 받아온 ResultSet 을 모두 사용한 후 호출합니다. // 일반적으로 ResultSet 을 Close 하는 작업을 수행합니다. } public void close() { // UserDataSet 을 모두 사용한 후 호출합니다. // 일반적으로 DB Disconnection 이나 등의 종료작업을 수행합니다. } }
사용자 ResultSet 구현
사용자 프로그램에서 ResultSet 객체를 바로 넘겨 받을 수 있다면 별도의
ResultSet을 구현할 필요가 없습니다. 그러나 일반적으로 사용자 애플리케
이션은 백터나 스트림 형태로 데이터를 넘겨주기 때문에 다음과 같이
ResultSet을 구현해야 합니다. (다음에 명시된 메소드들은 오즈에 의해 호
출되는 함수를 중심으로 작성되었습니다.)
JDBC의 javasql.ResultSet Interface는 30여개가 넘는 메소드를 정의하고
있지만 오즈 UDS는 그 중 실제로 필요한 몇 개의 메소드만을 구현하고
나머지 메소드는 그대로 추가하면 됩니다. import java.sql.*; import java.math.BigDecimal; import java.util.Calendar; import java.util.Enumeration; public class ResultSet_User implements ResultSet{ public ResultSet_User( ) { } public boolean next() throws SQLException{ // 다음 레코드의 인덱스 값을 리턴한다. } public String getString(String columnName) throws SQLException{ // 컬럼명으로 해당 데이터를 리턴한다. } // getString 외에 사용자의 데이터 타입에 따라 다음과 같은 Method 를 추가 구현할 수 있다. // getBoolean(String columnName) // getByte(String columnName)
184 FORCS Co., LTD
// getShort(String columnName) // getInt(String columnName // getLong(String columnName // getFloat(String columnName) // getDouble(String columnName // getBigDecimal(String columnName) // getDate(String columnName) // getTime(String columnName) // getTimestamp(String columnName) // getBlob(String columnName) // getClob(String columnName) // getBinaryStream(String columnName) public ResultSetMetaData getMetaData() throws SQLException{ // ResultSetMetaData 를 리턴하고 ResultSetMetaData 의 특정 Method 도 역시 필요 시 // 구현해야 합니다. } }
ResultSetMetaData 구현
ResultSetMetaData에는 데이터에 대한 컬럼명과 타입 정보를 반환하기 위
해 다음 세가지 메소드가 구현되어야 합니다. import java.sql.SQLException; import java.sql.Types; import java.util.*; public class ResultSetMetaData_User implements ResultSetMetaData{ public ResultSetMetaData_LGeds(String[] meta) { } public int getColumnCount() throws SQLException{ // 컬럼 개수를 리턴한다. } public String getColumnName(int column) throws SQLException{ // 해당 정수값(column)번째 컬럼명을 리턴한다. } public int getColumnType(int column) throws SQLException{ // 해당 정수값(column)번째 컬럼의 타입을 리턴한다 } }
A Leader of Enterprise e-Business Solution
FORCS Co., LTD 185
UDS 예제 소스
텍스트 파일 데이터 소스
첫 라인에 탭으로 구분된 컬럼명이 있고, 다음 라인부터는 탭으로 구분된
데이터를 포함하고 있는 파일을 읽어 처리하는 UDS 구현 예제입니다. <UdsFile.java> import oz.uds.*; import java.sql.ResultSet; import java.io.FileReader; import java.io.IOException; import java.util.StringTokenizer; import java.util.Vector; public class UdsFile implements OZUserDataStore{ private StringBuffer Sbuffer; private Vector mainV; //subV 를 저장한다. private Vector subV; private String[][] data; private String[] meta; private static final String rootFileName = ""; private static final String mainDiv = "\n"; private static final String subDiv = "\,"; public void init() throws OZUserDataStoreException { mainV = new Vector(); } public ResultSet getResultSet(String command) throws OZUserDataStoreException { FileReader in = null; Sbuffer = new StringBuffer(); try{ in = new FileReader(rootFileName + command); char[] buffer = new char[256]; int n; while((n = in.read(buffer)) > -1){ Sbuffer.append(new String(buffer, 0, n)); } } catch(IOException e){ e.printStackTrace(); throw new OZUserDataStoreException(e.getMessage()); } finally {
186 FORCS Co., LTD
try{ if(in != null)in.close(); } catch(IOException e){ } finally{ in = null; } } String s = Sbuffer.toString();
////////////////////////////////////////////////////////////////////////////// StringTokenizer st1 = new StringTokenizer(s,mainDiv); StringTokenizer st2; String tmpString; /////////////////////meta 정보////////////////////// if(st1.hasMoreTokens()){ tmpString = st1.nextToken().trim(); st2 = new StringTokenizer(tmpString,subDiv); subV = new Vector(); while (st2.hasMoreTokens()){ subV.addElement(st2.nextToken().trim()); } meta = new String[subV.size()]; subV.copyInto(meta); } //////////////////////////////////////////////// while (st1.hasMoreTokens()) { tmpString = st1.nextToken().trim(); st2 = new StringTokenizer(tmpString,subDiv); subV = new Vector(); while (st2.hasMoreTokens()){ subV.addElement(st2.nextToken().trim()); } mainV.addElement(subV); } data = new String[mainV.size()][]; for(int i = 0; i < mainV.size(); i++){ subV = (Vector)mainV.elementAt(i); data[i] = new String[subV.size()]; subV.copyInto(data[i]); } Sbuffer = null; mainV.clear(); /////////////////////////확인/////////////////////////////// if(meta == null || data == null){ throw new OZUserDataStoreException("Data is Invalide"); }
A Leader of Enterprise e-Business Solution
FORCS Co., LTD 187
return new ResultSet_File(meta, data); } public void freeResultSet(ResultSet rst){ Sbuffer = null; data = null; meta = null; mainV.clear(); } public void close() { Sbuffer = null; data = null; meta = null; mainV = null; } } <ResultSet_File.java> import java.sql.*; import java.math.BigDecimal; import java.util.Calendar; import java.util.Enumeration; public class ResultSet_File implements ResultSet{ private String[][] data; private String[] meta; private int index; private int size; public ResultSet_File(String[] meta, String[][] data) { this.meta = meta; this.data = data; size = data.length; index = -1; } public boolean next() throws SQLException{ index++; if(index == size) return false; return true; } public String getString(String columnName) throws SQLException{ int i = findIndex(columnName); if(i > -1){ try{
188 FORCS Co., LTD
return data[index][i]; }catch(Exception e){ throw new SQLException("Internal Error"); } }else{ return null; } } private final int findIndex(String columnName){ for(int i = 0; i < meta.length; i++){ if(columnName.equals(meta[i])){ return i; } } return -1; } public String getString(int columnIndex) throws SQLException{ return null; } public ResultSetMetaData getMetaData() throws SQLException{ return new ResultSetMetaData_File(meta); } ////////////////////////////////////////////////////////////////////////////// 아래의 메소드들은 구현할 필요없이 그대로 추가합니다. public boolean getBoolean(String columnName) throws SQLException{ return false; } public byte getByte(String columnName) throws SQLException{ return -1; } public short getShort(String columnName) throws SQLException{ return -1; } public int getInt(String columnName) throws SQLException{ return -1; } public long getLong(String columnName) throws SQLException{ return -1; } public float getFloat(String columnName) throws SQLException{ return -1; } public double getDouble(String columnName) throws SQLException{ return -1; }
A Leader of Enterprise e-Business Solution
FORCS Co., LTD 189
public BigDecimal getBigDecimal(String columnName) throws SQLException{ return null; } public java.sql.Date getDate(String columnName) throws SQLException{ return null; } public java.sql.Time getTime(String columnName) throws SQLException{ return null; } public java.sql.Timestamp getTimestamp(String columnName)
///////////////////////////////////////////////////////////////////////////////////////// public boolean getBoolean(int columnIndex) throws SQLException{return false;} public byte getByte(int columnIndex) throws SQLException{return -1;} public short getShort(int columnIndex) throws SQLException{return -1;} public int getInt(int columnIndex) throws SQLException{return -1;} public long getLong(int columnIndex) throws SQLException{return -1;} public float getFloat(int columnIndex) throws SQLException{return -1;} public double getDouble(int columnIndex) throws SQLException{return -1;} public BigDecimal getBigDecimal(int columnIndex) throws
SQLException{return null;} public java.sql.Date getDate(int columnIndex) throws SQLException{return null;} public java.sql.Time getTime(int columnIndex) throws SQLException{return null;} public java.sql.Timestamp getTimestamp(int columnIndex)
throws SQLException{return null;} public Blob getBlob(int columnIndex) throws SQLException{return null;} public Clob getClob(int columnIndex) throws SQLException{return null;} public java.io.InputStream getBinaryStream(int columnIndex) throws SQLException{return null;}
/////////////////////////////////////////////////////////////////////////////////////////// public void close() throws SQLException{} public boolean wasNull() throws SQLException{return false;} public byte[] getBytes(int columnIndex) throws SQLException{return null;}
190 FORCS Co., LTD
public java.io.InputStream getAsciiStream(int columnIndex) throws SQLException{ return null;} public java.io.InputStream getUnicodeStream(int columnIndex) throws SQLException{return null;}
public byte[] getBytes(String columnName) throws SQLException{return null;} public java.io.InputStream getAsciiStream(String columnName) throws
SQLException{return null;} public java.io.InputStream getUnicodeStream(String columnName) throws
SQLException{return null;} public SQLWarning getWarnings() throws SQLException{return null;} public void clearWarnings() throws SQLException{} public String getCursorName() throws SQLException{return null;} public Object getObject(int columnIndex) throws SQLException{return null;} public Object getObject(String columnName) throws SQLException{return null;} public int findColumn(String columnName) throws SQLException{return -1;} public java.io.Reader getCharacterStream(int columnIndex) throws
SQLException{return null;} public java.io.Reader getCharacterStream(String columnName) throws
SQLException{return null;} public BigDecimal getBigDecimal(int columnIndex, int scale) throws
SQLException{return null;} public BigDecimal getBigDecimal(String columnName, int scale) throws
SQLException{return null;} public boolean isBeforeFirst() throws SQLException{return false;} public boolean isAfterLast() throws SQLException{return false;} public boolean isFirst() throws SQLException{return false;} public boolean isLast() throws SQLException{return false;} public void beforeFirst() throws SQLException{} public void afterLast() throws SQLException{} public boolean first() throws SQLException{return false;} public boolean last() throws SQLException{return false;} public int getRow() throws SQLException{return -1;} public boolean absolute( int row ) throws SQLException{return false;} public boolean relative( int rows ) throws SQLException{return false;} public boolean previous() throws SQLException{return false;} public void setFetchDirection(int direction) throws SQLException{} public int getFetchDirection() throws SQLException{return -1;} public void setFetchSize(int rows) throws SQLException{} public int getFetchSize() throws SQLException{return -1;} public int getType() throws SQLException{return -1;} public int getConcurrency() throws SQLException{return -1;} public boolean rowUpdated() throws SQLException{return false;} public boolean rowInserted() throws SQLException{return false;} public boolean rowDeleted() throws SQLException{return false;}
public Statement getStatement() throws SQLException{return null;}
A Leader of Enterprise e-Business Solution
FORCS Co., LTD 191
public Object getObject(int i, java.util.Map map) throws SQLException{return null;} public Ref getRef(int i) throws SQLException{return null;} public Array getArray(int i) throws SQLException{return null;} public Object getObject(String colName, java.util.Map map) throws
SQLException{return null;} public Ref getRef(String colName) throws SQLException{return null;}
public Array getArray(String colName) throws SQLException{return null;} public java.sql.Date getDate(int columnIndex, Calendar cal) throws
SQLException{return null;} public java.sql.Date getDate(String columnName, Calendar cal) throws
SQLException{return null;} public java.sql.Time getTime(int columnIndex, Calendar cal) throws
SQLException{return null;} public java.sql.Time getTime(String columnName, Calendar cal) throws
SQLException{return null;} public java.sql.Timestamp getTimestamp(int columnIndex, Calendar cal) throws SQLException{return null;} public java.sql.Timestamp getTimestamp(String columnName, Calendar cal) throws SQLException{return null;}
///////////////////////////////////////////////////////////////////////////////////// public void updateNull(int columnIndex) throws SQLException{} public void updateBoolean(int columnIndex, boolean x) throws SQLException{} public void updateByte(int columnIndex, byte x) throws SQLException{} public void updateShort(int columnIndex, short x) throws SQLException{} public void updateInt(int columnIndex, int x) throws SQLException{} public void updateLong(int columnIndex, long x) throws SQLException{} public void updateFloat(int columnIndex, float x) throws SQLException{} public void updateDouble(int columnIndex, double x) throws SQLException{} public void updateBigDecimal(int columnIndex, BigDecimal x) throws
SQLException{} public void updateString(int columnIndex, String x) throws SQLException{} public void updateBytes(int columnIndex, byte x[]) throws SQLException{} public void updateDate(int columnIndex, java.sql.Date x) throws SQLException{} public void updateTime(int columnIndex, java.sql.Time x) throws SQLException{} public void updateTimestamp(int columnIndex, java.sql.Timestamp x) throws SQLException{} public void updateAsciiStream(int columnIndex, java.io.InputStream x, int length)
throws SQLException{} public void updateBinaryStream(int columnIndex, java.io.InputStream x, int length)
throws SQLException{} public void updateCharacterStream(int columnIndex, java.io.Reader x, int length)
throws SQLException{} public void updateObject(int columnIndex, Object x, int scale) throws
SQLException{} public void updateObject(int columnIndex, Object x) throws SQLException{}
192 FORCS Co., LTD
public void updateNull(String columnName) throws SQLException{} public void updateBoolean(String columnName, boolean x) throws
SQLException{} public void updateByte(String columnName, byte x) throws SQLException{} public void updateShort(String columnName, short x) throws SQLException{} public void updateInt(String columnName, int x) throws SQLException{} public void updateLong(String columnName, long x) throws SQLException{}
public void updateFloat(String columnName, float x) throws SQLException{} public void updateDouble(String columnName, double x) throws SQLException{} public void updateBigDecimal(String columnName, BigDecimal x) throws
SQLException{} public void updateString(String columnName, String x) throws SQLException{} public void updateBytes(String columnName, byte x[]) throws SQLException{} public void updateDate(String columnName, java.sql.Date x) throws
SQLException{} public void updateTime(String columnName, java.sql.Time x) throws
SQLException{} public void updateTimestamp(String columnName, java.sql.Timestamp x) throws SQLException{} public void updateAsciiStream(String columnName, java.io.InputStream x, int length) throws SQLException{} public void updateBinaryStream(String columnName, java.io.InputStream x, int length) throws SQLException{} public void updateCharacterStream(String columnName, java.io.Reader reader, int length) throws SQLException{} public void updateObject(String columnName, Object x, int scale) throws SQLException{} public void updateObject(String columnName, Object x) throws SQLException{} public void insertRow() throws SQLException{} public void updateRow() throws SQLException{} public void deleteRow() throws SQLException{} public void refreshRow() throws SQLException{} public void cancelRowUpdates() throws SQLException{} public void moveToInsertRow() throws SQLException{} public void moveToCurrentRow() throws SQLException{} /////////////////////////////////////////////////////////////////////////////////////////// } <ResultMetaData_File.java> import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.sql.Types; import java.util.*;
A Leader of Enterprise e-Business Solution
FORCS Co., LTD 193
public class ResultSetMetaData_File implements ResultSetMetaData{ String[] meta; public ResultSetMetaData_File(String[] meta) { this.meta = meta; } public int getColumnCount() throws SQLException{ return meta.length; } public String getColumnName(int column) throws SQLException{ if(0 < column && column < getColumnCount()+1){ return meta[column-1]; }else{ throw new SQLException(); } } public int getColumnType(int column) throws SQLException{ return Types.VARCHAR; } public int isNullable(int column) throws SQLException{return -1;} public int getColumnDisplaySize(int column) throws SQLException{return -1;} public int getPrecision(int column) throws SQLException{return -1;} public int getScale(int column) throws SQLException{return -1;} public boolean isAutoIncrement(int column) throws SQLException{return false;} public boolean isCaseSensitive(int column) throws SQLException{return false;} public boolean isSearchable(int column) throws SQLException{return false;} public boolean isCurrency(int column) throws SQLException{return false;} public boolean isSigned(int column) throws SQLException{return false;} public boolean isReadOnly(int column) throws SQLException{return false;} public boolean isWritable(int column) throws SQLException{return false;} public boolean isDefinitelyWritable(int column) throws SQLException{return false;} public String getColumnLabel(int column) throws SQLException{return null;} public String getSchemaName(int column) throws SQLException{return null;} public String getTableName(int column) throws SQLException{return null;} public String getCatalogName(int column) throws SQLException{return null;} public String getColumnTypeName(int column) throws SQLException{return null;} public String getColumnClassName(int column) throws SQLException{return null;} }
194 FORCS Co., LTD
사용자 클래스는 보고서를 제작하는 중에는 오즈 디자이너에 의해 호출되고, 실제 웹
상에서 보고서 서비스를 제공하는 중에는 오즈 서버에 의해 호출됩니다. 따라서 각
모듈이 설치된 로컬 시스템에 위치해야 하며 실행 환경이 정확하게 설정되어 있어야
합니다.
또한 오즈 디자이너와 오즈 서버는 실행 환경에 차이가 있기 때문에 사용하는 사용자
클래스 역시 구현에 일부 차이가 있을 수 있습니다.
오즈 디자이너 및 오즈 서버 실행 파일에서 CLASSPATH에 사용자 클래스 파일 위치
를 설정합니다.
보통 클래스로 만들어지는 경우는 CLASSPATH만 추가하면 되고, UDS에서 사용되는
일련의 클래스들을 jar 파일로 만들었다면 CLASSPATH에 묶여진 jar파일을 등록하면
됩니다.
다음은 윈도우 환경에서 오즈 디자이너가 설치된 디렉토리의 ozuds\uds라는 디렉토
리 아래에 사용자 클래스 파일이 존재할 경우 오즈 디자이너 실행 배치 파일을 작성
하는 예입니다. (jar파일은 마찬가지로 jar파일 이름까지 등록하면 됩니다.)
Set CLASSPATH=.\;.\ozuds;.\OZD25.jar;.\OZUDS.jar;.\Lib\jaxp.jar; .\Lib\parser.jar;.\log4j.jar java –cp CLASSPATH oz.designer.OZDesigner 서버에서도 마찬가지로 위와 같이 CLASSPATH에 추가하면 됩니다.
단, 데몬(Daemon)방식인 경우 ozcntrl.bat(.sh)안에서 CLASSPATH를 등록하고, 서블릿
(Servlet)방식인 경우 서블릿을 구동하는 WAS에서 CLASSPATH를 잡아주거나, 오즈
서블릿 디렉토리/WEB-INF/classes 디렉토리 아래에 UDS class 파일을 위치 시킵니다.
UDS 활용
A Leader of Enterprise e-Business Solution
FORCS Co., LTD 195
보고서 작성
[User_Data_Store] 항목을 오른쪽 마우스로 클릭한 후 [사용자 데이터
정보 추가]를 선택합니다.
사용자 데이터베이스 연결 정보를 설정합니다.
Step 1
Step 2
196 FORCS Co., LTD
[SET 데이터 추가]를 선택합니다.
[사용자 정의 셋 설정]에서 정보창에 불러올 사용자 정의 데이터 정보
를 설정합니다. (UDS에 따라 실행문에 입력되는 내용이 적절하게 변경
되어져야 합니다.)
파일 UDS의 경우 실행문에는 일반적으로 파일 경로를 설정합니다. [실
행] 버튼을 누르면 다음과 같은 결과를 볼 수 있습니다.
Step 3
Step 4
A Leader of Enterprise e-Business Solution
FORCS Co., LTD 197
< UDS를 이용하여 가져온 값의 예 >
보고서 형태 디자인
사용자 데이터 셋이 설정되면 사용자 데이터에 대한 필드 이름이 트리
형태로 리스트 됩니다. 보고서 형태에 따라 여러개의 사용자 데이터
셋을 설정할 수 있으며 데이터베이스 연동시와 동일하게 다양한 형태
의 보고서를 제작할 수 있습니다.
Step 5
198 FORCS Co., LTD
XV. OZ FTA
오즈 FTA 운영 흐름도
오즈 FTA 기능
오즈 FTA 실행
A Leader of Enterprise e-Business Solution
FORCS Co., LTD 199
본 장에서는 오즈 전용 파일전송 프로그램인 OZ FTA(File Transfer Agent)에 대해 설명합니
다. OZ FTA(File Transfer Agent)는 오즈 디자이너에서 오즈 서버로 보고서 양식을 전송하는
기능을 담당하며 오즈 디자이너에 통합된 형태로 제공됩니다.
오즈 서버에 연결하면 서버의 보고서 루트 디렉토리에 바로 접근할 수 있으며, 오즈 보고서
폼 파일만 업로드/다운로드 할 수 있습니다.
오즈 FTA는 일반적인 FTP Client의 기능을 가지고 있습니다. 단, 오즈 보고서 양식
파일을 위해 제작되었기 때문에 XML 파일만을 전송합니다. 또한 오즈 FTA는 ‘서버
파일 삭제’ / ‘remove’라는 기능을 제공하여 서버에서 단순히 보고서 폼을 삭제하는 것
이외에도 캐시와 스케줄러에 저장되어 있는 파일까지도 삭제할 수 있습니다.
• 서버의 파일 업로드/다운로드 기본 폴더는 ozserver_home/conf/rptmngr.properties
에 등록된 경로명이 됩니다.
• 로컬 파일 업로드/다운로드 기본 폴더는 오즈 FTA가 설치되어 있는 폴더입니다.
• 서버/로컬 양쪽 모두 XML 파일만을 업로드/다운로드 할 수 있습니다.
• 서버로 업로드시 해당 폼 파일에 대한 압축된 폼 파일을 자동으로 생성합니다.
오즈 FTA 운영 흐름도
오즈 FTA 기능
OZ Server
FTP API OZ Designer OZ
FTA
File System
File System
File IO
Access
Login & Connection
File IO Access
File Transfer
200 FORCS Co., LTD
전체화면 구성
Login Panel 사용자 ID와 패스워드를 입력할 수 있으며 서버와 접속
및 연결해제를 수행합니다.
설정 언어, 테이블 라인보기, 기본 디렉토리, 마우스 클릭횟수
등의 설정을 할 수 있습니다.
Server List Panel 등록된 서버 목록을 보여줍니다.
Local Panel Client 파일 정보를 관리합니다.
Server Panel Server 파일 정보를 관리합니다.
Up/Down Panel 파일 업로드/다운로드 처리를 합니다.
>,< 선택된 파일을 전송합니다. (Ctrl키를 이용하여 복수개의
파일 선택 가능)
>>,<< 해당 디렉토리 내의 모든 XML 파일을 전송합니다.
서버파일 삭제 서버내의 모든 캐시/스케줄러 보고서를 삭제합니다.
A Leader of Enterprise e-Business Solution
FORCS Co., LTD 201
Remove 체크박스 표시한 XML 보고서 폼에 대해서만 서버로 전송하면서 동
시에 캐시/스케줄된 해당 보고서 정보를 지웁니다.
새폴더 새로운 폴더를 생성합니다.
* 자세한 속성 설명은 “User Reference”를 참조하시기 바랍니다.
OZFTP.bat 파일을 실행하거나 오즈 디자이너 [파일] – [FTP 서버연결] 메뉴
를 실행하면 다음과 같은 화면이 나타납니다.
오즈 FTA 실행
Step 1
202 FORCS Co., LTD
사용자 이름과 패스워드 및 오즈 서버의 IP, PORT 정보를 입력한 후 [접
속]을 클릭합니다.
등록
서버등록
OZ FTA를 사용하기 위해서는 기본적으로 서버 등록이 이루어져야 합
니다. 따라서 OZ FTA에는 서버타입, 서버이름, 서버 IP 또는 URL, 서
버포트, 사용자 이름, 패스워드 등의 정보가 필요합니다.
사용자 등록
기본 사용자 이름과 패스워드는 admin, admin입니다. 사용자 등록을
추가하거나 수정할 경우에는 엔터프라이즈 매니저를 이용하여 변경해
야 합니다. 사용자 등록에 관한 자세한 설명은 “Server Administrator
Guide”를 참조하시기 바랍니다.
Step 2
A Leader of Enterprise e-Business Solution
FORCS Co., LTD 203
사용할 파일을 선택하여 업로드/다운로드 합니다.
기본적으로 선택된 파일은 [>] 버튼을 통해 전송됩니다. 2개 이상의 파일을
선택할때는 Ctrl키를 누른 상태에서 다수의 파일을 선택하면 됩니다.
[>>] 버튼은 해당 디렉토리의 모든 폼 파일을 전송합니다.
[새로고침] 버튼은 로컬 컴퓨터와 서버쪽 컴퓨터 두 곳의 정보를 새로 가
져와 보여줍니다.
[Remove]란에 체크한 후 전송하면 스케줄러와 캐시에 보관되어 있는 파일
들이 전부 삭제됩니다.
[서버파일 삭제]란은 일괄적으로 모든 스케줄러와 캐시에 보관되어 있는
파일을 삭제합니다.
새폴더를 만들때는 [새폴더] 항목에 이름을 입력한 후 [새폴더] 버튼을 누
르면 새로운 폴더가 생성됩니다.
Step 3
204 FORCS Co., LTD
한번 FTA에서 서버 연결이 된 상태에서 오즈 디자이너에서 현재 편집 완
료된 보고서를 서버로 전송할 경우 [파일] – [서버로 전송]을 실행하면 바로
전송할 수 있습니다.
Step 4
A Leader of Enterprise e-Business Solution
FORCS Co., LTD 205
XVI. OZ Publishing Wizard
Publishing Wizard 개요
메뉴 구성
Publishing Wizard 실행
206 FORCS Co., LTD
오즈 Publidhing Wizard는 사용자 웹 애플리케이션에서 오즈 보고서를 호출하는
HTML, ASP, JSP 소스 코드를 자동 생성해 줍니다.
Publishing Wizard는 오즈 뷰어 호출과 관련된 160여가지의 다양한 옵션 설정 기능을
제공합니다. 오즈 뷰어 옵션에 대한 상세한 정보는 “Viewer Guide Ⅳ. 애플릿 태그”를
참조하시기 바랍니다.
<오즈 Publishing Wizard>
리포트 파일 이름 퍼블리싱 위저드에서 생성할 보고서 폼 파일의 xml
이름입니다.
실행 파일로부터 로드설정 내용을 담고 있는 항목 파일을 불러와 그 설정
값을 로드할 수 있게 합니다.
OZ Server Type 오즈 엔터프라이즈 서버의 타입을 정합니다.
(Daemon형과 Servlet형)
Publishing Wizard 개요
A Leader of Enterprise e-Business Solution
FORCS Co., LTD 207
Server IP 데몬형의 경우 이용할 IP 주소를 입력합니다.
Server Port 데몬형의 경우 이용할 포트 번호를 입력합니다. 기
본값은 8002번 입니다.
Servlet URL 서블릿형의 경우 오즈 엔터프라이즈 서버의 URL을
입력합니다.
리포트 그룹 오즈 뷰어 라이브러리의 버전 이름입니다.
(인증 애플릿 이용시만 해당 됩니다.)
리포트 패러미터 리포트 패러미터 정보를 나타냅니다. 해당 패러미터
의 값을 임의로 입력할 수 있습니다.
파일메뉴
HTML 파일
새 HTML 파일
새로운 HTML/ASP/JSP 소스 파일을 만듭니다.
HTML 파일 수정
기존에 생성된 HTML/ASP/JSP 소스 파일을 열어 내용을 변경합니다.
항목 파일
항목 파일은 보고서에 자주 이용되는 서버 이름, 포트 번호 그리고 각종
패러미터 값들을 저장한 텍스트 파일(.txt)입니다. 이 파일을 이용하면 매번
동일한 내용을 지정해야 하는 번거로움을 줄일 수 있습니다.
새항목 파일
새항목 파일을 만듭니다.
항목 파일 수정
생성된 항목 파일(.txt)을 수정합니다.
메뉴 구성
208 FORCS Co., LTD
저장 (Ctrl + S)
HTML 파일의 생성/변경, 항목 파일의 생성/변경 후 변경된 내용을 저장합
니다.
[파일] 메뉴에서 [저장] 메뉴를 선택하면 실제 생성되는 웹 애플리케이션
문서를 보여 주는 다음과 같은 화면이 나타납니다.
<생성된 소스 코드 화면>
[옵션] 버튼을 클릭하면 [옵션] – [저장 옵션]한 화면이 나타나고 문서를 수
정할 수 있습니다.
[저장] 버튼을 클릭하면 파일로 저장합니다.
[취소] 버튼을 클릭하면 추가 편집 내용을 취소합니다.
닫기
Publishing Wizard를 종료합니다.
A Leader of Enterprise e-Business Solution
FORCS Co., LTD 209
옵션 메뉴
저장 옵션
저장 옵션 기능 설명
OZ Server IP 오즈 서버의 IP 주소를 입력합니다. (데몬형)
OZ Server Port 오즈 서버의 Port 번호를 입력합니다.
(데몬 타입)
OZ Server URL 오즈 서버의 URL을 입력합니다. (서블릿 타입)
Object Tag UseObject 태그를 이용하여 소스 코드를 생성합니
다.
Singed applet 인증 애플릿으로 호출합니다.
Name Space 오즈 버전 정보입니다.
(인증 애플릿 이용시만 해당 됩니다.)
Uses Library
Version
오즈 뷰어 라이브러리의 버전 이름입니다.
(인증 애플릿 이용시만 해당 됩니다.)
Code Base 오즈 뷰어 cab 파일(ozapplet4IE.cab)의 웹 경로
입니다.
210 FORCS Co., LTD
저장 형식 HTML/JSP/ASP 등의 지정한 언어로 소스 코드
를 생성합니다.
FORM
하단부 FORM은 JSP/ASP로 소스 생성시 패러
미터 값을 넘겨받을 때 이용되는 부분입니다.
JSP/ASP 프로그램에 맞게 임의로 수정할 수 있
습니다.
[자세히>>] 오즈 뷰어 호출과 관련된 160여가지 애플릿 패러미터를 설정합니다. 각 패러미
터에 대한 자세한 설명은 “Viewer Guide”를 참고하시기 바랍니다.
오즈 디자이너 메뉴 중 [파일] – [배포]를 클릭하여 오즈 서버의 타입을 지
정한 후 정보를 입력합니다.
Publishing Wizard 실행
Step 1
A Leader of Enterprise e-Business Solution
FORCS Co., LTD 211
[자세히>>]를 클릭하여 오즈 뷰어를 제어하기 위한 애플릿 태그들을 생성
합니다.
[확인] 버튼을 클릭한 후 [파일] – [저장]을 선택합니다.
Step 2
Step 3
212 FORCS Co., LTD
[저장 옵션]에서 서버 IP, 포트 또는 URL과 각 정보들을 입력한 후 [확인]
버튼을 클릭합니다.
웹 애플리케이션 문서로 저장합니다.
Step 4
Step 5
A Leader of Enterprise e-Business Solution
FORCS Co., LTD 213
<Publishing Wizard로 생성된 소스로 보여지는 오즈 리포트>
214 FORCS Co., LTD
XVII. 널(Null) 데이터 처리
데이터 소스에서 Null 처리
컴포넌트별 Null 처리
A Leader of Enterprise e-Business Solution
FORCS Co., LTD 215
널(Null) 데이터란 지정되지 않은 값 즉, 정의되지 않은 상태를 표시할 목적으로 특수하게
사용하는 데이터입니다. 이러한 Null 데이터는 처리 방법에 따라 아주 상이한 결과를 산출
할 수 있기 때문에 시스템마다 Null 데이터 처리에 대한 규칙을 준비해 놓고 있습니다.
이 장에서는 오즈의 Null 데이터 처리 규칙에 대해 상세히 설명합니다.
다음은 데이터 소스의 Null 데이터 처리 규칙입니다.
디자이너 OZ DATA Tree의 속성 창에서 [Null 데이터 무시] 부분을 ‘아니
오’로 설정한 경우에만 Null 데이터 검사가 가능합니다.
• 데이터베이스의 Null 데이터는 Null로 인식합니다.
• XML Set의 원본 XML 파일에 데이터가 없으면 Null 데이터로 인식합니
다.
• CSV Set의 원본 CSV 파일에 데이터가 없으면 문자형일 경우 공백 문
자열로 인식하고, 숫자형일 경우는 Null 데이터로 인식합니다.
• CSV Set 설정시 널 마크에 지정한 NULL STRING 값을 가지는 데이터
는 무조건 Null 데이터로 인식합니다.
[Null 데이터 무시] 속성이 ‘예’인 경우는 문자형 필드는 공백 문자열을,
숫자형 필드인 경우에는 0값이 지정됩니다.
데이터 라벨 (Data Label) 데이터 값이 Nulll일 경우 미리보기시에 데이터 라벨의 Caption에 'null data' 라
고 출력됩니다. 이는 디버깅 편의성을 위해 제공하는 것으로 스크립트로 Null
값을 검사하여 원하는 값으로 재설정 할 수 있습니다.
데이터 소스에서 Null 처리
컴포넌트별 Null 데이터 처리
216 FORCS Co., LTD
다음은 Null 데이터를 검사하여 처리하는 스크립트의 예입니다.
널 값이 나올 경우 ‘데이터없음’이 인쇄되는 스크립트
if(getData("dset.feild") == null)
{
setattr("caption", "데이터 없음")
}
※ 스크립트 작성시 Null 값을 특정 변수에 대입할 수 없습니다.
int i; i = null; // Error
수식 라벨 (Expression Label) SUM, AVG, MAX, MIN 등의 함수를 사용할 때 Null 데이터가 있으면 에러로 처
리됩니다. 따라서 Null 데이터에 대한 사전처리가 요구됩니다.
크로스탭 (CrossTab) 데이터 값이 Null일 경우 크로스탭의 각 셀에는 공백을 출력합니다. SUM, AVG,
MAX, MIN 함수를 사용하면 Null 값을 제외하고 합계, 평균, 최대, 최소값을 출
력합니다. 한편, 데이터가 모두 null일 때는 SUM, AVG, MAX, MIN 함수는 공백
을 출력합니다.
차트 (Chart) 라인 타입의 그래프 경우 데이터가 Null인 구간에 대해서는 그래프가 끊어져서