摘 要: PowerBuilder作為一種優秀的數據庫應用開發工具,與其他數據庫應用開發工具相比較,最具特色的是它具有數據窗口對象技術。數據窗口對象是PowerBuilder中的一種對象類型,是專門為了訪問后臺的數據庫服務的。在數據窗口對象中,可以定義數據的來源和數據的顯示風格,這樣在應用程序中就可以把精力完全放在程序的運行流程控制上。
關鍵詞: PowerBuilder 數據窗口 數據庫 應用技巧
數據窗口是用戶(User)和數據庫服務器(DataBase Server)之間的一個操作接口。通過這個接口,用戶可以進行數據維護、報表打印和制作統計圖形。數據窗口是一種智能型(Data Intelligent)的數據處理對象,它具有判斷輸入數據是否正確的能力。在建立一個新的數據窗口之前,必須先決定數據來源(Data Source)和顯示類型(Presentation Style)。而PowerBuilder的數據窗口繪圖器當中提供了5種數據來源和11種顯示類型。數據窗口對象是利用PowerBuilder所提供的數據窗口繪圖器所產生的對象。數據窗口控件(DataWindow Control)是窗口(Window)上面許多控件(Controls)中的一種,用來將數據窗口對象的數據顯示在窗口控件上。
在數據窗口控件中交換不同的數據窗口對象有兩種方式:設計(design)階段和運行(run time)階段。下面介紹下顯示數據中的一些操作技巧。
一、利用數據窗口實現基本數據顯示
以PowerBuilder本身所提供SQL Anywhere數據庫中的PowerSoft Demo DB數據庫為例,實現用數據窗口顯示基本數據。
步驟1.請先確認當前的PowerBuilder開發環境已連上SQLAnywhere的PowerSoft Demo DB數據庫。如果還沒有連上SQLAnywhere的PowerSoft Demo DB數據庫,可以利用圖形工具欄上的DBProfile的圖標,選擇PowerSoft DemoDB V 6項,按下OK按鈕就可以連上PowerSoft Demo DB數據庫。
步驟2.進入PowerBuilder應用程序后,打開應用程序繪圖器(Application Painter),選擇打開圖標,打開pbdw()目錄底下的pbdw.pbl文件后,選擇pbdw的應用程序對象。
步驟3.打開進入數據窗口繪圖器(DataWindow Painter)后,選擇New按鈕。
步驟4.選擇Quick Select作為 Data Source,Grid為Presentation Style。
步驟5.選擇table employee后,按照順序選擇dept_id,emp_id,emp_fname,emp_lname等字段,按照dept_id以Ascending方式排序,然后按下OK按鈕。
步驟6.選擇菜單中的“File/Save As”項,將數據窗口存成d_emplist,并且寫上“員工一覽表”當成注解。
步驟7.利用窗口繪圖器(Window Painter)打開w_basic窗口,在窗口上面放置一個數據窗口控件(DataWindow Control)后,命名為dw_emplist。并且將d_emplist的數據窗口對象(object)指定給dw_emplist的數據窗口控件。最后將Vscroll Bar選項打開。
步驟8.在窗口open event中寫上OPEN函數和數據讀取函數從數據庫中讀取數據。
步驟9.運行應用程序,選擇運行窗口w_basic。
步驟10.結果會顯示所有員工數據。
二、動態改變數據窗口對象
步驟1.利用數據窗口繪圖器,選擇Quick Select作為Data Source,FreeForm當成 Presentation Style。
步驟2.選擇table employee后,選擇Add All按鈕選取所有字段,按照emp_id排序后按下OK按鈕。
步驟3.適當地調整字段標題位置后,將數據窗口存成d_empdetail,寫上“員工詳細數據”當成注解。
步驟4.利用窗口繪圖器打開窗口w_change_dw,將d_emplist數據窗口對象指定給dw_1數據窗口控件,并選擇垂直滾動條(VScroll Bar)的功能。
步驟5.分別在“顯示多筆數據”與“顯示單筆數據”按鈕的clicked event中寫上顯示數據的程序代碼。
步驟6.運行應用程序后,選擇運行窗口w_change_dw。
步驟7.按下“顯示多筆數據”按鈕時,會顯示多筆員工數據。
步驟8.按下“顯示單筆數據”按鈕,會顯示單筆員工數據。
在數據窗口中顯示數據時,必須先聲明一個交易對象(Transaction Object),把適當的數據庫連接信息指定到交易對象的屬性(properties)后,再利用數據窗口所提供的settransobject()和retrieve()函數將數據從后端的數據庫中讀取到Client端的緩沖區(buffer)中,通過這種方式我們就可以在數據窗口上看到數據。
參考文獻:
[1]戴士弘.美國教育史[M].北京:人民教育出版社,1994.
[2]王志勇.用PowerBuilder開發小型數據庫.西安:西安電子科技大學出版社,2000.
[3]朱愛民.PowerBuilder編程實用技術與案例.北京:清華大學出版社,2002.
[4]崔巍.PowerBuilder數據庫開發入門.北京:清華大學出版社,2002.