我從 年的開始使用PowerBuilder 那時還沒有PFC 實際上 class library(類庫) 的概念那時還是壹個新名詞 我們不得不使用PowerBuilder本身來從頭開始創建每壹個對象 特別的是 DataWindow使RAD(快速應用開發)變得真正的高效起來 下面讓我們 從壹些簡單有用的例子開始吧
將Tabular DataWindow轉換為Grid DataWindow
也許這是壹個最有用的小竅門了 它可以將tabular DataWindow轉換為grid DataWindow 反之亦然 在PowerBuilder x版本裏 您可以右鍵單擊壹個對象來編輯源文件(edit source) 這比先前必須將教本導出再導入要簡單的多 要將壹個tabular DataWindow轉換為grid DataWindow 只需要在library painter中右鍵單擊DataWindow對象 在彈出菜單中選擇Edit Source 打開script editor 變量 processing 控制著DataWindow的顯示類型 將值改為 DataWindow會變成grid 改為 DataWindow就會變成tabular
將DataWindow數據源從Select語句改變為Stored Procedure(存儲過程)
這也是壹個非常有用的技巧 它涉及壹些基本的技術 首選 創建或者確定壹個合適的Stored Procedure 然後用這個Stored Procedure作數據源創建壹個新的DataWindow 在library painter裏 右鍵單擊這個DataWindow 在彈出菜單中選擇Edit Source 打開script editor 定位到以 Procedure 開頭的行
確保整行都被選中 將該行拷貝到剪貼板 然後找到您希望將數據源更改成存儲過程的DataWindow 同樣使用Edit Source打開script editor 定位到以 Retrueve 開頭的行
仍須選中整個行(它也許不止壹行) 現在將整個Retrieve語句替換為剪貼板中的Procedure語句 關閉script editor 您現在就擁有了壹個基於Stored Procedure的DataWindow
為什麽說這個技巧非常有用呢?這個技巧使您既可以保留DataWindow的設計又可以利用stored procedures 尤其是在您有許多基於SQL語句的DataWindow在數據庫不斷增長直到面臨性能問題的時候 這項技術不僅節省了開發人員的大量時間 還能夠保留原有的DataWindow界面 而用戶絲毫不會察覺
用stored procedure來更新DataWindow
當DataWindow的數據源變成stored procedure Datawindow的更新能力就丟失了 這讓很多開發人員不願用stored procedure作為DataWindow的數據源 很多年以來 我壹直避免使用stored procedure也是出於這個原因 無論如何 Stored Procedure Update 功能是奇妙的 首先 確定或者創建壹個用於更新 插入 刪除記錄的stored procedures 打開DataWindow對象 從菜單欄上選擇Rows > Stored Procedure Update
在Tab頁面上分別為insert delete update選擇選擇用於對應的存儲過程 PowerBuilder會逐行列出stored procedure的參數 您可以為每個參數配置對應的DataWindow Column
在stored procedure update配置完成後(可能需要保存並退出DataWindow Painter 然後重新打開) 選擇菜單 Rows>update properties 您會發現 Stored Procedure 如同壹個正常的表名壹樣出現在 Table to Update 下拉列表中
如果您希望更新多張表 stored procedure update是壹個很好的選擇 任何壹個利用過重置update標記等方法來完成多表更新的開發人員無疑會發現這種方法的非常的有價值
在Powerscript中從stored procedure接收數據
隨著stored procedures的頻繁使用 您肯定也希望能夠直接在Powerscript中直接通過stored procedures來獲取數據 典型的 在Powerscript中 我們使用datastore來完成這個任務 使用stored procedures的最終結果就是可以減少壹些DataWindow對象的存在 而且它允許更多的代碼復用 相同的procedure既可以在後端完成壹個 Get 的請求 也可以用於前端的數據展示 如需在Powerscript中利用stored procedure接收數據 請參照以下腳本
OpenUserObjectWithParm
許多年前我曾在PowerSoft擔任技術顧問 有壹次在參加PowerSoft咨詢會議的時候 無意中聽到壹個客戶希望能夠得到壹些有關使用OpenUserObjectWithParm函數的壹些建議 那個技術顧問從未聽說過這個函數 我永遠難忘那次會談 它使我確信OpenUserObjectWithParm這個函數在很大程度上被大家忽略了 其實這個函數非常的有用 它允許妳向壹個user object傳遞參數 告訴它在Window上的什麽位置來自行創建 它被存儲在userobjects數組中的位置(可在runtime進行操作 window control[]) 還有開發人員能夠想到的任何其它的參數 舉個簡單的例子 我們打開壹個DataWindow 並允許用戶從壹個calendar對象中選擇日期
下面這行代碼位於Window的Open事件中 它將創建壹個類型為uo_drop_down_calendar的userobject x y座標分別為 並且標題顯示為 Begin Date
OpenUserObjectWithParm(iuo_begin Begin Date )
這個技巧還有很多其他的用處
SQL Tool
有很多次 在作PowerBuilder應用的技術支持時 我們需要檢測和定位壹些關於數據的問題 但我們並不總可以連接到產品的數據庫上 這種情況下 在前端的PowerBuilder應用中以系統管理員的身份執行SQL語句的方法就派上用場了 我為此編寫了壹個很有用的工具軟件
您可以從dropdown DataWindow中任意選擇數據庫表和字段名 輕松的構建需要的SQL語句而不用擔心記不住那些字段的名字 還可以將SQL語句保存起來以備日後使用 例如 您的用戶需要找出數據庫中所有的可用的address類型 它很簡單 您可以通過創建SQL語句來演示給他或她看
用戶將壹條SQL語句輸入到DataWindow中 然後點擊 Execute(執行) 檢索結果就會出現在下面的區域 用戶還可以將數據結果另存為Excel等等
如果用戶需要更詳細的SQL語句 您可以寫下來然後e mail給他 用戶只需要拷貝粘貼到窗體裏就可以執行了 這種方法可以用於清理數據庫問題 創建或執行stored procedures 創建特別的報告 甚至授權 您可以在enterprise manager作幾乎任何事情 這個工具軟件非常的有用 無論如何 要小心的使用 以免用戶創建笛卡兒積或者惡意的更新數據
保存動態創建的DataWindow
讓我們再深入討論這個工具(SQL Tool) 倘若您的客戶急需壹個定制的報表 您可能想先飛速的的完成報表 等回來以後再重新規劃集成到應用菜單中 於是 在您的手提電腦上寫壹個stored procedure e mail給您的系統管理員 您的系統管理員在SQL Tool窗口打開腳本
用戶通過執行這段腳本來創建stored procedure 您再告訴他們應該如何配置參數 然後執行存儲過程 結果被輸出到result set(結果集)窗口 現在看看如何能把這個結果保存成壹個DataWindow
打開DataWindow頁面 然後點擊 Create DataWindow
現在點擊 Retrieve DataWindow 剛才的結果集出現在DataWindow中 如果您希望保存這個DataWindow以便以後使用 點擊 Save DataWindow 就可以了 您可以適當的修改格式並將它封裝為壹個報表
結語
作為PowerBuilder的開發人員 我們總是被要求完成驚人數量的工作 用戶或是項目經理可能會要求極其苛刻 對壹個開發人員來說 儲備壹個 軍械庫 的可依賴的技術和例子是非常重要的 PowerBuilder的隊伍已經不像從前那麽壯大了 在與那些大公司以及 *** 機構的IT經理們的接觸過程裏 我經常被迫去反駁那些所謂的PowerBuilder早已是 骨灰 (原文用了legacy 遺產) 過時貨 廢棄的 甚至 年代的技術 的斷言 事實上 PowerBuilder仍舊是目前最棒的RAD開發工具 它可以讓開發人員只需大約數小時的功夫就完成設計原型和產品級的代碼 而非數天乃至數周 這也顯示出開發環境是否以團隊為導向的區別
作為PowerBuilder的開發人員 我們擁有壹個優於我們的其他IT同行最強大的工具 我真的希望以上這些技巧能夠幫助初學者以及那些中級的開發人員 更加的信賴PowerBuilder
? 編輯推薦
ASP NET開發培訓視頻教程
lishixinzhi/Article/program/PB/201311/24591