以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]多部门员工,协调填的表A里面多列(列如果有值,数据保存后不能编辑)总经理才有权编辑  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=118591)

--  作者:湛江智
--  发布时间:2018/5/6 22:47:00
--  [求助]多部门员工,协调填的表A里面多列(列如果有值,数据保存后不能编辑)总经理才有权编辑

多部门员工,协调填的表A里面多列(列如果有值,数据保存后不能编辑)总经理才有权编辑

 

 下载信息  [文件大小:   下载次数: ]
点击浏览该文件:111.foxdb


此主题相关图片如下:想解决的问题.png
按此在新窗口浏览图片

 

帮助文件:精确控制单元格编辑权限

 

If e.Col.Name = "标注" Then \'如果修改的是标注列
    If
e.Row.IsNull("标注") = False Then \'如果已经有内容
       
If User.Name <> "张经理" Then \'且用户不是张经理
            e.Cancel =
True \'那么禁止编辑
       
End If
    End
If
End
If

上面代码只能是1列有内容后,张经理才有权编辑,如果很多列呢?


--  作者:有点甜
--  发布时间:2018/5/6 22:57:00
--  
If e.Col.Name = "标注" orelse e.Col.Name = "第二列" Then \'如果修改的是标注列
    If e.Row.IsNull(e.col.name) = False Then \'如果已经有内容
        If User.Name <> "张经理" Then \'且用户不是张经理
            e.Cancel = True \'那么禁止编辑
        End If
    End If
End If

--  作者:湛江智
--  发布时间:2018/5/6 23:35:00
--  回复:(有点甜)If e.Col.Name = "标注" orelse e.Co...

上面的代码只能2列填写保存后(只有总经理 部门的张经理编辑)

上面的代码只能两列实现,现在问题是表有70列,按你的方法,代码要把所有列名都接起来——表的列数量和名称还可能更改,动态的代码怎么写呢》?

 

同时想实现一逻辑列:已提交

勾选 已提交列 后,该行已填写的列值(只有总经理 部门的张经理编辑),张经理取消勾选的已提交列后,员工可重新对改行编辑

也就是实现简单的审批功能

 

 

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:111.foxdb

[此贴子已经被作者于2018/5/7 9:22:25编辑过]

--  作者:有点蓝
--  发布时间:2018/5/7 9:29:00
--  
只有一种办法做到动态,就是所有需要控制的列名称都必须有规律,比如统一这样的名称;a_第一列,a_第二列,a_第三列......

If e.Col.Name.StartsWith("a_") Then
    If e.Row.IsNull(e.Col.name) = False  Then \'如果已经有内容
        If e.Row("已提交") = True AndAlso User.Name <> "张经理" Then \'且用户不是张经理
            e.Cancel = True \'那么禁止编辑
        End If
    End If
End If

--  作者:湛江智
--  发布时间:2018/5/7 16:39:00
--  回复:(有点蓝)只有一种办法做到动态,就是所有需要...

坛主,上面代码放在窗口的全局事件Enter,和窗口的AfterLoad报错

上面代码放在那里呢?


图片点击可在新窗口打开查看此主题相关图片如下:afterload报错.jpg
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:enter报错.jpg
图片点击可在新窗口打开查看

--  作者:有点蓝
--  发布时间:2018/5/7 16:48:00
--  
prepareedit:http://www.foxtable.com/webhelp/scr/0605.htm
--  作者:湛江智
--  发布时间:2018/5/7 17:02:00
--  回复:(有点蓝)prepareedit:http://www.foxtable.c...

坛主,表属性PrepareEdit,只能是面对表编辑的时候有用

我的窗口里面没有table表控件,窗口里面的TextBox控件,还可以编辑和修改已经填入表的信息——没达到想要的结果

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:111.foxdb


图片点击可在新窗口打开查看此主题相关图片如下:窗口 还可以修改 表勾选锁定的行 报错.jpg
图片点击可在新窗口打开查看
[此贴子已经被作者于2018/5/7 17:17:26编辑过]

--  作者:有点蓝
--  发布时间:2018/5/7 17:20:00
--  

Dim ctl As WinForm.Control = e.Sender
ctl.ReadOnly = BooleanEnum.False \'允许编辑
Dim r As Row = Tables("表A").Current
If r IsNot Nothing AndAlso ctl.BindingField > "" Then
    If r.IsNull(ctl.BindingField.Split(".")(1)) = False  Then \'如果已经有内容
        If r("已提交") = True AndAlso User.Name <> "张经理" Then \'且用户不是张经理
            ctl.ReadOnly = BooleanEnum.True \'禁止编辑
        End If
    End If
End If

--  作者:湛江智
--  发布时间:2018/5/7 17:45:00
--  

感谢,坛主


--  作者:湛江智
--  发布时间:2018/6/12 15:04:00
--  回复:(有点蓝)http://www.foxtable.com/webhelp/sc...

当前登录者姓名 = 部门员工列的姓名  这行的a_2列  当前登录者可以编辑,下面代码怎么修改呢?


Dim ctl As WinForm.Control = e.Sender
ctl.ReadOnly = BooleanEnum.False \'允许编辑
Dim r As Row = Tables("表A").Current
If r IsNot Nothing AndAlso ctl.BindingField > "" Then
    If r.IsNull(ctl.BindingField.Split(".")(1)) = False  Then \'如果已经有内容
        If r("a_已提交") = True AndAlso User.Name <> "张经理" Then \'且用户不是张经理
            ctl.ReadOnly = BooleanEnum.True \'禁止编辑
        End If

Dim ctlf As WinForm.TextBox = e.Form.Controls("TextBox2")
Dim xm As String = User.Name
If User.Name = "xm" Then
    ctlf.ReadOnly = BooleanEnum.False \'允许编辑

End If
       
    End If
End If


图片点击可在新窗口打开查看此主题相关图片如下:当前登录者姓名 = 内部用工 姓名 a_2列可以编辑.jpg
图片点击可在新窗口打开查看
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:111.foxdb

[此贴子已经被作者于2018/6/12 15:11:12编辑过]