PowerBuilder資料視窗程式設計技巧十則
PowerBuilder取得巨大成就的原因就是有Datawindow物件,DataWindow是具有功能強大和靈活多變的特點,本人用PowerBuilder開發過一段時間後,總結出一些技巧,以供廣大的PB開發者借鑑使用。
一.如何建立一個報表,如下形式
Quantity Running Total
5,000 5,000
2,500 7,500
3,000 10,500
12,000 22,500
對於Running Total列,我們可使用計算列:CumulativeSum(Quantity for all),即可達到逐漸遞增求和的功能。
二.資料視窗的資料送緩衝區之前確認的四個步驟 判斷資料型別是否正確。如不正確則觸發ItemError事件。判斷資料是否符合有效性規則。如不符合有效性規則,同樣觸發ItemError事件。 判斷是否有資料被改動。判斷資料是否通過ItemChanged事件,如果資料和ItemChanged相斥,將觸發ItemError事件。
三.如何在DataWindow中用資料型別為Datetime的列為條件進行查詢
1.當要查詢的日期條件是一常數時使用如下表示式:
ls_Find = "datetime_col = DateTime ('1/1/1999')" |
2.當要查詢的日期條件是一個變數時使用如下的表示式:
ls_Find = "datetime_col = DateTime ('" + ls_Date + "')" |
3.當要查詢的日期條件是一個DateTime資料型別時使用如下表示式:
ls_Find = "datetime_col = DateTime ('" + String (ldt_DateTime) + "')" |
四.設定資料視窗Boolean型屬性的三種方法
PowerBuilder提供了三種方法設定資料視窗的布林型屬性,分別是True/False, 1/0, 'Yes'/'No'。例如:
dw_1.Object.address.Visible = 0 dw_1.Object.address.Visible = False dw_1.Object.address.Visible = 'No' |
PowerBuilder在處理上以字串的形式儲存屬性,而不考慮屬性值是布林型、長整型或是字元型。
為了進一步理解,可以匯出一個資料視窗並檢視它的原碼,可以發現即使是列的顏色屬性它也是使用帶雙引
號的數字來表達。
五.如何在DataWindow中快速刪除多行
在開發過程中可能經常有要進行多行刪除的操作,一般都使用迴圈語句進行操作:
FOR ll_RowOn = 1 TO dw_1.RowCount() dw_1.DeleteRow(ll_RowOn) NEXT |
一個快速的刪除方法是把要刪除的行從主緩衝區中移到刪除緩衝區中。例如,刪除緩衝區中所有的行:
dw_1.RowsMove(dw_1, 1, dw_1.RowCount, Primary!, dw_1, 1, Delete!) |
不過不要忘了過濾的行在不同的緩衝區中。
六.如何在DataWindow的SQL語法中不使用SELECT DISTINCT實現刪除重複的行
起先對你要顯示唯一值的列進行排序:"city A",然後增加如下過濾字串:" city < > city [-1] or GetRow () = 1"
七.如何在分組形式的DataWindow中分別顯示各組的行號
當我們為Datawindow的每一行顯示行號時,可以簡單的放一個表示式為GetRow()計算列。但是對於分組的Datawindow,要分別顯示各組的行號,則應使用表示式為GetRow() - First(GetRow() for Group 1) + 1的計算列。
八.如何改變列的字型顏色,提醒使用者此列已做修改
在列的Color屬性中,輸入如下表示式
IF (column_name < >column_name.Original, RGB(255, 0, 0), RGB(0, 0, 0)) |
在這個條件中,如果此列已改變,則顯示紅色字型,否則顯示黑色字型。這個表示式主要用column_name < > column_name.Original比較當前列的值和原始列的值是否相同來達到判斷的目的。
九.在資料視窗中移走行,但不是去做過濾或刪除操作
RowsDiscard()函式可做到這一點,它在資料視窗中執行移除工作,但被移走的行它不可被刪除或做任何修改性的儲存。
十.如何在多行顯示的DataWindow 中的Footer Band中顯示當前資料的首行和最後行的行號
我們先看兩個計算列的表示式: IF (GetRow() = First(GetRow() FOR Page), 1, 0) // 1 為當前頁的第一行
IF (GetRow() < > 1 AND GetRow() = Last(GetRow() FOR Page), 1, 0) // 1 為當前頁的最後一行 |
由上面可知,在Footer Band中設定如下計算列表示式:
'Rows ' + String(First(GetRow() FOR Page)) + ' to ' + String(Last(GetRow() FOR Page)) + ' are displayed' |
即可達到這項功能。
相關文章
- powerbuilder crosstab資料視窗問題UIROS
- 資料庫設計技巧14則資料庫
- Windows API視窗程式設計 - 空白視窗WindowsAPI程式設計
- powerbuilder9 視窗高階配置UI
- Android 多視窗程式設計Android程式設計
- Qt程式設計技巧 窗體居中顯示QT程式設計
- Excel檢視資料小技巧——凍結窗格Excel
- PB資料視窗難得一見的技巧
- 大型資料庫的設計原則與開發技巧資料庫
- Stats渲染資料統計視窗
- 程式設計師使用Node的十個技巧程式設計師
- 好程式設計師大資料解析 SQL最佳化方案精解十則程式設計師大資料SQL
- Java 程式設計技巧之資料結構Java程式設計資料結構
- 資料視覺化設計的25個小技巧視覺化
- 資料庫設計技巧資料庫
- 好程式設計師大資料乾貨 SQL最佳化方案精解十則程式設計師大資料SQL
- 好程式設計師大資料培訓分享SQL最佳化方案精解十則程式設計師大資料SQL
- Windows API視窗程式設計 - 自定義按鈕WindowsAPI程式設計
- 3-Windows程式設計 -視窗與訊息Windows程式設計
- C++“視窗”程式設計啟蒙(之二)C++程式設計
- Windows SDK程式設計之一 視窗示例程式 (轉)Windows程式設計
- 程式設計師十誡:第十誡:在規則中理解精意程式設計師
- 程式設計師應知道這十大物件導向設計原則程式設計師物件
- 科學軟體十條簡單程式設計原則程式設計
- Windows API視窗程式設計 - 完善自定義按鈕WindowsAPI程式設計
- pb9 資料視窗的計算列
- 資料表的設計原則
- Mac小技巧 快速檢視指定應用程式的所有視窗Mac
- 淺談資料庫設計技巧資料庫
- 資料視覺化的設計技巧,終於有人講明白了!視覺化
- 程式設計師修身養性的十大原則程式設計師
- Windows API視窗程式設計 - 系統標準按鈕WindowsAPI程式設計
- pb資料視窗型別型別
- 設計十誡:產品設計的10個原則
- 程式設計原則程式設計
- 程式設計規則程式設計
- 資料庫索引的設計原則資料庫索引
- 企業資料庫設計原則資料庫