Q&A
HOME
Tips & Tech
Q&A
Discuss
Download
자유게시판
홍보 / 광고
구인 / 구직
LOGIN
회원가입
Treeview에서 DB연결하기 [급질문!]
우선 이 질문을 보시는분께 감사드립니다.
델파이를 공부한지 얼마않되서그런데요,
예를들어, treeview에서 홍길동을 치면 홍길동에대한 신상명세가 출력되게 하려는데, DB(Paradox)연결방법을 알고싶습니다.(소스 포함)
제가 델파이를 시작한지 얼마않됐기때문에 가능하면, 쉽고 자세하게 가르쳐주시면 정말정말 너무너무 감사하겠습니다..
그럼, 이글을 보신분들께 진심으로 감사드립니다.
3
COMMENTS
오현수
•
1999.11.12 09:42
나도질문 wrote:
> 우선 이 질문을 보시는분께 감사드립니다.
>
> 델파이를 공부한지 얼마않되서그런데요,
> 예를들어, treeview에서 홍길동을 치면 홍길동에대한 신상명세가 출력되게 하려는데, DB(Paradox)연결방법을 알고싶습니다.(소스 포함)
>
> 제가 델파이를 시작한지 얼마않됐기때문에 가능하면, 쉽고 자세하게 가르쳐주시면 정말정말 너무너무 감사하겠습니다..
>
> 그럼, 이글을 보신분들께 진심으로 감사드립니다.
TreeView나 ListView와 연결되는 component도 본것 같은데요,
질문하신 내용중 '홍길동을 치면'이란 내용이 TreeView에서 '홍길동'이라는 항목을
선택한다는 의미 인가요? 만일 그렇다면
제가 사용하고 있는 방법을 말씀 드리면,
TreeView에 노드를 생성(추가)할때 TreeNode.Data에 DB의 각 레코드의 정보(Key)를 기억시켜 놓고 노드를 선태하면 해당 노드의 .Data의 내용을 읽어와서 Table을 검색하는 방식을 사용하고 있습니다
질문하신 내용이 맞다면 해당 소스도 올려드리죠!!
0
0
삭제
수정
댓글
나도질문
•
1999.11.12 21:26
오현수 wrote:
> 나도질문 wrote:
> > 우선 이 질문을 보시는분께 감사드립니다.
> >
> > 델파이를 공부한지 얼마않되서그런데요,
> > 예를들어, treeview에서 홍길동을 치면 홍길동에대한 신상명세가 출력되게 하려는데, DB(Paradox)연결방법을 알고싶습니다.(소스 포함)
> >
> > 제가 델파이를 시작한지 얼마않됐기때문에 가능하면, 쉽고 자세하게 가르쳐주시면 정말정말 너무너무 감사하겠습니다..
> >
> > 그럼, 이글을 보신분들께 진심으로 감사드립니다.
>
> TreeView나 ListView와 연결되는 component도 본것 같은데요,
> 질문하신 내용중 '홍길동을 치면'이란 내용이 TreeView에서 '홍길동'이라는 항목을
> 선택한다는 의미 인가요? 만일 그렇다면
> 제가 사용하고 있는 방법을 말씀 드리면,
> TreeView에 노드를 생성(추가)할때 TreeNode.Data에 DB의 각 레코드의 정보(Key)를 기억시켜 놓고 노드를 선태하면 해당 노드의 .Data의 내용을 읽어와서 Table을 검색하는 방식을 사용하고 있습니다
>
> 질문하신 내용이 맞다면 해당 소스도 올려드리죠!!
>
>
우선 답변을 주신 오현수님께 감사의 말씀을 드립니다..
오현수님이 물어보신내용이 맞습니다.
소스를 올려주시면 감사하겠습니다...
그럼, 기다리겠습니다....
0
0
삭제
수정
댓글
오현수
•
1999.11.15 00:28
[나도 질문]님 보세요.
원리는 다음과 같습니다.
TTreeView의 노드정보는
TreeNode에 들어 있는데 TreeNode의 프로퍼티중 Data가
Pointer를 참조할 수 있습니다.
Data에 직접 원하는 값을 넣으면 일은 간단하겠지만
범용의 목적을 위해 객체의 주소만을 가지게 됩니다.
우선 TreeView와 DB의 Table의 각 레코드들을 연결시키기 위해서는
레코드의 정보를 Data프로퍼티에 넣어야 하는데요, 여러 가지 방법이
있을 것 같은데 저는 TStringList를 이용했습니다.
StringList에 레코드의 키(key)값을 저장한 다음, StringList[]의 포인터를
Data프로퍼티에 넣는 거죠(좀 어렵나요?)
이렇게 한 후 TreeView의 OnChanging 이벤트에서
선택된 TreeNode의 Data에서 값을 읽어온 후
그 값(Key)로 Table등에서 검색을 실시하는 거죠. 물론 이 Table은
DBGrid나 기타 DB-controls에 연결이 되어 있어야 선택한
항목이 보여지겠죠.
(이해가 되셨으면 좋겠는데..)
아래의 코드는 제가 지금 하고있는 DB의 내용중
질문하신 내용과 관련된 부분을 조금 따오고, 수정한 내용입니다.
(소스가 좀 지저분 한 것 같아서 내용을 말씀드리면 학교 시설물을
각 구분별로 Tree를 구성하고 해당 시설물을 선택하면 그 내용을 DB-control에
보여주게 되는 부분입니다.)
(참고로 저는 DBMS로 Interbase-Server를 사용하고 있습니다. )
DB의 내용을 읽어와서 TreeView를 구성하는 부분입니다.
-------------------------------------------------------------
var
sPrevItem : string;
RNode, CNode, node : TTreeNode;
index : integer;
begin
if instiList = nil then
begin
//시설물의 키값을 저장할 StringList입니다.
//(다른 부분에서도 참조 되므로 전역변수로 선언되어 있어야 합니다.)
instiList := TStringList.Create;
end;
sPrevItem := '';
Query.Close();
//master라는 테이블로 부터 ino,name,part의 세 필드를
//part와 ino의 순서로 읽어들이고 있습니다.
with Query do begin
SQL.Clear();
SQL.Add('SELECT ino, name, part FROM master');
SQL.Add('ORDER BY part, ino');
end;
Query.Open();
instiList.Clear(); // TStringList의 내용을 Clear합니다.
//tvInstiList <- TTreeView입니다.
tvInstiList.Items.BeginUpdate(); //노드를 추가하기전 반드시 넣어주세요(속도 증가.)
tvInstiList.Items.Clear(); // 이전의 TreeView 노드를 제거합니다.
RNode := tvInstiList.Items.Add(nil, '구분별');
CNode := nil;
// part별로 Tree를 생성합니다.
repeat
if sPrevItem <> Query.FieldByName('part').AsString then
begin
CNode := tvInstiList.Items.
AddChild(RNode, Query.FieldByName('part').AsString);
CNode.ImageIndex := 1;
sPrevItem := Query.FieldByName('part').AsString;
end;
node := tvInstiList.Items.AddChild(CNode,
Format('%6s동 :%s',[ Query.FieldByName('ino').AsString,
Query.FieldByName('name').AsString ]) );
//StringList에 키값을 저장하고
index := instiList.Add(Query.FieldByName('ino').AsString);
//포인터 형으로 변환후 대입
node.Data := PString(instiList[index]);
Query.Next();
until Query.Eof;
tvInstiList.Items.EndUpdate();
Query.Close();
-----------------------------------------------------------------
//TreeView의 OnChanging 이벤트에 대한 처리입니다.
procedure TMainForm.tvInstiListChanging(Sender: TObject; Node: TTreeNode;
var AllowChange: Boolean);
begin
//Node는 마우스나 커서에의해 선택된 노드가 되므로
//Node.Data의 값을 얻어오면 됩니다.
//이때 주의 할 것은 위에서 Pointer형으로 넣었으므로
//String형으로 다시 변환을 해야 합니다.
//그리고 FindKey들의 함수를 써서 검색을 하면 됩니다.
//아래의 것은 제가 DataBank란 묘듈안에 FindMasterRecord란 function을 만들어 놓은 것입니다.
//간단하게 하자면
// Table.FindKey(['ino'], Stirng(Node.Data) )란 식으로 쓰면 되겠죠.
AllowChange := DataBank.FindMasterRecord( String(Node.Data));
end;
이외에 추가나 삭제등의 처리가 필요하고요
제가 Test한 결과로는 DB로부터 tree를 만들때 OnChanging 이벤트가
발생해서 검색을 실시합니다. 그러므로 속도가 무지하게 느려집니다.
그러므로 Tree의 노드를 추가할때는 OnChanging가 되지 않도록
코드를 해야만 합니다. 저는 추가시 OnChaneing를 Disable시키고 있습니다.
도움이 되었으면 좋겠네요.
좋은 주말 되세요..
0
0
삭제
수정
댓글
(NOTICE) You must be
logged in
to comment on this post.
구민오
1999.11.12 20:08
0
COMMENTS
/
0
LIKES
훅프로시저 안에서 변수 공유 하려면?
mobydick
•
1999.11.12 18:47
1
COMMENTS
/
0
LIKES
(질문) 텍스트박스에서 숫자만 입력받을려면?.
김영대
•
1999.11.12 19:16
mobydick wrote: > 에디터마스크를 쓰지않고 숫자만 입력받을려고 하는데 방법을 모르겠습니다. > 문자가...
나도질문
•
1999.11.12 08:58
3
COMMENTS
/
0
LIKES
Treeview에서 DB연결하기 [급질문!]
우선 이 질문을 보시는분께 감사드립니다. 델파이를 공부한지 얼마않되서그런데요, 예를들어, treeview에서 홍길동을 치면 홍길동에대한 신상명세가 출력되게 하려는데, DB(Paradox)연결방법을 알고싶습니다.(소스 포함) 제가 델파이를 시...
오현수
•
1999.11.12 09:42
나도질문 wrote: > 우선 이 질문을 보시는분께 감사드립니다. > > 델파이를 공부한지 얼마않되서그런데...
나도질문
•
1999.11.12 21:26
오현수 wrote: > 나도질문 wrote: > > 우선 이 질문을 보시는분께 감사드립니다. > > > > 델파이를 공...
오현수
•
1999.11.15 00:28
[나도 질문]님 보세요. 원리는 다음과 같습니다. TTreeView의 노드정보는 TreeNode에 들어...
황현동
•
1999.11.12 08:50
1
COMMENTS
/
0
LIKES
파일 찾기..
김영대
•
1999.11.12 19:31
황현동 wrote: > 어느 디렉토리안에서 파일을 찾는것이 아니라. > 드라이브에 내가 원하는 파일을 모조리...
정순보
1999.11.12 05:19
0
COMMENTS
/
0
LIKES
C++ 에서 짠 winsock과 통신이 잘 안되요... 너무 급합니다. 꼭 부탁드려요.
김수진
•
1999.11.12 03:23
1
COMMENTS
/
0
LIKES
Midas에서 한글이 깨져잉~~
이재식
•
1999.11.12 05:18
김수진 wrote: > 데이타 베이스는 Paradox이고요 델파이는 5.0이고요... > Midas수정하거나 저장하면 한...
초보자
•
1999.11.12 03:08
4
COMMENTS
/
0
LIKES
DBcombobox에 대해서 ...
이재식
•
1999.11.12 06:00
초보자 wrote: > 안녕하세요. > 델파이 초보자입니다. > 죄송합니다만 DBcombobox에 대해서 물어보고 싶...
임형호
•
1999.11.12 23:32
이재식 wrote: > 초보자 wrote: > > 안녕하세요. > > 델파이 초보자입니다. > > 죄송합니다만 DBcombob...
이재식
•
1999.11.13 20:33
임형호님께서 말씀하신것이 맞습니다. 저의 경우는 그 필드가 주키 내지 유일성 속성이 있으면 되는데, ...
권경부
•
1999.11.12 04:52
안녕하세요.. TDBLookupCombobox를 써보세요.... 쩝... 초보자 wrote: > 안녕하세요. > 델파이 초보...
임형호
•
1999.11.12 02:41
2
COMMENTS
/
0
LIKES
버튼클릭 이벤트에 대해서...
BisBuck
•
1999.11.12 07:05
임형호 wrote: > 제가 프로그램을 작성하다보니 가끔은 중간에 다른 버튼이벤트를 실행해야할 필요성이 있...
김종호
•
1999.11.12 03:41
임형호 wrote: > 제가 프로그램을 작성하다보니 가끔은 중간에 다른 버튼이벤트를 실행해야할 필요성이 있...
조복기
•
1999.11.12 02:20
1
COMMENTS
/
0
LIKES
이미지 축소/확대 저장방법에 대해서..
이정욱
•
1999.11.12 08:06
StetchBlt 함수를 참고하세요. ^^ 물론 복기님 실력이면 이 말만 해주면 돼죠? ^^ 조복기 wrote: > ...
이영선
•
1999.11.12 01:27
4
COMMENTS
/
0
LIKES
ActiveForm과 Midas에서의 에러문제....
bluechip
•
1999.11.14 06:03
말씀하신 내용은 MIDAS만 해당하는 것은 아닙니다 델파이로 데이타 베이스 프로그램을 작성할때 Session ...
bluechip
•
1999.11.14 06:02
말씀하신 내용은 MIDAS만 해당하는 것은 아닙니다 델파이로 데이타 베이스 프로그램을 작성할때 Session ...
bluechip
•
1999.11.14 06:02
말씀하신 내용은 MIDAS만 해당하는 것은 아닙니다 델파이로 데이타 베이스 프로그램을 작성할때 Session ...
bluechip
•
1999.11.14 06:02
말씀하신 내용은 MIDAS만 해당하는 것은 아닙니다 델파이로 데이타 베이스 프로그램을 작성할때 Session ...
델파이초보여요
1999.11.12 00:34
0
COMMENTS
/
0
LIKES
앗 죄송! 다시질문드립니다. 델파이 3.0의 socket
델파이초보여요
1999.11.12 00:26
0
COMMENTS
/
0
LIKES
분류먼저 해주시길 부탁드립니다.
뽀또
1999.11.11 23:50
0
COMMENTS
/
0
LIKES
분류먼저 해주시길 부탁드립니다.
안명호
•
1999.11.11 23:24
1
COMMENTS
/
0
LIKES
DBGrid....
배불뚝
•
1999.11.30 19:44
query 결과를 dbgrid같은 data control component 에 출력하려면 중간에 datasource가 필요한 것은 아시지...
박성훈
•
1999.11.11 23:10
1
COMMENTS
/
0
LIKES
TStrings.Add와 TStrings.Text
TeamX
•
1999.11.12 00:02
제가 잘은 모르지만.... 에러의 이유는 OOP(Object Oriented Programming)과 관련이 있습니다. 에러...
세리
•
1999.11.11 22:41
1
COMMENTS
/
0
LIKES
이유가 뭐죠?(초보질문1)
TeamX
•
1999.11.11 23:50
글쎄요.... 델파이데모버전에서는 그러는걸 봤는데(일부러 IDE가 더있어야 사용가능하게 해놓았죠) ...
이영근
•
1999.11.11 22:21
1
COMMENTS
/
0
LIKES
이정욱님 SDK 에 대해서...
이정욱
•
1999.11.12 08:08
SDK (Source Developement Kit) 입니다. 만약 DLL로 콘트롤을 할수 있으면 아마도 *.h 등으로 헤더파일이 ...
임형호
1999.11.11 22:04
0
COMMENTS
/
0
LIKES
정렬에 대해 물어보신 분께.....
델초
•
1999.11.11 21:52
1
COMMENTS
/
0
LIKES
install 쉴드는 어디에...?
임형호
•
1999.11.11 22:06
델초 wrote: > program을 다 만들고 나서 인스톨쉴드란게 있다기에 찾아보니 저한테는 설치가 안되었거든...
김준호
•
1999.11.11 21:24
1
COMMENTS
/
0
LIKES
정렬을 못하겠어요?
박성훈
•
1999.11.11 23:15
김준호 wrote: > 테이블을 정렬하려고 하는데 잘 되지 안아요.. > 이름이나 번호로 정렬하는것 좀 가르쳐...
나도질문
1999/11/12 08:58
Views
339
Likes
0
Comments
3
Reports
0
Tag List
수정
삭제
목록으로
한델 로그인 하기
로그인 상태 유지
아직 회원이 아니세요? 가입하세요!
암호를 잊어버리셨나요?
> 우선 이 질문을 보시는분께 감사드립니다.
>
> 델파이를 공부한지 얼마않되서그런데요,
> 예를들어, treeview에서 홍길동을 치면 홍길동에대한 신상명세가 출력되게 하려는데, DB(Paradox)연결방법을 알고싶습니다.(소스 포함)
>
> 제가 델파이를 시작한지 얼마않됐기때문에 가능하면, 쉽고 자세하게 가르쳐주시면 정말정말 너무너무 감사하겠습니다..
>
> 그럼, 이글을 보신분들께 진심으로 감사드립니다.
TreeView나 ListView와 연결되는 component도 본것 같은데요,
질문하신 내용중 '홍길동을 치면'이란 내용이 TreeView에서 '홍길동'이라는 항목을
선택한다는 의미 인가요? 만일 그렇다면
제가 사용하고 있는 방법을 말씀 드리면,
TreeView에 노드를 생성(추가)할때 TreeNode.Data에 DB의 각 레코드의 정보(Key)를 기억시켜 놓고 노드를 선태하면 해당 노드의 .Data의 내용을 읽어와서 Table을 검색하는 방식을 사용하고 있습니다
질문하신 내용이 맞다면 해당 소스도 올려드리죠!!