具有检错和纠错功能的编码是 机构设置及编码功能的实现(五)[2]
![具有检错和纠错功能的编码是 机构设置及编码功能的实现(五)[2]](http://img.zhputi.com/uploads/1d6c/1d6c6cae3cd567876c9a93ceb6fa3b5437603.jpg)
机构设置及编码功能的实现(五)[2]
——此文章摘自《Delphi 数据库开发经典案例解析》定价 ¥ 特价 ¥ 购买>>//track linktech cn/?m_id=dangdang&a_id=A &l= &l_type = width= height= border= nosave>// //某一个节点的编号实际上是由它自己的类别号 也就是它在本级中的INDEX //前面加上父节点的编号组成 而父节点的编号也可以用这种方法依次推出 while pnode Parent<>nil do begin sp:=inttostr(pnode Parent Index); if length(sp)= then sp:= +sp else sp:=sp; s:=sp+s; pnode:=pnode Parent; //节点的编号等于类别号前面加上它的父节点编号 也等于加上它的所有父节点的类别号 //这里的加是指字符串加 //取父节点的类别号 并一直追溯到最顶层的主节点 从而构成一个节点的完整编号 end; code:=copy(s length(s)); //由于首项的编号为 程序中将它转为了 因此需要去掉一个零 temp:=length(code) ; temp:=round(temp/ ); itemlevel:=inttostr(temp); //根据编号的长度来计算它的所属级别 也就是它的itemlevel adomand CommandText:= insert into 组织机构编码表([内部编号] [类别] [AbsIndex] [ItemIndex] [ItemLevel] [ParentIndex] [类别号] [单位编号] [单位名称]) values( +number+ +name + +absindex+ +itemindex+ +itemlevel+ +parentindex+ +order+ +code+ +name+ ) ; adomand Execute; //向表中插入新记录 end; adomand CommandText:= set IDENTITY_insert 组织机构编码表 off ; adomand Execute; //关掉组织机构编码表的插入许可 adomand Commandtext:= drop table zztemp ; adomand Execute; //删除临时表 MessageBox( 对机构所作的修改已经保存成功! 成功 MB_OK); //刷新树形图的显示 treeview Items Clear; adoquery Active:=false; adoquery Active:=true; button Click; end;
这样就把程序中对树形图所做的修改 保存到了SQL Server中的【组织机构编码表】数据表中 下一次再打开程序的时候 看到的就是已修改过的数据表中读出的新的树形图了
至此 我们就完成了结构设置编码功能的设置 需要说明的是 我们在程序中利用了数据表的存储顺序的优点 数据表中数据按照节点中绝对顺序 也就是AbsoluteIndex存储的特性为我们对数据库进行操作 把树形图的关系数据保存到【组织机构编码表】数据表 以及在代码中确定数据的一些参数 提供了很大的方便 我们根据树型图中节点所提供的数据 就完全确定了相对应的【组织机构编码表】数据表中的全部数据 而没有再依赖其他的输入或者是保存结果 可以看到 一个好的存储格式可以为程序设计提供很大的方便 很多时候甚至可以起到事半功倍的效果
lishixinzhi/Article/program/Delphi/201311/24891