PB数据窗口对象之字段的修改属性


数据窗口只能修改一个数据表。当数据窗口的数据来源于不止一个数据表时,可以用脚本控制数据窗口的修改属性来对数据表逐个进行修改。
当数据窗口是用来接受用户的手工录入数据时,应该设置两方面的属性才能确保数据窗口能够用来修改数据表。一个是修改数据窗口的修改属性,另一个是用户可以修改的字段的相关属性值
----------
数据窗口对象的修改属性
Rows->Update Properties
如果数据窗口对应的数据表中定义了主键或者唯一性索引,则数据窗口创建时默认的就是允许修改,并且正确设置了所有的修改属性。否则就需要手工进行设置。当增加、删除、或者重新选择了字段时,PB将数据窗口的的修改属性为不允许,这时也应该进行手工设置。
Allow Updates:允许更新。
Table to Update:指定要被更新的表。
Where Clause for Update/Delete:配置如何在Update和Delete SQL语句中构造where子句
1、Key Columns 当开发单用户应用程序或者用户都以加锁方式访问数据库时可以选中该选项。该选项表示数据窗口只使用在“Unique Key Column”列表框中指定的唯一列进行数据更新。使用这种方式来修改数据库,并发性很高,不同的用户都可以并发地访问数据库,但是数据的完整性却非常差。因此要保护数据完整性,只有在单用户程序或者加锁访问方式下才使用这种修改方式。如:在add_book(通讯录)数据表中定义了4个字段,id为主键,name,address,telephone三个字段为可修改字段,有如下一条数据(001,陈,杭州,1395813)。若想把name改为“万”,数据窗口产生如下的update语句:update add_book set name = '万' where id = '001'
2、Key and Updateable Columns 这种修改方式是默认的修改方式,它用主键列和可以修改的列来创建where子句,具有很高的数据完整性,但是并发性不是太好。推荐使用这种修改方式。保存数据时将产生如下的SQL语句:update add_book set name = '万' where id = '001' and name = '陈' andaddress = '杭州' and telephone = '1395813'
3、Key and Modified Columns 该方法是上面两种方法的折中,当不同的用户并发修改同一行数据的不同字段时,都能成功修改,所以它的并发性有了一定的限制,数据的完整性比第一种修改方式有所提高。这种修改方式使用主键和数据发生了变化的列来产生where子句。保存数据时产生如下的SQL语句:update add_book set name = '万' where id ='001' and name = '陈'
Key Modification:该组框用来指定当用户修改了主键时,数据窗口如何来更新数据表中的主键字段。有两种选择Use Delete then Insert和Use Update。第一个选项是先删除原有的主键值,然后再使用新的主键值插入一个完整的行。使用这种更新主键的方式可以减少组织数据的工作量,但在数据库中各个数据表之间存在父子制约关系,并且依赖该主键的外部键被指定为级联删除时,操作就不会成功的。因为级联删除方式要求当依赖主键的外部键有数据时就不能删除主键。当DBMS允许更新主键列时,可以使用第二个选项,该选项直接修改主键值,所以防止了级联删除带来的操作不成功的问题。
Updateable Columns:指定被更新的字段。当数据窗口中的字段来自不止一个数据表时,这时一定要选择同一个表中的字段,因为一个数据窗口一次只能更新一个数据表,当数据窗口中增添了字段时,新增添的字段往往是不允许修改的,一定要在该列表框中选择该字段。
Unique Key Column:选择唯一标识一行的列。如果在定义数据表时定义了主键,单击右面的“PrimaryKey”按钮可以在该列表框中选中主键。
Identity Column:该下拉列表框用于为下拉列表框中所指定的列(通常是主键列)生成序号,当且仅当DBMS支持序号生成时该作用才有效
----------
数据窗口对象字段的修改属性
**相关属性
数据窗口中字段的相关属性:
1、字段的Tab Order值
2、字段的Protect属性
3、字段的DisplayOnly属性
4、字段的Visible属性
上述属性前3个中任意一个都可以让用户无法修改字段中的数据:最后一个属性决定字段是否可见,不可见的字段不管其他属性如何设置.用户都无法修改字段中的数据。
当字段的Tab Order值为0时,肯定不能获得焦点,但是非0时也不一定能获得焦点,还得看字段的Protect属性是否设置为1;当字段的Tab Order值不为0,Protect属性不为1并且字段的Visible属性为True时,肯定可以获得焦点。DisplayOnly属性和焦点是否能够获得无关(即选中Displayonly时可以选中字段,可以复制,但不能更新)。

**数据保护
可以用以下三种方法将字段设置为用户不可修改的字段:
(1)在数据窗口设计时将这些字段的TabOrder值置为0,以使该字段不能获得焦点,用户无法选中和编辑该字段。
(2)将字段的DisplayOnly属性设置为True。该字段可以获得焦点,可以选中该字段,还可以拷贝复制该字段的内容,但不能编辑该字段中的内容。
(3)设置字段的Protect属性。字段的Protect属性如果设置为“1”,则该字段的TabOrder值即使不是0也不会得到焦点。使用该属性可以保护一些重要的数据。
阅读更多
个人分类: PB数据窗口对象
上一篇PB数据窗口对象之画板、band和层次
下一篇PB数据窗口对象之字段操作
想对作者说点什么? 我来说一句

pb 动态创建数据窗口

2015年03月02日 10KB 下载

没有更多推荐了,返回首页

关闭
关闭