1. 다음과 같은 DB의 자료를 REST API (JSON형식) 서버를 통해 델파이 TDBGrid에 구현하려고 합니다.
2. REST Debugger 를 통해 Copy Components 할때 "Response" > "Tabular Data" 의 Use Types 를 "Rich" 가 아닌 Strings 나 JSON 으로 해야
TRESTResponseDataSetAdapter, TFMemTable 컴포넌트도 같이 생성됩니다. "Rich" 로 하면 TRESTClient, TRESTRequest, TRESTResponse 만 생성됩니다.
그런데 Strings 로 하면 모든 컬럼이 DB 컬럼 타입(문자타입, 숫자타입, 날짜타입)과 무관하게 TWideStringField 255 크기로 설정되는 문제가 있습니다.
그래서 복사해온 TRESTResponseDataSetAdapter 의 TypesMode 를 Rich 로 바꾸고 TFMemTable 의 Fields Editor 에서 마우스 우클릭 "Add all fields" 하면 그림처럼 자료의 첫번째 레코드 크기("김구") 에 맞추어 져서 Size 가 2로 되네요. 실제는 더 큰 사이즈인데 첫번째 레코드로 판별합니다.
숫자 컬럼도 DB 는 integer 인데 TFloatField 로 변경되고요.ㅠㅠ
2Tier 의 경우 직접 DB와 연결되므로 정확한 컬럼 타입을 알수가 있지만 Rest 서버의 경우 JSON으로 자료를 전달하니 이해되는 부분이기는 합니다.
어쩔수 없이 TFMemTable 의 Fields Editor 에서 "New fIeld..." 로 하나 하나 추가하면서 데이터 Type 을 정확히 매칭시키고 있습니다.
기존 TFMemTable 의 Fields Editor 에서 데이터 타입을 변경하는 방법이 있으면 일단 모든 필드를 가져오고 타입과 사이즈만 변경하면 편리할 듯 한데 현재는 그럴 수 없는 것 같네요.
필드의 타입이 정확해야 숫자형은 DisplayFormat 속성으로 "##,#" 등을 설정하여 천단위 숫자 콤마도 표현하고 DBGrid에 타이틀을 한글로 바꾸고 할 수 있습니다. 또한 정렬시에도 정확히 될 거구요
이 부분에 대해 좀 더 생산적인 방법을 알고 계신분 있으신가요?
대부분의 참고 동영상이 REST Debugger 로 연결하고 자료가 보이는 부분까지이지 이런 부분까지는 언급한 자료는 찾지를 못했네요
질문
미스터몽키
1. 다음과 같은 DB의 자료를 REST API (JSON형식) 서버를 통해 델파이 TDBGrid에 구현하려고 합니다.
2. REST Debugger 를 통해 Copy Components 할때 "Response" > "Tabular Data" 의 Use Types 를 "Rich" 가 아닌 Strings 나 JSON 으로 해야
TRESTResponseDataSetAdapter, TFMemTable 컴포넌트도 같이 생성됩니다. "Rich" 로 하면 TRESTClient, TRESTRequest, TRESTResponse 만 생성됩니다.
그런데 Strings 로 하면 모든 컬럼이 DB 컬럼 타입(문자타입, 숫자타입, 날짜타입)과 무관하게 TWideStringField 255 크기로 설정되는 문제가 있습니다.
그래서 복사해온 TRESTResponseDataSetAdapter 의 TypesMode 를 Rich 로 바꾸고 TFMemTable 의 Fields Editor 에서 마우스 우클릭 "Add all fields" 하면 그림처럼 자료의 첫번째 레코드 크기("김구") 에 맞추어 져서 Size 가 2로 되네요. 실제는 더 큰 사이즈인데 첫번째 레코드로 판별합니다.
숫자 컬럼도 DB 는 integer 인데 TFloatField 로 변경되고요.ㅠㅠ
2Tier 의 경우 직접 DB와 연결되므로 정확한 컬럼 타입을 알수가 있지만 Rest 서버의 경우 JSON으로 자료를 전달하니 이해되는 부분이기는 합니다.
어쩔수 없이 TFMemTable 의 Fields Editor 에서 "New fIeld..." 로 하나 하나 추가하면서 데이터 Type 을 정확히 매칭시키고 있습니다.
기존 TFMemTable 의 Fields Editor 에서 데이터 타입을 변경하는 방법이 있으면 일단 모든 필드를 가져오고 타입과 사이즈만 변경하면 편리할 듯 한데 현재는 그럴 수 없는 것 같네요.
필드의 타입이 정확해야 숫자형은 DisplayFormat 속성으로 "##,#" 등을 설정하여 천단위 숫자 콤마도 표현하고 DBGrid에 타이틀을 한글로 바꾸고 할 수 있습니다. 또한 정렬시에도 정확히 될 거구요
이 부분에 대해 좀 더 생산적인 방법을 알고 계신분 있으신가요?
대부분의 참고 동영상이 REST Debugger 로 연결하고 자료가 보이는 부분까지이지 이런 부분까지는 언급한 자료는 찾지를 못했네요
이 댓글 링크
다른 사이트에 공유하기
2 answers to this question
Recommended Posts
이 토의에 참여하세요
지금 바로 의견을 남길 수 있습니다. 그리고 나서 가입해도 됩니다. 이미 회원이라면, 지금 로그인하고 본인 계정으로 의견을 남기세요.