我的表结构是:
p_id p_parent P_name
0 0 中药
1 1 西药
3 0 动物类
4 0 植物类
5 1 片剂
6 1 水剂
其中:P_id 就是节点号;P_paren就是P_id的父节点号;P_name就是节点名称.
我要实现的功能是我在数据库的表里去出数据,然后生成树。主要就是算法的实现
。不管我在数据库表里面怎么加节点,都能相应地把节点放到响应的父节点之下.
如:
中药
-动物类
-植物类
西药
-水剂
-片剂
如果现在我在数据库表里面增加一个节点
p_id p_parent P_name
0 0 中药
1 1 西药
3 0 动物类
4 0 植物类
5 1 片剂
6 1 水剂
7 3 动物类子类
那么树就是这样显示:
中药
-动物类
-动物类子类
-植物类
西药
-水剂
-片剂
这样的算法该怎么写??
p_id p_parent P_name
0 0 中药
1 1 西药
3 0 动物类
4 0 植物类
5 1 片剂
6 1 水剂
其中:P_id 就是节点号;P_paren就是P_id的父节点号;P_name就是节点名称.
我要实现的功能是我在数据库的表里去出数据,然后生成树。主要就是算法的实现
。不管我在数据库表里面怎么加节点,都能相应地把节点放到响应的父节点之下.
如:
中药
-动物类
-植物类
西药
-水剂
-片剂
如果现在我在数据库表里面增加一个节点
p_id p_parent P_name
0 0 中药
1 1 西药
3 0 动物类
4 0 植物类
5 1 片剂
6 1 水剂
7 3 动物类子类
那么树就是这样显示:
中药
-动物类
-动物类子类
-植物类
西药
-水剂
-片剂
这样的算法该怎么写??
解决方案 »
- 从数据库中取出来内容转成Stream后,不生成xml文件直接放到ADOQuery
- 小虾请教一下,控件使用的问题!
- 如果POST数据到一个ASP页面进行登陆,再让IE打开时是已经登陆的状态?
- 如何获得当前的文件名?
- 如何在AdvStringGrid中为每个单元格内的字体定制颜色
- 我有EXE加密(PE加密保护)源代码(Delphi)出售.
- 急啊!!!!!!!!!!!!!!!!!!!!!!!!11
- (︶︿︶) 300分 求一份设计文档! (︶︿︶)
- 如何选择文本字段的最大值?
- delphi对excel表格的调用问题
- 一个菜单控制的问题(在线等待!问题解决马上结分。急......)
- 请教各位大虾,delphi7和delphi5相比有那些新特性,我想从5转到7!
DBTreeList
DevExpress 产品很好用的下载地址
http://www.delphijs.net/list.asp?id=2769例子,告诉我地址,我给你发过去;当然你也可以在我的站点上下载
http://qixin000.vicp.net/down/demos.rar
能帮我写出这个算法吗?
http://www.csdn.net/develop/Read_Article.asp?Id=18824
p_id p_parent P_name
0 0 中药
1 1 西药
3 0 动物类
4 0 植物类
5 1 片剂
6 1 水剂
7 3 动物类子类SQL:
SELECT ShangJiMC=b.p_name As ShangJiMC,a.p_name As HeSuanMC
FROM Dict_CheckItem a,Dict_CheckItem b
where a.p_parent*=b.p_id
ORDER BY a.p_parent//添加项目树
function TCheckItemForm.LoadItemTree: string;
var
vNodeText: string;
vNode: TTreeNode;
function FindTreeNode(aNodeText: string; aHeSuanJB: Integer): TTreeNode;
var
i: Integer;
begin
for i := 0 to tv.Items.Count - 1 do
if (aNodeText = tv.Items.item[i].Text) and (tv.Items.item[i].Level =
aHeSuanJB - 1) then
Result := tv.Items.item[i];
end;
begin
// tv.visible :=false;
//初始化
tv.OnChange := nil;
tv.Items.Clear;
//初始化提取语句
with qryItem do
begin
Close;
Open;
end;
//根目录
tv.Items.Add(nil, '医院核算结构图');
with qryItem do
begin
//打开核算表
Close;
Open;
First;
while not Eof do
begin
if FieldByName('ShangJiMC').isnull then
vNode := FindTreeNode('医院核算结构图', 1)
else
vNode := FindTreeNode(FieldByName('ShangJiMC').AsString,
FieldByName('HeSuanJB').AsInteger);
tv.Items.AddChild(vNode, FieldByName('HeSuanMC').AsString);
Next;
end;
end;
//tv.visible :=true;
tv.OnChange := tvchange;
end;看楼主也是做药品管理的!你很幸运,我做了两年的HIS,不过现在已经不做了!
SELECT b.p_name As ShangJiMC,a.p_name As HeSuanMC
FROM Dict_CheckItem a,Dict_CheckItem b
where a.p_parent*=b.p_id
ORDER BY a.p_parent