循環
LOOP
程序執行完後多行編輯框中顯示的為出錯的地方用戶根據提示可以輕易地更改FindRequired函數中的RowColnbr參數能自動增加或重置Colname用來存放列的字符名
數據的突出顯示及保護
程序運行中用戶希望顯示的數據具有明顯的區分例如學生的成績(不及格的分數要用紅色顯示)有些數據必須只能顯示不能讓用戶修改還有些數據在有些時候可以修改有些時候不能修改等以上情況可歸結為兩點
數據的突出顯示
數據窗口應該能使用戶很快找到他們想要的信息以顏色區分既滿足用戶的習慣又不占系統資源實現起來也很簡單以學生管理為例要求成績低於分的以紅色顯示其他不變方法是在數據窗口中對應成績的列(例如/CJ)上雙擊鼠標左鍵或單擊鼠標右鍵彈出ColumnObject對話框選取Expressions頁在Color後的框中輸入
if(cj<rgb()rgb())此句表示當成績小於則顯紅色否則灰色顯示
IF語句只可能有兩種選擇如果要更多的條件判斷則必須用CASE語句例如成績大於等於用藍色小於用紅色其他用綠色則應該用以下語句
Case(cjWHENIS>=THENRGB()WHENIS<THENRGB()ELSERGB())
我們還可以輸入更加復雜的公式
圖形是最好的說明語言為了更好體現數據的直觀性可以采用條件位圖的方法之所以稱為條件位圖是因為它隨數據的性質而決定是否顯示用可以在上述的成績管理數據窗口的前面加上一個圖片如下圖
雙擊最左邊的蝴蝶位圖彈出PictureObject對話框選Expressions頁在Visible右的編輯框寫入if(xb=)此句的意義為當性別為(女)時蝴蝶出現否則蝴蝶消失程序運行起來相當直觀讀者可以觸類旁通充分利用列的屬性使用戶的界面更加友善漂亮
數據的保護
有很多情況需要對數據進行保護(即只能顯示而不允許修改)學生查詢成績時就是這種情況進行數據保護的方法有很多第一種是雙擊要保護的列彈出ColumnObject選取Edit頁將DisplayOnly框選中第二種將要保護的列的TabOrder置則此列得不到焦點當然就無從修改第三種是從根本作起選取Rows菜單再選取UpdateProperties彈出SpecifyUpdateProperties對話框將AllowUpdates設為空這樣即使用戶更改了也無法更新數據庫使更改毫無意義
以上情況都是事先已經確定需要保護的數據如果有些數據要保護有些不要保護則以上的方法就無法實現例如合同台賬管理對於一個沒有實施的合同可以更改對於一個已經實施的合同則必須加以保護這需要用列的保護屬性來實現方法如下
雙擊每一列彈出ColumnObject對話框選取Expressions頁在Protect後的框中寫入if(sfss=)其中sfss為表示合同是否實施如果實施(值為)則進行數據保護否則可以更改此方法可以在程序運行中動態控制數據的保護方式
數據窗口的多表更新
在處理數據時經常需要將幾個表中的數據放入一個數據窗口中進行處理一般情況下多表數據源的數據窗口只能用於數據的檢索而不能更新想要更新數據則采用的方法為創建數據窗口(將各個表的主鍵包括進去)修改Taborder使數據能被更改然後對應各個表創建相應的隱含數據窗口隱含數據窗口的數據項和主數據窗口中對應表的數據項應完全一致存盤時將主數據窗口中的數據拷貝到相應的隱含數據窗口中去逐個保存各隱含數據窗口中的數據即可由此看來第二種方法更容易理解和接受實現起來也很簡單
小結
數據窗口的引入使PB獨樹一幟奠定了其在客戶機/服務器體系前端開發工具中的領導地位在運用數據窗口這個工具時應該對它的處理機制深入了解否則會產生意想不到的錯誤(PB是解釋型的很多問題尤其是關於數據窗口的問題在編程過程中檢查不出來)PB程序組中專門有一程序項DWsyntax用來說明數據窗口的用法讀者可以從中吸收到很多有用的東西
[] []
From:http://tw.wingwit.com/Article/program/PB/201311/24652.html