网站大量收购闲置独家精品文档,联系QQ:2885784924

在PB中快速实现数据库树形结构.docx

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
在PB中快速实现数据库树形结构 树形结构在Windows环境中被普遍应用,它以简捷的界面深受用户喜爱。但在数据库开发中面对层次多、结构复杂的数据,如何快速地构造树形目录呢? 实现关键技术 在PowerBuilder所提供的控件中包含了Treeview控件,但树的具体形成还需用户编写脚本实现,即它的列表项要在程序中动态添加,而这些列表数据通常由用户已录入在数据库中,并作为数据库维护的一项内容。 为了能快速实现数据库的树形结构,我们可以采用编码法,即利用编码表来实现。 编码表的基本字段包括编码和编码名称,其编码规则是以数字、字母的位数来区分不同层次,同一层编码位数相同,层次按位数递增,程序通过判断编码位数来决定所在层数。 例如:第一层为10~99两位,第二层为1010~1099四位,用户需要做的是先要设计树的结构和对应编码,并把相应名称进行录入,然后程序在读取这些数据时形成树。 编码法的优点是可以适应任何复杂的层次数据,实现方法简单,且树内容有变动时,无需更改程序代码。 范例程序与主要代码分析 我们以建立一个城市名称的树形结构为例,来说明编码法的应用。 首先建立编码表:city_tab(行政编码、行政名称),其对应的数据窗口是dw_tree(处于隐藏状态),对应树控件为tv_1。 接着在录入界面下输入各城市名称、区域名称及对应编码,最后在窗口的OPEN事件上输入以下代码: long tvi_root,tvi_next,tvi_next1,tvi_next2,tvi_root1,currenthandle,currentnext int i,j,z,k string city_bm,city_name treeviewitem tvi //定义一个树形数据类型的变量 tv_1.setredraw(false) dw_tree.settransobject(trooptrans) //连接数据库 dw_tree.retrieve() i=dw_tree.rowcount() j=1 //定义树形变量的属性,设置根目录的标签,若在编码表中有此根目录,则不用在此生成 tvi.label=城市 //生成根目录 // 目录未打开时的图片索引,此图片可在树形控件中设定 tvi.pictureindex=1 //目录打开时的图片索引 tvi.selectedpictureindex=3 tvi_root=tv_1.insertitemlast(0,tvi) do while j=i //从隐含的编码数据窗口检索数据,第一行开始取区域内码,因为编码表按编码序排,所以可自动按序建层次 city_bm=dw_tree.getitemstring(j,city_bm) city_name=dw_tree.getitemstring(j,city_name) //取区域名称 k=len(city_bm) z=int(k)//取内码的位数 choose case z case 2 tvi.label=city_name //把编码值赋给tvi tvi.data=city_bm tvi.pictureindex=2 tvi.selectedpictureindex=3 //以根项目为父项目,插入第二层项目,以后凡是检索到位数是二的,均在此生成二层目录 tvi_root1=tv_1.insertitemlast(tvi_root,tvi) case 4 //以后凡是检索到位数是四位,均生成第三层目录 tvi.label=city_name tvi.data=city_bm tvi.pictureindex=2 tvi.selectedpictureindex=3 tvi_next=tv_1.insertitemlast(tvi_root1,tvi) end choose j=j+1 loop tv_1.setredraw(true) currenthandle=tv_1.finditem(roottreeitem!,0) //查找根目录下的第一项目 tv_1.expanditem(currenthandle) //缺省打开此项目 图1 图1是运行此段程序后形成的树形结构,该程序在Windows 98、PowerBuilder 6.5下运行通过

文档评论(0)

185****7617 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档