C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[67691] Re:DBGrid에서의 VARBYTE표기 관련 질문입니다
Starlet [starlet5] 1672 읽음    2012-07-09 15:32
http://www.delphigroups.info/2/3a/288172.html
http://delphi.about.com/library/weekly/aa030105a.htm

Blob필드를 OnGetText 이벤트를 사용해서 문자열로 나오게 해주는 방법인데 VARBYTE로 표시되는 것도 해결되는 모양입니다. 한번 참고해 보시길...

박준규 님이 쓰신 글 :
: 이미지 파일은 각각
: 1. 프로그램 실행상태
: 2. MYSQL 테이블 상태
: 3. MYSQL 문자셋 상태
:
:
: DB로 간단한 프로그램을 짜고 있는데 언어셋 문제에서 난관에 봉착했습니다.
: 일주일이 넘어가는데 도통 답이 안보여서 질문까지 하게되었습니다.
:
: 문제사항은 DBGrid의 값들이 숫자가 아닌 문자 자료형이면 VARBYTE로 표기되는것입니다.
:
: SQL쿼리 날린 결과값을 반복문으로 돌려가면서 Memo등에 출력하면 한글이 정상적으로 표기되는데
: DBGRID만 꼭 저렇게 나오네요, 구글링 해보니 저런 사례가 간혹가다 있는데 해결된걸 못봤습니다.
:
: 수작업으로 출력한 결과 SQLQuery1 과 ClientDataSet1까지는 자료가 한글로 잘 넘어와서 메모장에
: 출력됩니다만 DataSource1 거쳐서 DBGrid만 들어가면 문자들이 저렇게 나와버립니다.
:
: DB그리드는 기본 TDBGrid와 Raize 컴포넌트의 RzDBGRID 둘다 저모양으로 나옵니다.
:
: 아래는 환경사항입니다
:
: - 툴은 C++Builder6, DB는 MYSQL 5.1.41-community 입니다(MySQL 문자셋: UTF-8 Unicode (utf8))
: - 컴포넌트는 DBGrid와 DBexpress를 사용했습니다
: - 드라이버 파일은 포럼에서 받은 빌더용 MySQL 5.x 드라이버를 사용하였습니다.
: - 테스트 시 문자셋은 가능한한 모두 UTF8로 통일 했으며 EUCKR로 통일한 상태에서도 같은 증상이 발생합니다
: - set name 을 사용해서 각각 euckr과 utf8로 해줘도 같은 VARBYTE 상태로 표기됩니다
: - ClientDataSet1 이나 SQLQuery1 를 반복문으로 돌려서 레코드 값을  Memo1에  찍어보면 한글이 잘나옵니다
: - 컴포넌트 는 각각 연결해주는 값만을 설정하였으며 별도 내용은 손보지 않았습니다.
:
:
: 아래는 예제의 소스 입니다.
:
: bool __fastcall TForm1::DBconnection()
: {
:     bool bResult = false;
:     __try
:     {
:         try
:         {
:             SQLConnection1->DriverName = "dbxmysql";
:             SQLConnection1->GetDriverFunc = "getSQLDriverMYSQL50";
:             SQLConnection1->LibraryName = "dbxopenmysql50.dll";
:             SQLConnection1->Params->Clear();
:             SQLConnection1->Params->Values["User_Name"] = "root";            
:             SQLConnection1->Params->Values["Password"] = "apmsetup";     
:             SQLConnection1->Params->Values["HostName"] = "127.0.0.1";       
:             SQLConnection1->Params->Values["Database"] = "mdsi_lab_erp";
:             SQLConnection1->Open();
:             //SQLQuery1->SQL->Clear();
:             //SQLQuery1->SQL->Add("set names euckr");
:             //SQLQuery1->SQL->Add("set names utf8");
:             //SQLQuery1->ExecSQL();
:             bResult = true;
:         }
:         catch(Exception &E){
:             //..
:         }
:     }
:     __finally{return bResult;}
: }
: 

:
:
: 아래는 각 DBExpress 컴포넌트값들의 설정입니다
: [SQLConnection1]
: Connected = true
: ConnectionName = MYSQL
: DriverName = dbxmysql
: GetDriverFunc = getSQLDriverMYSQL50
: KeepConnection = true
: LibraryName = dbxopenmysql50.dll
: Name = MYSQLCon
: VendorLib=libmysql.dll
:
: [SQLDataSet1]
: SQLConnection = SQLConnection1
:
: [DataSEtProvider1]
: Constraints = true
: DataSet = MySQLQuery
: Exported = true
: Name = DataSetProvider1;
:
: [ClientDataSet1]
: Active = true;
: ProviderName = DataSetProvider1;
:
: [DataSource1]
: DataSet = ClientDataSet1
: Enabled = true
:
: [MySQLQuery]
: SQLConnection = MySQLCon
: SQL = SELECT * FROM mdsi_afterservice
:
: [SQLClientDataSet1]
: FetchOnDemand = true;
:
:
: 이상입니다, 도데체 어디가 문제길래 저렇게 나오는걸까요. 많은 답변 부탁드립니다.

+ -

관련 글 리스트
67622 DBGrid에서의 VARBYTE표기 관련 질문입니다 박준규 1549 2012/06/21
67691     Re:DBGrid에서의 VARBYTE표기 관련 질문입니다 Starlet 1672 2012/07/09
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.