Foxtable(狐表)用户栏目专家坐堂 → 帮忙写代码


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

主题:帮忙写代码

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


加好友 发短信
等级:管理员 帖子:47448 积分:251060 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2009/5/12 12:19:00 [显示全部帖子]

1、只有主任、副主任用户组可以操作“审核”,其它用户组不能操作“审核”,

BeforeLockDataRow

锁定某行(通过审核)之前执行,可以在此处进行权限和逻辑验证,决定是否允许即将进行的锁定行操作。

e参数属性: 

DataTable:返回要锁定行的数据表。
DataRow:  返回要锁定的数据行。
Cancel:    逻辑型,设为True,取消即将进行的锁定行操作。

示例

假定只允许经理级别的用户锁定行,可以设置BeforeLockDataRow事件代码为:

If User.Group <> "经理" Then
    e.Cancel =
True
End
If


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


加好友 发短信
等级:管理员 帖子:47448 积分:251060 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2009/5/12 12:23:00 [显示全部帖子]

2、工作人员”表实图中除7个字段外,其它字段不能被“工作人员”用户组修改,7个字段为:开piao形式、piao据号码、fa piao日期、已交财务、联系人、文书、照片

PrepareEdit

准备编辑单元格的时候执行。

e参数属性:

Table:       准备编辑的表
Row:         准备编辑的行
Col:         准备编辑的列
IsFocusCell: 逻辑型,是否是焦点单元格   
Cancel:      逻辑型,默认为False,设为True取消编辑。



if user.Group = "工作人员"
    Select Case e.Col.Name
        case "开piao形式","piao据号码","fa piao日期","已交财务","联系人","文书","照片","审核"
        e.Cancel = true
    end Select
End IF

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


加好友 发短信
等级:管理员 帖子:47448 积分:251060 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2009/5/12 12:26:00 [显示全部帖子]

3、这7个字段当“工作人员”用户组操作后不为空后,下次再进入程序又被锁定,不能修改,只有非“工作人员”用户组权限进入后,把“审核”变为False后,才能由非“工作人员”用户组修改所有被锁定的行。

PrepareEdit

准备编辑单元格的时候执行。

e参数属性:

Table:       准备编辑的表
Row:         准备编辑的行
Col:         准备编辑的列
IsFocusCell: 逻辑型,是否是焦点单元格   
Cancel:      逻辑型,默认为False,设为True取消编辑。


    Select Case e.Col.Name
        case "审核"
             if user.Group = "工作人员"
                e.Cancel = True
             end if
        case "开piao形式","piao据号码","fa piao日期","已交财务","联系人","文书","照片"

            if user.Group = "工作人员" AndAlso e.Row("审核") = False
                 e.Cancel = true
            end if
    end Select

[此贴子已经被作者于2009-5-12 12:34:11编辑过]

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


加好友 发短信
等级:管理员 帖子:47448 积分:251060 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2009/5/12 12:35:00 [显示全部帖子]

另BeforeSaveDataRow中的代码,可以这样写,因为判断空值影坛该用IsNull:

Dim d As DataRow = e.DataRow
Dim ColNames() AS String = "文号,项目名称,委托类别,委托单位,来源单位,标的物,标的额".Split(",")
For Each ColName AS String In ColNames
    if d.IsNull(ColName) Then
        MessageBox.Show("请详细完整地填写所有资料","存盘失败",MessageBoxButtons.OK,MessageBoxIcon.Exclamation) '提示用户
        Dim Index As Integer
        Index = Tables("收入").FindRow(e.DataRow) '找出此行在收入数据Table中的位置
        If Index > -1 Then '如果找到此行
            Tables("收入").Position = Index '将焦点定位到此行
        End If
        Maintable = Tables("收入") '选择收入数据表作为主表.
        e.Cancel = True '取消存盘
        exit for
    End If
Next
[此贴子已经被作者于2009-5-12 12:40:08编辑过]

 回到顶部