민서네집

Crystal Report 2013 - 문자열을 숫자로 형변환 하기 본문

Java

Crystal Report 2013 - 문자열을 숫자로 형변환 하기

브라이언7 2015. 7. 3. 10:55

Java에서 숫자로 된 데이터가 자릿수가 많은데, 소수점 이하도 8자리 이상이고, 소수점 이상도 9개 이상인 숫자를 파일에서 읽어와서 DB에 넣고, Crystal Report로 출력할 일이 있었다.


유효 자릿수도 많고, 소수점 이하도 있다보니 BigInteger 형을 사용 못하고, double 형의 경우 유효자릿수가 16자리라고 한다. 그보다 더 큰 유효자릿수가 필요하고, 실수를 사용해야 한다면, BigDecimal을 사용해야 한다.


[참고] http://ir.bagesoft.com/619


유효자릿수가 큰 숫자 데이터를 읽어와야 해서 일단은 Java에서 String 형으로 갖고 있고, DB에 문자형으로 저장했더니, Crystal Report에서 출력할 때 세 자릿수마다 컴마(,)가 안 찍혀 나와서 보기 불편했다.


그래서 Crystal Report 2013 버전에서 문자열을 숫자로 형변환하는 법을 정리해 봤다.


Crystal Report 2013 에서 Field를 마우스 오른쪽 클릭해서 Format Field... 메뉴를 선택한다.


Format Editor 대화상자 중간 쯤에 Display String: 오른편의 버튼을 클릭한다.





ToText(ToNumber({COMMAND이름.컬럼명}),0)


위의 Format Workshop 대화상자에서 Functions - Strings - ToText 를 찾아서 F1 키를 누르면 도움말이 뜬다.


ToText 함수의 2번째 인자는 소수점 자릿수이다.

0 이면 소수점을 표시 안하는 것이고, 8 이라고 하면 소숫점 8째 자리까지 표시한다.


위와 같이 Crystal Report에서 Display String 에서 형변환 하는 것의 문제점은 다음과 같다.

Field 컨트롤 임에도 불구하고 다시 어떤 Field 인지를 지정해 줘야 한다는 것, 그리고 자릿수를 지정해야 한다는 점인데, Query에서 숫자형으로 가져온 경우에도 다음과 같이 Crystal Report의 Format Editor에서 출력할 소숫점 자릿수를 정해줘야 한다.




MySQL에서는 문자형을 숫자형으로 형변환하는 법


CAST('문자형' AS UNSIGNED) 로 형변환하거나 => 정수형의 경우,

CAST('문자형' AS DECIAL(65,15)) => 실수형의 경우

이런 식으로 자릿수를 정해서 형변환을 해야 한다.

소숫점의 자릿수를 미리 정해줘야 한다는 점은 역시 불편한 점이다.

소숫점의 자릿수를 미리 정해주는 것이 싫다면 Query에서 SELECT SUM('문자형') ... 이라고 하면, 자동으로 숫자형으로 바뀐다. 자릿수를 정해줄 필요없이 원래 문자열이 가지고 있던 소숫점 자릿수만큼 그대로 숫자로 변환된다.


Conclusion


결론은 문자열로 저장된 숫자 데이터를 Crystal Report에서 보여줄 때는 Display String: 에서 형변환 함수를 이용하는 것보다는 쿼리에서 숫자형으로 바꾸고 나서 Crystal Report의 Format Editor에서 출력할 소숫점 자릿수를 정해주는 것이 좀 더 편했다.


출력할 소숫점 자릿수가 동일한 Field가 여러 개 있다면 Format Painter 버튼을 통해 간단하게 동일한 서식으로 만들 수 있다. Display String 에서 형변환 함수를 이용한다면 Format Painter 기능을 이용하면 텍스트로 지정한 Field 이름까지 동일하게 복사되기 때문에 Field 이름을 수정하는 수고로움을 겪어야 한다.



Comments