国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

在PB中快速實現數據庫樹形結構

2024-07-21 02:10:19
字體:
來源:轉載
供稿:網友
  • 本文來源于網頁設計愛好者web開發社區http://www.html.org.cn收集整理,歡迎訪問。
  • 在pb中快速實現數據庫樹形結構
    (作者:阮曉華 2001年04月03日 17:23)

      樹形結構在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下運行通過
    發表評論 共有條評論
    用戶名: 密碼:
    驗證碼: 匿名發表
    主站蜘蛛池模板: 南宫市| 博爱县| 庆元县| 黄骅市| 瓦房店市| 文成县| 忻城县| 德格县| 石门县| 宣武区| 论坛| 枞阳县| 芜湖市| 垦利县| 兖州市| 寻乌县| 青田县| 马公市| 仁怀市| 合山市| 耒阳市| 赣州市| 错那县| 铜川市| 娱乐| 塔城市| 福建省| 八宿县| 张家川| 延川县| 长阳| 若尔盖县| 酒泉市| 渭南市| 新河县| 修文县| 阿克苏市| 博爱县| 忻城县| 登封市| 东阿县|