以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  打开项目  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=79266)

--  作者:爱相随
--  发布时间:2015/12/28 9:06:00
--  打开项目
老师,我的项目我把菜单重新划分后,现在打开项目时提示“菜单中不存在名为‘Data’的功能组”,然后就没反应,项目打不开,按下“CTRL”键也没用,请问老师怎么办。
--  作者:大红袍
--  发布时间:2015/12/28 9:09:00
--  

1、按住ctrl肯定可以打开;

 

2、提示这个,应该引用了系统菜单模板又删除了吧?你要把主菜单的代码都删除才行啊。


--  作者:爱相随
--  发布时间:2015/12/28 9:11:00
--  

是把菜单功能组重新划分了,没有删除。

按住CTRL确实没有打开,提示中是看见“正在打开XX表”,但完后项目还是没有打开。


--  作者:爱相随
--  发布时间:2015/12/28 9:13:00
--  
哦,是要用“开发者”的名义才能打开
--  作者:大红袍
--  发布时间:2015/12/28 9:42:00
--  
打开以后,把你的代码改一下,提示这个,就是你的菜单没有data,但是你代码里引用了。
--  作者:爱相随
--  发布时间:2015/12/28 9:57:00
--  

老师,我有一个数据表,有以下数据列,选择(逻辑列),经办人(字符),上报确认(字符),审核(字符,人名),状态(字符)。状态列由菜单按钮控制(值分别为锁定、解锁),现在要求:

1、无论状态列是否为锁定,选择列都可以编辑;

2、当状态列的值为“锁定”时,除“选择”列外,其他列不可编辑,但“状态”列除外,否则就无法解锁;此时该行无论是谁均不可删除

3、当状态列的值为“解锁”时,但审核列的值不为空时,除“选择”和“状态”列外,其他列也不可编辑;此时该行无论是谁均不可删除

4、当状态列的值为“解锁”,且审核列的值为空,但上报确认列的值不为空时,除“选择”“状态”“审核”列外,其他列不可编辑,此时该行也不可删除;

5、当状态列的值为“解锁”,审核列的值为空,上报确认列的值为空时,登录人为经办人时,可以编辑,可以删除当前行。

 

麻烦老师帮编一下代码,我弄了一下,要反是全部不能编辑,要么是没有限制,全部能编辑。

 

If e.Col.Name = "XZH" Then
  If User.Roles <> "部门负责人" AndAlso User.Roles <> "经办人" AndAlso User.Roles <> "公司负责人" AndAlso User.name <> "管理员" Then
     If e.Row("管理单位") <> User.GROUP OrElse e.Row("经办人") <> User.NAME Then \'在编辑某行前,会自动判断负责此行的部门列是否和登录用户所属分组相同,如果不同,则取消编辑.
     End If
  End If
 ElseIf e.Col.Name = "状态" Then 
     If e.Row("状态") = "锁定"
      If user.name <> "管理员"
        e.Cancel = True 
        MessageBox.Show("数据已被锁定,不能编辑!!")
     ElseIf e.Row("审核") = NOT Nothing
        e.Cancel = True 
        MessageBox.Show("数据已审核上报,不能编辑!!")
     End If        
    End If
  End If

 

[此贴子已经被作者于2015/12/28 9:58:25编辑过]

--  作者:大红袍
--  发布时间:2015/12/28 10:07:00
--  
If e.Col.name <> "选择" andalso e.Col.name <> "锁定" Then
    If e.Row("状态") = "锁定"
        e.cancel = True
    Else If e.Row("状态") = "解锁"
        If e.Row.isnull("审核") = False
            e.cancel = True
        ElseIf e.Row.isnull("上报确认") = False
            e.cancel = True
        Else
            If user.name = e.Row("经办人") Then
                e.cancel = False
            Else
                e.cancel = True
            End If
           
        End If
    End If
End If

--  作者:大红袍
--  发布时间:2015/12/28 10:07:00
--  
删除去写beforeDeleteDataRow事件,代码参考7楼
--  作者:爱相随
--  发布时间:2015/12/28 11:18:00
--  
谢谢老师,太感谢。。
--  作者:爱相随
--  发布时间:2015/12/28 11:45:00
--  

老师,再补充,要让其他人员只能查看不可编辑,怎么加代码,我这样加,还是不行。比如集团的可以查看子公司的数据。

If e.Col.name <> "选择" AndAlso e.Col.name <> "锁定" Then
  If e.Row("管理单位") <> user.GROUP  OrElse  user.GROUP <> "高科控股集团" OrElse user.NAME <> "管理员" OrElse user.NAME <> "开发者" Then
    If e.Row("状态") = "锁定"
        e.cancel = True
        MessageBox.Show("数据已被锁定,不可编辑!")
    Else If e.Row("状态") = "解锁"
        If e.Row.isnull("审核") = False
            e.cancel = True
            MessageBox.Show("数据已审核上报,不可编辑!")
        ElseIf e.Row.isnull("上报确认") = False
            e.cancel = True
            MessageBox.Show("数据已上报,请取消上报!")
        Else
            If user.name = e.Row("经办人") Then
                e.cancel = False
            Else
                e.cancel = True
            End If
          End If 
        End If
    End If
End If