Foxtable(狐表)用户栏目专家坐堂 → [求助]多部门员工,协调填的表A里面多列(列如果有值,数据保存后不能编辑)总经理才有权编辑


  共有2992人关注过本帖树形打印复制链接

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

帅哥哟,离线,有人找我吗?
湛江智
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:812 积分:6688 威望:0 精华:0 注册:2014/11/26 12:32:00
[求助]多部门员工,协调填的表A里面多列(列如果有值,数据保存后不能编辑)总经理才有权编辑  发帖心情 Post By:2018/5/6 22:47:00 [只看该作者]

多部门员工,协调填的表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列有内容后,张经理才有权编辑,如果很多列呢?


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By: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

 回到顶部
帅哥哟,离线,有人找我吗?
湛江智
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:812 积分:6688 威望:0 精华:0 注册:2014/11/26 12:32:00
回复:(有点甜)If e.Col.Name = "标注" orelse e.Co...  发帖心情 Post By:2018/5/6 23:35:00 [只看该作者]

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

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

 

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

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

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

 

 

 

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

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

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:113484 积分:577909 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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

 回到顶部
帅哥哟,离线,有人找我吗?
湛江智
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:812 积分:6688 威望:0 精华:0 注册:2014/11/26 12:32:00
回复:(有点蓝)只有一种办法做到动态,就是所有需要...  发帖心情 Post By:2018/5/7 16:39:00 [只看该作者]

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

上面代码放在那里呢?


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

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

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:113484 积分:577909 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/5/7 16:48:00 [只看该作者]


 回到顶部
帅哥哟,离线,有人找我吗?
湛江智
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:812 积分:6688 威望:0 精华:0 注册:2014/11/26 12:32:00
回复:(有点蓝)prepareedit:http://www.foxtable.c...  发帖心情 Post By:2018/5/7 17:02:00 [只看该作者]

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

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

 

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


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

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:113484 积分:577909 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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

 回到顶部
帅哥哟,离线,有人找我吗?
湛江智
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:812 积分:6688 威望:0 精华:0 注册:2014/11/26 12:32:00
  发帖心情 Post By:2018/5/7 17:45:00 [只看该作者]

感谢,坛主


 回到顶部
帅哥哟,离线,有人找我吗?
湛江智
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:812 积分:6688 威望:0 精华:0 注册:2014/11/26 12:32:00
回复:(有点蓝)http://www.foxtable.com/webhelp/sc...  发帖心情 Post By:2018/6/12 15:04:00 [只看该作者]

当前登录者姓名 = 部门员工列的姓名  这行的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编辑过]

 回到顶部
总数 15 1 2 下一页