懂数据库来的接分!!!

dropme 2004-01-17 05:25:33


==============================
有1个TreeView,和这样一个表

表 名称 所属
节点1 根结点1
节点2 节点1
节点3 节点2
节点4 节点1
节点5 根节点2

根结点1和2是TreeView固有的2个节点,我想让程序运行时从表中读出数据,先读“所属”为“根结点”的所有数据,添加到TreeView的根节点下,再读“所属”为“刚才添加的节点”的所有数据,生成TreeView的Item,添加到“刚才添加的节点”下。
我觉得好像就是用递归,不过我是菜菜,不会写,求源码!
只知道TreeView某一节点的名称,想给他添加SubItem,怎么做呢?

我用的是ADO+Access,请高手们帮忙推荐点例程呀,贴子什么的,多谢多谢!

见源码就结贴,快抢啊! 新年快乐!
===================================
...全文
73 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
getter 2004-01-20
  • 打赏
  • 举报
回复
粗LOU地說是自我調用
chenfeng3000 2004-01-20
  • 打赏
  • 举报
回复
我就是理解不好递归方法,
lywho 2004-01-20
  • 打赏
  • 举报
回复
to zzllabc(龙)
你的代码好像缺了两句
QUERY1.CLOSE;
QUERY2.CLOSE;

这两句可在函数结束时填也可在窗体结束时填,不然会有麻烦的。
TO wlmy2004(wl)
这句话的意思是在query控件中添加sql语句,这个语句是说 从SYSGROUP表和SYSUSER 中查询两个
字段分别是sysgroup的grpname字段和sysuser的name字段,条件是sysgroup的grpid等于sysuser的grpid字段.

wlmy2004 2004-01-20
  • 打赏
  • 举报
回复
sql.Add('SELECT A.GRPNAME,B.NAME FROM SYSGROUP A,SYSUSER B WHERE A.GRPID = B.GRPID');
请问这一句怎么解释
dropme 2004-01-20
  • 打赏
  • 举报
回复
我也是,理解不了!
还有高手补充没有啊?没有我就散分了!
siwuge 2004-01-19
  • 打赏
  • 举报
回复
up
wlmy2004 2004-01-19
  • 打赏
  • 举报
回复
用递归怎么写,请把注释写清楚一点嘛.
荣爵 2004-01-19
  • 打赏
  • 举报
回复
用递归
dropme 2004-01-19
  • 打赏
  • 举报
回复
好的,我是一下!
抱朴守拙 2004-01-18
  • 打赏
  • 举报
回复
如果你的第一层节点是固定的,就把查询第一层节点的代码改掉。
抱朴守拙 2004-01-18
  • 打赏
  • 举报
回复
procedure TFrm_KernelPurView.Button1Click(Sender: TObject);
var
node : TTreeNode;
i : integer;
s : string;
begin
with query1 do
begin
close;
sql.Clear;
sql.Add('SELECT GRPID,GRPNAME FROM SYSGROUP');
open; //查询第一层节点
end;
s := query1.fieldbyname('grpname').AsString; //第一层节点显示的文本
treeview1.Items.Clear; //清空全部节点
for i := 0 to query1.RecordCount - 1 do
begin
Node := treeview1.Items.Add(nil,s); //添加第一层节点
with query2 do
begin
close;
sql.Clear;
sql.Add('SELECT A.GRPNAME,B.NAME FROM SYSGROUP A,SYSUSER B WHERE A.GRPID = B.GRPID');
open; //根据地一层节点查询此节点下的第二层节点
end;
for i := 0 to query2.RecordCount -1 do
begin
treeview1.Items.AddChild(node,query2.fieldbyname('name').AsString);
//添加第二层节点
next;
end;
next;
end;

end;
dropme 2004-01-18
  • 打赏
  • 举报
回复
晕死,没人回答的吗????
dropme 2004-01-17
  • 打赏
  • 举报
回复
老兄,也注释一下啊!!!!!!
抱朴守拙 2004-01-17
  • 打赏
  • 举报
回复
procedure TFrm_KernelPurView.Button1Click(Sender: TObject);
var
node : TTreeNode;
i : integer;
s : string;
begin
inherited;
with query1 do
begin
close;
sql.Clear;
sql.Add('SELECT GRPID,GRPNAME FROM SYSGROUP');
open;
end;
s := query1.fieldbyname('grpname').AsString;
treeview1.Items.Clear;
for i := 0 to query1.RecordCount - 1 do
begin
Node := treeview1.Items.Add(nil,s);
with query2 do
begin
close;
sql.Clear;
sql.Add('SELECT A.GRPNAME,B.NAME FROM SYSGROUP A,SYSUSER B WHERE A.GRPID = B.GRPID');
open;
end;
for i := 0 to query2.RecordCount -1 do
begin
treeview1.Items.AddChild(node,query2.fieldbyname('name').AsString);
next;
end;
next;
end;

end;
抱朴守拙 2004-01-17
  • 打赏
  • 举报
回复
先找到那个节点ANode

TreeView1.AddChild(ANode,'字节点');

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧