标题:[求助]向各位高手请教个问题 “分级管理模式”
只看楼主
tddht
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2004-7-7
 问题点数:0 回复次数:1 
[求助]向各位高手请教个问题 “分级管理模式”

小弟才学delphi,看到个“分级管理模式”这个东西,没弄清楚怎么回事,特来求教,谢谢!

请帮我解释一下编码和等级的关系还有编码和数据库中的等级是怎么通过编码联系在一起的,谢谢!!!

我看到的题目是这样的:

DELPHI编程测试题目!

create table tbda_bm --部门档案 ( F_bmbm Varchar(15) not null, --部门编码 F_bmmc Varchar(60) not null, --部门名称 F_jymj Float not null, --经营面积 F_ygrs Int not null, --员工人数 F_lxdz Varchar(60) not null, --联系地址 f_yzbm varchar(10) not null, --邮政编码 F_lxdh Varchar(30) not null, --联系电话 F_cz Varchar(30) not null, --传真 F_ip Varchar(30) not null, --IP地址 F_wz Varchar(30) not null, --网址 F_email Varchar(30) not null, --E-MAIL F_fzr Varchar(10) not null --负责人 default '', f_bz varchar(60) not null, --备注 f_jdrq varchar(8) not null, --建档日期 f_jb int not null, --级别(1,2,3,4) f_mj int not null, --末级(0否1是) Constraint tbda_bm_key Primary Key(f_bmbm) )

部门档案采用分级管理模式,用户可通过分级方式维护和管理部门。 程序在处理分级时原则如下:每一个级别的长度由用户维护部门档案时确定,即第一次录入此级别的部门时确定, 如果此部门编码是一个新的级别(表中没有该级别的部门编码),部门编码的长度可任意确定,确认后则认为这 个级别的编码长度就为此部门编码的长度,以后再有增加相同级别的编码时编码长度也必须是这个长度;编码的 子级编码的前几位(父级编码长度)必须同父级编码;编码的总长度为15位,即各级的编码长度相加应小于等于15。 部门的分级涉及到部门档案的正确性,所以在程序设计时必须考虑到在多用户环境下的部门档案维护,务必保证 部门档案的正确,这关系到整个系统数据的正确性和一致性。 输入数据后的档案编码如下: 01 01001 01001001 01001002 01002 01002001 01002001

搜索更多相关主题的帖子: 数据库 null 模式 not 
2004-07-07 12:12
lion_81
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2004-6-7
得分:0 

采用递归方法建树

Type PCustomRecord=^TCustomRecord; TCustomRecord=Record Caption:String; //标题 Name:String; // 名称 Id:String; //当前编码  Pid:String;//父级编码 Data:Pointer; end;

Function AddChildTreeNode(Root:TTreeNodes;ParentNode:TTreeNode;Data:Array of Variant):TTreeNode; var DataPoint:PCustomRecord; begin new(DataPoint); DataPoint^.Caption:=data[0]; DataPoint^.Name:=data[1]; Result:=Root.AddChildObject(ParentNode,datapoint^.Name,DataPoint) end;

'select f_bmbm,f_bmmc from tbda_bm where f_bmbm like :pbmbm and f_jb=:level';

Procedure AddLevelTree(QryTree:TAdoQuery;SqlStr:String;Root:TTreeNodes;TreeNode:TTreenode); Var I:Integer; begin With QryTree Do Begin Close; Sql.text:=Format(sqlStr,[PCustomRecord(TreeNode.Data)^.id+'%',TreeNode.level]); Open; While Not Eof Do Begin AddChildTreeNode(Root,TreeNode,[Fields[0].AsString,Fields[1].AsString]); Next; End; For I:=0 to TreeNode.Count-1 Do AddLevelTree(QryTree,Sqlstr,Root,TreeNode.Item[i],isall); End; end;

以上为显示树的代码,稍作修改即可。

[此贴子已经被作者于2004-07-29 08:33:18编辑过]

2004-07-29 08:31



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-3202-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.097824 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved