procedure TForm1.AddClass(FieldLen: integer;FatherNode:TTreeNode);
var
RootNode:TTreeNode;
RootLabel:TLabel;
begin
AdoQuery1.Close;
AdoQuery1.SQL.Add('select * from pub_dep where Len(dep_id)='+Inttostr(FieldLen));
AdoQuery1.Open;
//SetLength(myNode,AdoQuery1.RecordCount+1);
while not AdoQuery1.Eof do
begin
RootNode:=Tree_dep.Items.AddChild(FatherNode,AdoQuery1.fieldbyname('dep_name').AsString);
RootLabel:=TLabel.Create(self);
RootLabel.Visible:=false;
RootLabel.Caption:=AdoQuery1.fieldbyname('dep_id').AsString;
RootNode.Data:=RootLabel;
AddChildClass(3,RootNode,AdoQuery1.FieldByName('dep_id').AsString);
AdoQuery1.Next;
end;
AdoQuery1.Free;
end;
procedure TForm1.AddChildClass(FieldLen: integer;FatherNode:TTreeNode;NameText:String);
var
AdoTmp:TAdoQuery;
SQLText:string;
myNode:TTreeNode;
myLabel:TLabel;
begin
AdoTmp:=TAdoQuery.Create(nil);
AdoTmp.Connection:=ADOConn;
AdoTmp.Close;
AdoTmp.SQL.Clear;
SQLText:='select * from pub_dep where len(dep_id)='+IntToStr(FieldLen+2)+' and left(dep_id,'+intToStr(FieldLen)+')='+quotedstr(NameText);
Memo1.Lines.Text:=Memo1.Lines.Text+chr(10)+chr(13)+SQLText;
AdoTmp.SQL.Add(SQLText);
AdoTmp.Open;
//SetLength(myNode,AdoTmp.RecordCount+1);
while not AdoTmp.Eof do
begin
myNode:=Tree_dep.Items.AddChild(FatherNode,AdoTmp.fieldbyname('dep_name').AsString);
//ADOTable1 是指 省份的表
//ADOTable2 是指 人员信息的表
var
PlaceNode: array of TTreeNode;
Node: array of TTreeNode;
PlaceString: array of String;
begin
SetLength(PlaceNode,ADOTable1.RecordCount+1);
SetLength(Node,ADOTable2.RecordCount+1);
SetLength(PlaceString,ADOTable1.RecordCount+1);
for i := 1 to ADOTabel1.RecoreCount do
begin
PlaceNode[i] := Tree1.Items.Add(nil,ADOTable1.fieldbyname('name').AsString);
PlaceString[i] := ADOTable1.fieldbyname('id').Asstring;
end;
for i:= 1 to ADOTable2.RecordCout do
begin
for j := 1 to High(PlaceNode) do
begin
if ADOTable2.fieldbyName('place').asstring = PlaceString[j] then
begin
Tree1.Items.AddChild(PlaceNode[j],ADOTable2.FieldbyName('name').AsString);
end;
end;
end;