在编制管理信息应用系统中一般都会遇到一个共同问题那就是如何根据不同情况去控制表中的数据列比如对于同一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=)
[] []