`
zjut_xiongfeng
  • 浏览: 280140 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

在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) //缺省打开此项目

在PB中快速实现数据库树形结构[图]图片1

 

图1

图1是运行此段程序后形成的树形结构,该程序在Windows 98、PowerBuilder 6.5下运行通过。

分享到:
评论

相关推荐

    pb开发的的outlook树形

    1. **自定义控件**:PB允许开发者创建自己的控件,通过编写代码实现树形结构的动态加载和交互功能。这通常涉及对控件事件的响应,如点击节点、展开/折叠节点等。 2. **使用标准控件**:PB自带的Tree control可能被...

    PB数据库课程设计

    通过拖放和定制,开发者可以快速创建各种数据展示样式,如表格、图表、树形结构等。数据窗口的灵活性使得它可以适应不同的数据库结构和查询需求。 在课程设计中,学生可能需要完成以下任务: 1. **需求分析**:确定...

    pb动态生成树

    在PowerBuilder中,可以通过编码法来快速实现数据库树形结构。编码法的核心思想是通过特定的编码规则来表示数据的层次关系,从而简化树形结构的构建过程。这种方法可以适应任意复杂的层级数据,并且当树的内容发生...

    pb9 datawindow treeview 树型结构

    在PowerBuilder 9 (PB9) 中,DataWindow控件是一个强大的数据展示工具,它可以用于显示和操作数据库中的数据。在本案例中,我们将探讨如何使用DataWindow来实现一个treeview,即树型结构,这对于组织层次化数据非常...

    pb9树型datawindow

    对于层级数据,需要指定父键和子键字段,以便DataWindow能正确地构建树形结构。最后,可以通过调整列宽、设置展开级别等属性来自定义显示效果。 在使用PB9树型DataWindow时,有几个关键点需要注意。一是交互性,...

    PB菜单生成树,以及树的查询,修改,删除

    在软件开发中,树形结构常用于表示层次关系,如文件系统、组织结构或这里提到的菜单系统。下面将详细介绍如何在PowerBuilder中实现这个过程,以及相关的查询、修改和删除操作。 **一、PowerBuilder简介** Power...

    PowerBuilder 数据窗口生成树

    在本案例中,我们将探讨如何利用数据窗口生成树形结构,这是一种高效的数据组织和展示方式,特别适用于层次化信息的呈现。 首先,让我们深入理解两种生成树形结构的方法: 1. **数据窗口的列作为Tree的一级**:...

    PB11.5解析XML实例

    DOM解析器将整个XML文档加载到内存中,形成一个树形结构,使得开发者可以方便地访问任何部分的数据。使用DOM解析XML,你可以通过节点遍历轻松地查找、修改或删除数据。然而,由于DOM需要一次性加载整个文档,对于...

    用纯pb实现资源管理器

    2. **数据绑定**:将文件系统目录结构与TreeCtrl控件绑定,通过遍历文件系统获取目录信息并显示在树形结构中。同时,文件信息需要与ListCtrl控件绑定,实时更新文件列表。 3. **文件操作API调用**:由于Power...

    PB中TREEVIEW控件的使用技巧

    1. **控件介绍**:TreeView控件由节点(TreeNode)组成,每个节点可以有子节点,形成一个树形结构。用户可以通过展开和折叠节点来查看或隐藏子节点。 2. **添加节点**:你可以通过编程方式动态添加或预先定义在设计...

    PB解析XML字符串 把XML 变为数据窗口

    2. 遍历DOM树:解析后的DOM对象形成了一棵树形结构,可以通过`GetFirstChild`、`GetNextSibling`等函数遍历其节点,找出需要的数据。 3. 创建数据窗口对象:根据XML结构,创建对应的数据窗口对象。可以手动设计数据...

    简单实现仿Outlook界面PB程序

    2. 事件处理:每个控件都有自己的事件,比如Tree control的NodeClick事件,当用户点击树形结构的某个节点时,程序应响应并更新邮件列表或切换到相应视图。 3. 数据绑定:DataWindow控件需要与数据库进行交互。使用...

    PB解析json,解析JSON案例,解析jsondemo

    “PB解析json,可解析树立菜单”说明PB不仅能够解析基本的JSON对象,还能够处理嵌套结构,例如包含层次关系的数据,这在构建如树形菜单等复杂用户界面时非常有用。“也完美可解析后将结果存到数据源”则强调了PB在...

    pb9 tree+外部数据源dw例子

    这可以通过编程的方式完成,例如在Load事件中解析Data Window的结果集,并根据数据生成相应的树形结构。 此外,为了使用户能够交互地操作Tree控件,我们需要处理用户的点击事件,这通常通过Tree控件的Click事件来...

    uof.rar_PB数据窗口树_PowerBuilder_UOF_powerbuilder tree

    在PB中,数据窗口是一种用于显示和操作数据库数据的组件,而“数据窗口树”则是数据窗口的一种特殊形式,呈现为树形结构,便于用户以层次结构查看和操作数据。 描述中提到,“PB 8 用户对象 按钮 数据窗口 树视图等...

    权限分配原码-pb9.0

    在树形结构中,每个节点都可以有子节点,以此类推,形成一个层级。这使得权限分配可以按照组织架构或者资源的层级进行,例如,父节点的权限会继承给其所有子节点,同时也可以为每个节点单独设定权限。这种结构在大型...

    pb9操作xml

    - PB9也支持DOM(Document Object Model)模型,这是一种树形结构,允许程序通过节点操作XML。 3. **读取XML**: - 使用XMLTextReader类:创建XMLTextReader对象,通过Open方法打开XML文件,然后使用Read方法逐个...

    pb9开发的outlook框架界面

    3. **控件库**:PB9内建了大量的控件,如按钮、列表框、树形视图等,这些控件可以用来构建面板的功能区域,如邮件列表、约会日历等。 4. **事件驱动编程**:PB9采用事件驱动编程模型,用户操作(如点击按钮)会触发...

    pb导入xml代码20020101

    DOM解析器将整个XML文件加载到内存中,形成一个可遍历的树形结构;SAX解析器则采用事件驱动的方式,逐行读取XML,更适合处理大文件。 2. **XMLSchema和DTD**:XMLSchema或DTD(Document Type Definition)用于定义...

    仿outlook+换肤+类XP我的电脑窗口-PB9

    类XP的“我的电脑”窗口则暗示了应用程序采用了Windows XP时代的文件管理器风格,包括树形目录结构、缩略图视图、文件操作等。开发者可能使用了PB9的窗口和控件来重现这些元素,以便用户能够方便地浏览和管理文件。 ...

Global site tag (gtag.js) - Google Analytics