視窗(window) 與資料視窗(datawindw) 很容易讓初接觸POWERBUILDER的人搞混.但
視窗與
資料視窗指的是完全不同的東西.
下圖為視窗的一個範例,視窗本身並無直接操作資料庫的設計,資料庫都是透過內含的資料視窗物件在操作,視窗頂多是放針對資料視窗執行新增修改刪除存檔的按鈕,這些編輯動作都是對資料視窗的緩衝區在做資料新增與挪移,與資料庫是不正面接觸的.實際與資料庫溝通資料運作的細節是包在資料視窗內部之中.
資料視窗datawindow是多項輸入物件一起封裝而成的
介面 view 物件,每個資料輸入區物件幾乎都與Table的欄位相關聯,且可以說是與視窗無關的獨立操作版面物件.系統透過資料視窗來與資料庫做溝通與運作.
下圖為資料視窗編輯的操作畫面範例
下圖為上圖按的功能表Design-->data source,或直接按圖紐data source所出現的該資料視窗datawindow SQL編輯畫面
雖然視窗window也會放一些單列輸入,多列輸入區等物件,但這些輸入區在powerbuilder開發過程幾乎與資料庫的Table無什關聯.
很多系統都是視窗含散裝的介面供操作者運作.散裝的介面包含單列輸入區,文字提示,多列輸入區,點選區,勾選區等,每個輸入區與資料庫欄位變數結合,以人工透過書寫函數的方式再將變數群轉換成與資料庫溝通的SQL子句,最後對資料庫存檔.
這樣的做法會使這些單列輸入區,文字提示,多列輸入區,點選區,勾選區等物件與特定視窗綁在一起,如果操作主題是 [產品單品維護],此窗大概就只能維護產品單品,當在其他視窗也想看到 [產品單品]的資料,甚至看到單品也希望同 [單品維護窗]一樣立即維護該單品,就只能透過傳品號給該 [單品維護窗]去開啟該窗,若要以單一視窗同時處理 [單品維護],就又必須針對該新的窗複製設計一個 [單品維護區],因為麻煩,所以一般就會一直以開窗的方式處理之.但開窗也是需要寫程式碼的,訂單窗,報價窗,與單品有關的窗就都需要寫程式碼讓操作者點選以開啟 [單品維護窗].
powerbuilder把 [單品維護] 用到的單列輸入區,文字提示,多列輸入區,點選區,勾選區等物件都一起封裝在所謂 [資料視窗]物件中.並且自動依新增修改刪除等轉換對應的SQL子句,因為地位與單列輸入區一樣是 [物件] 等級,就不用被視窗綁在一起,可以物件的角色,到處放置在不同的視窗中,所以訂單窗,報價窗要有單品維護,只需將 [封裝好的產品資料視窗]置入該窗,就可以不用再去丟一大堆重複的單列輸入區,文字提示,多列輸入區,點選區,勾選區等物件,與這些細微物件衍生的程式碼.
至於相同資料視窗被置入到不同視窗本體後,該資料視窗相對於視窗應有的動作,則是透過本系統設計的MIS設定窗來規範,此窗用以交代資料視窗的所有擴充屬性並加以封裝起來,看起來像資料視窗的隨身用品一樣,走到哪就跟到哪,所以只需對視窗註冊要用到的資料視窗,系統就會自動將該資料視窗的所有衍生特性與應有行為屬性,連同資料視窗本身物件一起帶過去.