在實際開發應用程序中常常會碰到數據行增加插入刪除要求保持數據行的某一字段值的連續性如在職工表中希望按職務高低賦予不同的連續的值以便按職務高低進行顯示在制定工作任務或計劃時能體現 … 連續的子項目在此將此類要求連續的值稱為序號則要求程序能實現以下功能
)增加(追加)數據行時能根據當前數據的總行數(n)追加新序號為(n+)
)插入數據行時能根據當前所在行的序號(r)將序號大於和等於(r)的值都加上即序號(r)被賦予給新 插入的數據行而原來序號rr+…n的數據行序號變為r+r+…n+
)刪除數據行時能根據當前所在行的序號(r)將序號大於和等於(r)的值都減去即原來序號rr+ …n的數據行序號變為rr…n
對於程序員來說實現上述三個功能邏輯上來說比較簡單但對於具體開發語言實現起來卻有一定的難度特別是當序號是關鍵字組成之一時更是較為困難本人曾用Delphi開發一訂貨程序為實現訂貨明細錄入具有以上功能竟然為此編制了三個後台存儲過程才得與實現雖可在前台實現但數據行大於幾十行時速度其慢無比而當時一個訂貨明細數據行一般在千條以上
而在Powerbuilder在保證較好的響應速度可直接在前台實現上述功能簡直是小菜一碟這主要是Powerbuilder與Delphi對數據控制的機制不同而造成的
下面就在Powerbuilder中實現上述功能的方法舉例予以說明
創建一個employee表如下
create table employee(
serial number //序號
name varchar() //姓名
duty varchar() //職務
primary key(serial) //設置字段serial為主鍵
)
假設表中將插入如下數據要求按職位高低進行顯示在此例中序號即表示了職務的高低
序號 姓名 職務
board chairman 董事長
general manager 總經理
manager 經理
創建一個性新的庫稱作autoserialpbl以及一個應用程序對象稱作a_autoserial
使用DataWindow畫板創建一個數據窗口對象dw_employee
Data Source選擇Quick Select或SQL Select
Presentation Style選擇Grid
Table 選擇剛創建的employee
Selection List 選擇serialnameduty (注意serial字段在Selection List中的位置)
使用Window畫板創建一個窗口w_autoserial並在窗體中放入以下控件
控件名 屬性 值
DataWindows Control Name dw_
DataWindows Object Name dw_employee
HScrollBar TRUE
VScrollBar TRUE
Command Button Name cb_insert
Text 插入
Command Button Name cb_add
Text 增加
Command Button Name cb_delete
Text 刪除
Command Button Name cb_save
Text 保存
[] []
From:http://tw.wingwit.com/Article/program/PB/201311/24614.html