以树形图显示我国行政区划结构,按照省、市、县的层次结构显示,该数据表的结构如下:t_xtgl_xzqh
-----------------------------------------------------------
qybh qymc sjqybh qyjs
区域编号(PK) 区域名称 上级区域编号 区域等级
-----------------------------------------------------------
已经收录的记录一共只有2762条。编译运行时,每次要等待1分钟左右的时间才能显示主窗体,显然不能满足设计要求。特请教各位高手,为什么程序运行的时间会这么长,有没有更好的实现方式?代码如下,请指教!
------------------------------------------------------------
procedure TForm1.FormCreate(Sender: TObject);
var
ParentNode:TTreeNode;
NextNode:TTreeNode;
begin
tree_gys.Items.Clear; //清除供应商树形图
ParentNode:=tree_gys.Items.Add(nil,'全国'); //顶层节点
with Query_tree1 do
begin
Close;
Sql.Clear;
Sql.Add('select * from t_xtgl_xzqh');
Sql.Add('where qyjs=''1''');
Sql.Add('order by qybh');
Open;
while not eof do
begin
NextNode:=tree_gys.Items.AddChild(ParentNode,fieldbyname('qymc').AsString);//第一层节点
with Query_tree2 do
begin
Close;
Sql.Clear;
Sql.Add('select * from t_xtgl_xzqh');
Sql.Add('where sjqybh='+quotedstr(Query_tree1.Fieldbyname('qybh').AsString));
Sql.Add('and qyjs=''2''');
Open;
if recordcount>=1 then
while not eof do
begin
NextNode:=tree_gys.Items.AddChild(NextNode,fieldbyname('qymc').AsString);//第二层节点
with Query_tree3 do
begin
Close;
Sql.Clear;
Sql.Add('select * from t_xtgl_xzqh');
Sql.Add('where sjqybh='+quotedstr(Query_tree2.Fieldbyname('qybh').AsString));
Open;
if recordcount>=1 then
while not eof do
begin
tree_gys.Items.AddChild(NextNode,fieldbyname('qymc').AsString);//第二层节点
next;
end;
NextNode:=NextNode.Parent;
end;
next;
end;
end;
next;
end;
end;
end;
---------------------------------------------------------------------
-----------------------------------------------------------
qybh qymc sjqybh qyjs
区域编号(PK) 区域名称 上级区域编号 区域等级
-----------------------------------------------------------
已经收录的记录一共只有2762条。编译运行时,每次要等待1分钟左右的时间才能显示主窗体,显然不能满足设计要求。特请教各位高手,为什么程序运行的时间会这么长,有没有更好的实现方式?代码如下,请指教!
------------------------------------------------------------
procedure TForm1.FormCreate(Sender: TObject);
var
ParentNode:TTreeNode;
NextNode:TTreeNode;
begin
tree_gys.Items.Clear; //清除供应商树形图
ParentNode:=tree_gys.Items.Add(nil,'全国'); //顶层节点
with Query_tree1 do
begin
Close;
Sql.Clear;
Sql.Add('select * from t_xtgl_xzqh');
Sql.Add('where qyjs=''1''');
Sql.Add('order by qybh');
Open;
while not eof do
begin
NextNode:=tree_gys.Items.AddChild(ParentNode,fieldbyname('qymc').AsString);//第一层节点
with Query_tree2 do
begin
Close;
Sql.Clear;
Sql.Add('select * from t_xtgl_xzqh');
Sql.Add('where sjqybh='+quotedstr(Query_tree1.Fieldbyname('qybh').AsString));
Sql.Add('and qyjs=''2''');
Open;
if recordcount>=1 then
while not eof do
begin
NextNode:=tree_gys.Items.AddChild(NextNode,fieldbyname('qymc').AsString);//第二层节点
with Query_tree3 do
begin
Close;
Sql.Clear;
Sql.Add('select * from t_xtgl_xzqh');
Sql.Add('where sjqybh='+quotedstr(Query_tree2.Fieldbyname('qybh').AsString));
Open;
if recordcount>=1 then
while not eof do
begin
tree_gys.Items.AddChild(NextNode,fieldbyname('qymc').AsString);//第二层节点
next;
end;
NextNode:=NextNode.Parent;
end;
next;
end;
end;
next;
end;
end;
end;
---------------------------------------------------------------------
能给出例子吗?