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
[56537] Re:DBGrid에서 두, 세번째 값 가져오기
김문수 [last4leaf] 1683 읽음    2009-03-30 07:49
홍정아 님이 쓰신 글 :
: DB테이블에서  DBGrid에 이렇게 출력 후
:     
:            num    hab
:                1      6
:                5      7
:                8      2
:
:
: Form2->Panel4->Caption = Query3->FieldByName("num")->AsString;
: Form2->Panel5->Caption = Query3->FieldByName("Hab")->AsString;
: 이렇게 하면 첫번째행의 값  num의 1과,  hab의 6을 Panel에 저장하게 됩니다.
:
: 그런데 두번째열인 5,  7,
:  세번째 8,  2를 같이 DBGrid에 가져와서  panel에 넣으려 하는데 첫번째열껏만 가져오네요 .....
: 부탁드립니다..
: 버튼을 누르면 자동으로 1행,2행,3행 전부 다  한번에 가져화야 합니다..
:
:
: 또한
: DBGrid안 왼쪽 옆 표시된 삼각형? 을 자동으로 맘대로 움직일 수 있는 방법이 있나요...


while( !Query3->Eof )   // 반복해주셔야겠죠? 인덱스가 결과열의 끝에 위치하지 아니할때까지.
{
  // 이안에 원하는 처리를 해주시면 되겠죠?
  // 헌데 6개의 결과값을 판넬4와 판넬5에 다 담을순 없으니...
  //Form2->Panel4->Caption = Query3->FieldByName("num")->AsString;
  //Form2->Panel5->Caption = Query3->FieldByName("Hab")->AsString;

   Query3->Next();  //다음열로 넘기는겁니다.
}
  //요렇게 한다고 해도 원하는 결과는 얻기 힘드실겁니다. 뭐 가장 쉬운 방법으로...하자면...

///////////////////////////////////////////////////////////////////////////////
//결과값을을 배열이나 기타것에 담아도 좋지만 우선 기본적으로 결과값이 몇개가 나올지 모른다고 생각하면.
//Count 쿼리를 한번더 날려줘서 원하는조건으로 몇개의 값이 검색되는지 한번더 쿼리를 날려줘야하므로...
//비효율 적이구요...

#include <vector.h>              //벡터를 이용해보죠... 헤더파일에 선언해주시구요...
///////////////////////////////////////////////////////////////////////////////
vector <int>vtNum;
vector <int>vtHab;       //원랜 음... 결과값을 담을 자료형을 다로 만드셔야겠지만... -_- 구찮으므로 걍두개 선언.

Query3->Close();
Query3->SQL->Clear();
Query3->SQL->Add( Select Num, Hab From /*데이터베이스네임 Where 원하시는 조건*/ );
Query3->Open();   //처음 디비를 오픈하게되면. 정아님이 말씀하시는 삼각형 즉 인덱스는
                             //검색된 DB 결과에 가장 처음부분에 위치하게됩니다.
Query3->First();   //이것은 인덱스를 가장 첫번째 열로 올리는것인데 자동적으로 가장 처음부분에 위치하게
                            //되기때문에 궂이 쓸필요는 없지요.. 그래도 뭐 그냥 습관적으로...

while( !Query3->Eof )   // 아까와같이 반복해주셔야겠죠? 인덱스가 결과열의 끝에 위치하지 아니할때까지.
{
  vtNum.push_back( Query3->FieldByName("num")->AsInteger );//푸쉬 백으로 밀어넣기 하면 되겠죠 >_<;
  vtHab.push_back( Query3->FieldByName("hab")->AsInteger );
  Query3->Next();  //다음열로 넘기는겁니다.
}
  Query3->Close(); //처리가 끝난다음엔 닫아주시구요. ('' )a;
//검색한 결과값들은... vtNum과 vtHab에 고스란히`~ 차곡차곡 쌓여있으므로 알아서 사용해주시면 되겠죠`~?

//그리고 질문해주신 인덱스의 위치를 변경하는 함수들로는 First(); Next(); Last(); 등이있구요... 에`~
//음`~ codeway나 강좌나 팁 게시판에 빌더을이용한 디비프로그래밍의 기초동영상이 있었던것으로 기억하네요...^^
//그것을 한번 참고해서 보시면 될듯...
// 여기서..허접한 답변은 막을 내립니다..('' )a

+ -

관련 글 리스트
56536 DBGrid에서 두, 세번째 값 가져오기 홍정아 1492 2009/03/30
56537     Re:DBGrid에서 두, 세번째 값 가져오기 김문수 1683 2009/03/30
56543         Re:Re:DBGrid에서 두, 세번째 값 가져오기 - 감사합니다 홍정아 1220 2009/03/30
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.