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
[16704] Re:[질문] DB에서 불러온 스트링을 트리에 뿌려주기...
만해 [greenuri] 1392 읽음    2002-03-23 18:56
안녕하세요 만해입니다.

어제 오프 갔다 와서 해롱 해롱 하네요 쩝~

우선 제가 아는것 만 애기 드리면요

화니화니 님이 쓰신 글 :
: 우선 DB에서 select문을 이용 특정 필드의 data를 불러 왔습니다.
: Root와 Level 2 까지의 노드는 제가 직접 값을 미리 만들었구여
: 문제는 노드 level 3 부터는 디비에서 값을 가져와서 level 2 에 자식노드로 붙일려고 하는데..
: 생각처럼 되지가 않네여...좋은 방법이나 힌트좀 주세여...
:
: 소스 입니다.
:
:    AnsiString InputString;
:
:    /Computer테이블의 필드 모두 호출
:    Query2->Active=false;
:    Query2->SQL->Clear();
:    Query2->SQL->Add("Select * from Computer");

여기에서 Query2->SQL 은 Selece * from Computer 인 상태인데

:
:    //WorkStation 노드 만들고
:    Node = TreeView3->Items->AddChild(RootNode,"WorkStation");
:    TTreeNode *WorkStationNode =TreeView3->Items->Item[1];
:    TreeView3->Items->Item[1]->ImageIndex = 1;
:
:    //이제 특정 필드를 불러 와서 스트링에 집어 넣고
:    Query2->SQL->Add("Select count(Name) from Computer where Name=:Name");
:    Query2->ParamByName("Name")->AsString =InputString;

  여기서 바로 Query2->SQL->Add()를 통해 쿼리를 집어 넣었네요

  그럼 위에서 넣은 Query가 남아 있는 상태서 덧붙여 지기 때문에

  Query가 제대로 실행이 안될것 같네요

  Query->SQL->Add()를 하기 전에는 꼭
  Query->SQL->Close();
  Query->SQL->Clear();
  해주세요 안 그러면 이전에 입력해 놓은 쿼리가 그대로 남아 있어서

  제데로된 쿼리가 전달이 안됩니다.

:
:    //여기서 문제 가 발생합니다. 아무런 값도 트리에 출력되지 않거든여..
:    //무엇이 잘못 된건지..스트링이라서 그런가...? 힌트좀 주세여..ㅠ_ㅠ
:  
:
:    Node=TreeView3->Items->AddChild(WorkStationNode,InputString);
:    TreeView3->Items->Item[2]->ImageIndex = 2;
:
:

  여기도 쿼리의 초기화 부분이 필요 하겠네요


:    Query2->SQL->Add("Select count(Sys_User) from HW_WorkStation where Sys_User=:Sys_User");
:    Query2->ParamByName("Sys_User")->AsString= InputString;
:    Node=TreeView3->Items->AddChild(WorkStationNode,InputString);
:    TreeView3->Items->Item[3]->ImageIndex = 3;
:
:
:    //책 보고 이리저리 해 본건데..여기서 더이상 진전이 없네여.. 초보라서..
:    //잘 모르거든여.. 무슨 방법을 써야 하는지...알려주세여..
:
:    Query2->ExecSQL();
:    Query2->Active=true;

그리고

  Query->Open();
  Query->ExecSQL();

  둘의 차이점을 조금 애기 드리면요

  그냥 간단히 자료입력이나 삭제 혹은 수정과 같이 기존의 자료에 대한 변경이 가해지면
 
  Query->ExeSQL();을 사용하셔야 하고요

  기존의 자료를 변경이 아닌 정렬이나 그런 쿼리라면

  Query->Open();을 사용하세요

  위의 경우는 대표적인게 Create Table, Insert, Delete, Update 같은게 있겠고요

  아래의 경우는 Select가 가장 대표적이지요

  그리고요 Query->Active의 경우는 대부분 쿼리의 활성화여부를 판단하기 위해

  If ( Query->Active ) <- 이런식으로 많이 쓰인답니다.

  그럼 이만~


+ -

관련 글 리스트
16671 [질문] DB에서 불러온 스트링을 트리에 뿌려주기... 화니화니 1129 2002/03/23
16704     Re:[질문] DB에서 불러온 스트링을 트리에 뿌려주기... 만해 1392 2002/03/23
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.