Foxtable(狐表)用户栏目专家坐堂 → 代码的问题


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

主题:代码的问题

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


加好友 发短信
等级:四尾狐 帖子:932 积分:6531 威望:0 精华:0 注册:2014/6/25 10:48:00
代码的问题  发帖心情 Post By:2014/9/5 10:49:00 [只看该作者]

老师,我想在项目事件项目的AfterOpenProject事件中设置代码,使打开的表ZJSQB,根据表中“付款单位”列的值和登录用户的角色不同看不见不同的列。比如:当ZJSQB表的“付款单位”列的值是“高科控股集团”,且登录的用户的角色是“子公司财务”时,则他看不见“财务1”“财务2”“财务3”这三列,当“付款单位”列的值是其他值时,则用户角色为“总工办”或“集团财务”“业务副总”“资金副总”“董事长”等看不见“审核”“意见”“第十列”“第十一列”。下面的代码不对,错在哪里呢,请老师指导

If e.DataTableName = "ZJSQB" Then如果打开的是ZJSQB

If e.DataCol.Name = "付款单位" Then‘如果变化的是付款单位列

Dim K As String = e.DataRow("付款单位")‘定义为字符串

Select Case K

            Case "高科控股集团"

                If User.IsRole ("子公司财务") Then

Tables("ZJSQB").Cols.Remove("财务1")
       
                Tables("ZJSQB").Cols.Remove("财务2")
       
                Tables("ZJSQB").Cols.Remove("财务3")

Tables("ZJSQB").Cols.Remove("财务4")
Case "
高科开发建设","高科置业发展","贵州望城投资"

If User.IsRole( "总工办")  OrElse User.IsRole( "集团财务")OrElse User.IsRole( "业务副总")OrElse User.IsRole( "资金副总")OrElse User.IsRole( "集团董事长")Then

Tables("ZJSQB").Cols.Remove("总工办")
       
                Tables("ZJSQB").Cols.Remove("JTZGB1")
       
                Tables("ZJSQB").Cols.Remove("JTZGB2")

Tables("ZJSQB").Cols.Remove("JTZGB3")

 

Tables("ZJSQB").Cols.Remove("集团财务1")
       
                Tables("ZJSQB").Cols.Remove("JTCWB1")
       
                Tables("ZJSQB").Cols.Remove("JTCWB2")

Tables("ZJSQB").Cols.Remove("JTCWB3")

Tables("ZJSQB").Cols.Remove("集团副总")
       
                Tables("ZJSQB").Cols.Remove("资金副总")
       
                Tables("ZJSQB").Cols.Remove("董事长1")

Tables("ZJSQB").Cols.Remove("董事长2")

Tables("ZJSQB").Cols.Remove("董事长3")

               END IF

          END SELECT

      END IF

END IF

 


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/9/5 10:55:00 [只看该作者]

 无法做到你这种限制的,这样做也是没有意义的。

 

 每一行的单位都可以不同,点不同行,那么就能看到不同的列,无法做到你预想的看不到数据的效果。


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


加好友 发短信
等级:四尾狐 帖子:932 积分:6531 威望:0 精华:0 注册:2014/6/25 10:48:00
  发帖心情 Post By:2014/9/5 10:57:00 [只看该作者]

那如果改成:当ZJSQB表的“付款单位”列的值是“高科控股集团”,且登录的用户的角色是“子公司财务”时,则他不能编辑“财务1”“财务2”“财务3”这三列,当“付款单位”列的值是其他值时,则用户角色为“总工办”或“集团财务”“业务副总”“资金副总”“董事长”等不能编辑“审核”“意见”“第十列”“第十一列”。且不能编辑的列变成灰色,这样可以吗??
[此贴子已经被作者于2014-9-5 10:58:00编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/9/5 11:01:00 [只看该作者]

 去编写prepareEdit事件

 

http://www.foxtable.com/help/topics/2255.htm

 

 

 


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


加好友 发短信
等级:四尾狐 帖子:932 积分:6531 威望:0 精华:0 注册:2014/6/25 10:48:00
  发帖心情 Post By:2014/9/5 11:06:00 [只看该作者]

这样做是是使流程能够通用,像我们单位的流程确实有点复杂,我们公司的项目分两种,一种是由集团核算,但现场管理是由各子公司管理,还有一种就是由子公司核算管理的项目。如果由子公司核算管理的项目,则审核流程是不经过集团总部的相关部门,但如果是由集团核算,子公司管理的项目,则是由子公司申请发起流程,子公司财务部门不参加审批流程,子公司的其他部门要参加流程,然后集团总部相关部门要参加流程。这样就是,登录人所属的工作组是子公司,而付款单位是集团总部,所属工作组不一致。审批流程就有区别。付款单位和发起单位是一致的,一般不通过集团相关部门审核;如果发起是子公司,付款由集团总部付款的,则前面的流程减掉子公司的财务部门,后面再加上集团的相关部门。
[此贴子已经被作者于2014-9-5 11:08:53编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/9/5 11:08:00 [只看该作者]

 自己看4楼。

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/9/5 11:11:00 [只看该作者]

如果是要隐藏列,就去编写表的currenChanged事件

 

Dim r As Row = e.Table.Current
If r IsNot Nothing Then
    Dim K As String = r("付款单位") '定义为字符串
    Dim flag As Boolean = True
    Select Case K
       
        Case "高科控股集团"
           
            If User.IsRole ("子公司财务") Then
                flag = False
            End If
            Tables("ZJSQB").Cols("财务1").Visible = flag
            Tables("ZJSQB").Cols("财务2").Visible = flag
            Tables("ZJSQB").Cols("财务3").Visible = flag
           
            Tables("ZJSQB").Cols("财务4").Visible = flag
        Case "高科开发建设","高科置业发展","贵州望城投资"
            If User.IsRole( "总工办")  OrElse User.IsRole( "集团财务")OrElse User.IsRole( "业务副总")OrElse User.IsRole( "资金副总")OrElse User.IsRole( "集团董事长")Then
                flag = False
            End If
            Tables("ZJSQB").Cols("总工办").Visible = flag
            Tables("ZJSQB").Cols("JTZGB1").Visible = flag
            Tables("ZJSQB").Cols("JTZGB2").Visible = flag
           
            Tables("ZJSQB").Cols("JTZGB3").Visible = flag
           
           
           
            Tables("ZJSQB").Cols("集团财务1").Visible = flag
            Tables("ZJSQB").Cols("JTCWB1").Visible = flag
            Tables("ZJSQB").Cols("JTCWB2").Visible = flag
           
            Tables("ZJSQB").Cols("JTCWB3").Visible = flag
           
            Tables("ZJSQB").Cols("集团副总").Visible = flag
            Tables("ZJSQB").Cols("资金副总").Visible = flag
            Tables("ZJSQB").Cols("董事长1").Visible = flag
           
            Tables("ZJSQB").Cols("董事长2").Visible = flag
           
            Tables("ZJSQB").Cols("董事长3").Visible = flag
           
    End Select
   
End If

[此贴子已经被作者于2014-9-5 11:11:55编辑过]

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


加好友 发短信
等级:四尾狐 帖子:932 积分:6531 威望:0 精华:0 注册:2014/6/25 10:48:00
  发帖心情 Post By:2014/9/5 14:07:00 [只看该作者]

老师,我想通过菜单功能打开相关的表,比如菜单按钮是项目信息,点击后则打开项目信息表,其他表不显示,请问怎么处理,谢谢

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/9/5 14:38:00 [只看该作者]

For Each t As Table In Tables
    If t.Name = "表A" Then
        t.Visible = True
    Else
        t.Visible = False
    End If
Next


 回到顶部