以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [原创]菜单代码问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=63759)

--  作者:爱相随
--  发布时间:2015/1/28 10:16:00
--  [原创]菜单代码问题

老师,我在表中设置有“选择行”列为逻辑列和“审核”列为字符列,菜单中有“审核”和“取消审核”按钮,我设置了如下代码,意思是当“选择行”为勾选时,点击“审核”按钮,则在勾选的行的“审核”列填上审核人的姓名,但下面的代码有问题,请老师指点,谢谢。

 

If User.IsRole("投融资_主管") Then
    For Each r As Row In Tables("贷款信息总表")
     If e.DataCol.Name = "选择行" AndAlso e.DataRow("选择行") = True Then
       r("FH") = User.Name
       r.Save()
     End If
    Next
END IF

 

提示有错误。

[此贴子已经被作者于2015-1-28 10:17:02编辑过]

--  作者:Bin
--  发布时间:2015/1/28 10:19:00
--  
审核按钮? 按钮里怎么会有e.datacol ?

If User.IsRole("投融资_主管") Then
    For Each r As Row In Tables("贷款信息总表")
     If r("选择行") = True Then
       r("FH") = User.Name
       r.Save()
     End If
    Next
END IF

--  作者:有点甜
--  发布时间:2015/1/28 10:19:00
--  
If User.IsRole("投融资_主管") Then
    For Each r As Row In Tables("贷款信息总表").Rows
        If r("选择行") = True Then
            r("FH") = User.Name
            r.Save()
        End If
    Next
End If

 


--  作者:爱相随
--  发布时间:2015/1/28 10:41:00
--  

表的PrepareEdit事件代码

1、禁止张三和李四编辑第一列、第二列和第三列。
2、禁止王五和赵六编辑第四列、第五列和第六列。

Select Case User.Name
    Case
"张三",
"李四"
       
Select Case e.Col.Name
            Case
"第一列","第二列","第三列"

                e.Cancel =
True
       
End Select
   
Case "王五", "赵六"
       
Select Case e.Col.Name
            Case
"第四列","第五列","第六列"

                e.Cancel =
True
       
End Select
End
Select 
老师,上述代码如果把 e.Cancel = True改为 e.Cancel = FALSE是不是就意思相反,只允许张三李四能编辑第一第二第三列,王五赵六能编辑四五六列呢??

 

还有,下面的代码:

If e.Row("JBDW") <> User.Group OrElse e.Row("录入人") <> User.NAME OrElse E.Row.IsNULL("fh") = False Then \'在编辑某行前,会自动判断负责此行的部门列是否和登录用户所属分组相同,如果不同,则取消编辑.
    e.Cancel = True
End If
If e.Col.Name = "选择行" Then
    If User.Name <> "张经理" Then
        e.Cancel = True
    End If
End If
我要把第二段的用户名改为用户角色怎么改呢,

第一段和第二段有冲突吗??

第一段表示只有用户和单位相同,且审核列为空时才能编辑,

第二段表示只有主管才能对“选择行”列进行编辑,并对勾选的行进行审核。

如果有冲突,要使其不冲突,怎么改呢,请老师帮个忙,谢谢!!

 


[此贴子已经被作者于2015-1-28 10:46:41编辑过]

--  作者:有点甜
--  发布时间:2015/1/28 10:43:00
--  
 允许,就不用写,不允许,才写啊。
--  作者:有点甜
--  发布时间:2015/1/28 10:44:00
--  
If e.Row("JBDW") <> User.Group OrElse e.Row("录入人") <> User.NAME OrElse E.Row.IsNULL("fh") = False Then \'在编辑某行前,会自动判断负责此行的部门列是否和登录用户所属分组相同,如果不同,则取消编辑.
    e.Cancel = True
End If
If e.Col.Name = "选择行" Then
    If User.Roles <> "张经理" Then
        e.Cancel = True
    End If
End If

--  作者:爱相随
--  发布时间:2015/1/28 10:52:00
--  
以下是引用有点甜在2015-1-28 10:44:00的发言:
If e.Row("JBDW") <> User.Group OrElse e.Row("录入人") <> User.NAME OrElse E.Row.IsNULL("fh") = False Then \'在编辑某行前,会自动判断负责此行的部门列是否和登录用户所属分组相同,如果不同,则取消编辑.
    e.Cancel = True
End If
If e.Col.Name = "选择行" Then
    If User.Roles <> "张经理" Then
        e.Cancel = True
    End If
End If

 

感觉这两段放在一起有冲突,实际操作也行不通,除了本人其他人都不能编辑,第二段不起作用,第一段已经把第二段排除了,谢老师帮我解决一下办法,谢谢!!就是第二段是第一段中的例外。。。


[此贴子已经被作者于2015-1-28 10:55:08编辑过]

--  作者:有点甜
--  发布时间:2015/1/28 10:54:00
--  

If e.Row("JBDW") <> User.Group AndAlso e.Row("录入人") <> User.NAME AndAlso E.Row.IsNULL("fh") = False Then \'在编辑某行前,会自动判断负责此行的部门列是否和登录用户所属分组相同,如果不同,则取消编辑.
    e.Cancel = True
End If

If e.Col.Name = "选择行" Then
    If User.Roles <> "张经理" Then
        e.Cancel = True
    End If
End If

 


--  作者:爱相随
--  发布时间:2015/1/28 11:02:00
--  
但是老师,改成这样后,在审核人审核之前非本人编辑的行又可以被其他人进行编辑修改啊
[此贴子已经被作者于2015-1-28 11:02:55编辑过]

--  作者:有点甜
--  发布时间:2015/1/28 11:02:00
--  
 你逻辑是什么啊,根据自己的逻辑写代码啊