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
[17029] Data Control을 사용하지 않는 것은 별로 좋은 방법이 아닙니다만...
김백일 [cedar] 877 읽음    2002-03-29 15:06
지영배 님이 쓰신 글 :
:
: Data Controls 탭의 컴포넌트를 사용하지 않고..
:
: 일반적인 비주얼 컴포넌트를 이용해서..
:
: 결과값들을 제가 필요한 형식으로 변형후에 출력해주고 싶거든요..
:
: 데이터셋 컴포넌트는 TADOQuery 를 사용하였구요..
:
: 쿼리는..  ADOQuery1->SQL->Add() 를 이용해서 보냈습니다.
:
: SELECT 문장을 사용하였다면 결과물은 어디에 저장되는지요?

데이터셋이라는 것은 간단히 생각하면
현재 레코드를 가리키는 포인터라고 생각하시면 됩니다.
(물론 정확히는 포인터가 아닙니다.
마치 STL의 iterator와 비슷하다고 생각하시면 됩니다.)

ListBox1에 쿼리 결과를 넣는 예제입니다.

ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add("SELECT 어쩌구 저쩌구");
ADOQuery1->Open();
ListBox1->Clear();
for (ADOQuery1->First(); !ADOQuery1->Eof; ADOQuery1->Next()) // 이 부분을 잘 보세요!
  ListBox1->Items->Add(ADOQuery1->Fields[0]->AsString + ", " + ADOQuery1->Fields[1]->AsString);

그런데, 이렇게 하면
데이터셋의 처음부터 끝까지 모든 내용을 다 집어 넣기 때문에
상당한 시간과 메모리를 요구합니다.
TDBGrid등의 데이터 컨트롤을 사용하면,
화면에 표시되는 부분만을 그때 그때 표시하기 때문에 훨씬 적은 메모리와 시간을 쓰게 됩니다.
특별한 경우가 아니면 데이터 컨트롤을 꼭 쓰시는 것이 좋습니다.


+ -

관련 글 리스트
17026 [질문] sql 결과 를 Data Controls 을 사용하지 않고 결과물 출력하기 지영배 834 2002/03/29
17029     Data Control을 사용하지 않는 것은 별로 좋은 방법이 아닙니다만... 김백일 877 2002/03/29
17030         오늘 정말 감사합니다. ^^ (내용무) 지영배 790 2002/03/29
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.