数据库表:ID NAME P_ID
C 学历
C1 硕士
C2 大学本科 C
C21 本科毕业 C2
C211 本科.....1 c21
c213 本科.....3 c21
C22 本科Y业 C2
C3 大学专科 C
C5 中专 C如何创建出来,P_ID是它的父结点。
有什么好办法吗,请详细些,谢谢
C 学历
C1 硕士
C2 大学本科 C
C21 本科毕业 C2
C211 本科.....1 c21
c213 本科.....3 c21
C22 本科Y业 C2
C3 大学专科 C
C5 中专 C如何创建出来,P_ID是它的父结点。
有什么好办法吗,请详细些,谢谢
数据库结构:
表:TV_TABLE:
字段:ID, NAME, PID
}unit Unit1;interfaceuses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Db, ADODB, ComCtrls, StdCtrls;type
TForm1 = class(TForm)
Button1: TButton;
TreeView1: TTreeView;
ADOQuery1: TADOQuery;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.DFM}
procedure CreateTree(var ANode : TTreeNode; var pid : integer);
var
id : integer;
name : string;
bmk : TBookMark;
begin
with form1,ADOQuery1 do
begin
Filter := 'PID=' + inttostr(pid);
while not Eof do
begin
name := FieldByName('NAME').AsString;
Anode := Treeview1.Items.AddChild(Anode, name);
id := FieldByName('ID').AsInteger;
bmk := GetBook;
CreateTree(ANode,id);
Anode := Anode.Parent;
Filter := 'PID=' + inttostr(pid);
if ADOQuery1.BookValid( bmk ) then
begin
GotoBook(bmk);
FreeBook(bmk);
end;
next;
end;
end;
end;procedure TForm1.Button1Click(Sender: TObject);
var
t : TTreeNode;
Id : integer;
begin
ADOQuery1.SQL.Add('select * from tv_table');
ADOQuery1.Open;
ADOQuery1.Filtered:=true; TreeView1.Items.clear;
t := nil; id := 0; createtree(t,id);
end;end.