궁금이 님이 쓰신 글 :
: 냠.. 오라클에 Table에 VARCHAR2(254)로 컬럼을 잡아놓은 게 있습니다.
:
: 헌데 이를 쿼리하여 DBGrid에 뿌릴때 사이즈가 커서 데이타를 못뿌리고
:
: (MEMO)라고 표시되더군요... ㅡㅡ;
:
: 혹시나 저 사이즈를 조절이 가능한지요?
:
: 아님 어쩔수 없는것인지요?
:
: 혹시나 방법이 있다면...
:
: 알려주세요..~~~^^
임프랍니다.
오라클의 VARCHAR2 필드는 빌더나 델파이의 BLOB 필드에 해당합니다.
TDBGrid는 기본적으로 BLOB 필드는 내용을 그대로 표시하지 않고 (MEMO) 라고 표시해줍니다.
(크기가 너무 커서 그렇게 나타나는 것이 아니라 크기와 관계없이 무조건 (MEMO) 라고 표시합니다.)
물론 디비그리드에 메모 필드를 강제로 표시하게 할 수도 있습니다. 다음과 같이 해보세요.
먼저, 쿼리 컴퍼넌트의 OnAfterOpen 이벤트의 핸들러를 다음과 같이 작성하세요.
void __fastcall TForm1::ADOQuery1AfterOpen(TDataSet *DataSet)
{
for(int i=0; i<DataSet->FieldCount; i++)
{
TBlobField *BlobField = dynamic_cast<TBlobField *>(DataSet->Fields->Fields[i]);
if(BlobField != NULL)
BlobField->OnGetText = BlobFieldGetText;
}
}
그리고, 다음과 같은 함수를 폼 클래스에 추가합니다.
void __fastcall TForm1::BlobFieldGetText(TField* Sender, AnsiString &Text, bool DisplayText)
{
Text = Sender->AsString;
}
이렇게 하면 디비그리드에 메모 필드의 값이 나타나게 될 겁니다.
그럼 이만...
|