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