|
홍정아 님이 쓰신 글 :
: 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
|