以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]关于代码里面内容的修改问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=87960)

--  作者:188802386
--  发布时间:2016/7/23 15:05:00
--  [求助]关于代码里面内容的修改问题

3.17.9 给用户授予输入值许可范围

我们之前的例子,都是在编辑之前,执行PrepareEdit事件,判断用户是否有编辑此列、此行或此单元格的权限。
权限管理不会总是如此简单,有时不需要在编辑前进行判断,而是在编辑后,判断用户输入的值是否超出授权范围。
例如给订单打折,不同等级的用户,不同的订购数量,能打折的程度是不同的。
此时我们不能使用PrepareEdit事件,因为这个是在编辑前执行,要在编辑后判断输入值是否超出授权范围,通常用ValidateEdit或者DataColChanging事件。

假定订单表中有个折扣列,普通业务员给出的折扣不能超过5%,张经理则不能超过10%,对于订购数量达到1000的订单,张经理有权给出15%的折扣。
为此可将此表的ValidateEdit代码设置为:

If e.Col.Name = "折扣" Then \'如果修改的是折扣列
    Dim v As Double = e.Text \'取得新输入的折扣
    If User.Name = "张经理" Then \'如果用户是张经理
        If v > 0.15 Then \'且折扣大于0.15
            e.Cancel = True \'取消此次输入
        ElseIf v> 0.1 AndAlso e.Row("数量") < 1000 Then \'如果折扣大于0.1,但数量少于1000
            e.Cancel = True \'取消此次输入
        End If
    ElseIf v > 0.05 Then \'如果是普通用户,且折扣大于0.05
        e.Cancel = True \'取消此次输入
    End If
    If e.Cancel Then \'如果本次输入被取消,则提示用户原因
        Messagebox.show("你输入的折扣超出授权范围!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information)
    End If
End If

我们在介绍ValidateEditDataColChanging事件的时候,也提供了很多验证输入值的例子,大家可以复习一下。






提问:带背景色部分的内容如何在表格里面就可以修改呢

[此贴子已经被作者于2016/7/23 15:05:46编辑过]

--  作者:Hyphen
--  发布时间:2016/7/23 15:22:00
--  
本来就是可以修改的呀。如果是权限控制的,就去改权限的逻辑
--  作者:大红袍
--  发布时间:2016/7/24 10:20:00
--  

 查表得到值,即可。

 

http://www.foxtable.com/webhelp/scr/0396.htm