在編制管理信息應用系統中一般都會遇到一個共同問題那就是如何根據不同情況去控制表中的數據列比如對於同一DATAWINDOW不同的用戶有不同的操作(如對於數據錄入人員可以更改數據而對於查詢人員一般不能更改數據)下面就以一個簡單的工資表為例來說明利用PB如何在DATAWINDOW中控制列的修改方式
工資表基本列如下
代碼 姓名 工作時間 基礎工資 浮動工資 崗位工資 知識分子補貼 其它工資
code name workdata basesa movesa stationsa bt othersa
char varchar char decimal decimal decimal decimal deciaml
在PB中有兩種方式可控制列屬性一是靜態方式另一種是動態方式實現所謂靜態方式就是在列的屬性上通過選項實現所謂動態方式就是利用編程實現現分別給予介紹
一靜態方法
()在datawindow中選中某列後點MOUSE右鍵選properities後系統彈出一標簽選中Edit標簽將Display Only選項制為有較
()或者選中Expression標簽在Protect Express中填入;
()或者選中Expression標簽在Protect Express中填入條件表達式如工作時間不滿一年的人員不能修改則寫入if (daysafter(date(workdate)today()) <= );
()在datawindow中將某列的Tab Order 值制為則該列因得不到焦點而不能被修改
()在DataWindow Painter 狀態下選取Rows菜單再選取Update Properties彈出Specify Update Properties對話框將Allow Updates 設為空
二動態修改方法
()將整個Datawindow設置為保護方式利用DataWindow Object的ReadOnly 屬性可以將整個Datawindow 設置為保護方式
語法為dw_ObjectDataWindowReadOnly=value 或 dw_Modify(DataWindowReadOnly{=value})
其中value表示Datawindow是否為只讀(readonly)狀態它有兩個取值Yes 和NoYes表示使Datawindow為readonly;No 則相反默認值是No
例如如果要使Datawindow設置為保護方式可以在相應事件的腳本中包含下列代碼
dw_Modify(DataWindowReadOnly=Yes) 或者為
dw_ObjectDataWindowReadOnly=Yes
()只保護Datawindow的某些列
方法一利用列的Protect屬性
語法為dw_ObjectnameProtect=integer 或 dw_Modify(columnnameProtect{=integer})
參數說明cloumnname:為要保護的列名integer:為該列的保護狀態值為或False時該列不受保護值為或True時該列受到保護例如要將列name設置為保護狀態則相應的代碼為dw_ObjectnameProtect= 或者為dw_Moidfy(nameProtect=)
方法二利用列的TabSequence屬性在程序執行時可以根據需要將該列的TabOrder置為從而達到保護的目的
語法為dw_ObjectnameTabSequence= number或dw_Modify(columnnameTabSequence{=number})
參數說明columnname:要保護的列名number:該列的TabOrder值()
例如要將列name設置為保護狀態相應的代碼為
dw_ObjectnameTabSequence=
或者dw_Modify(nameTabsequence=)
[] []
From:http://tw.wingwit.com/Article/program/PB/201311/24605.html