以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  单元格填入数据锁定  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=68808)

--  作者:yifan3429
--  发布时间:2015/5/25 15:59:00
--  单元格填入数据锁定
这是一张进度表   每个部门主管填写自己的所属列  任何一个单元格 填入数据  这个单元格将被锁定   只有通过菜单栏解锁按钮才能解锁修改
图片点击可在新窗口打开查看此主题相关图片如下:qq截图20150525154001.png
图片点击可在新窗口打开查看
 求助代码,
[此贴子已经被作者于2015/5/25 15:59:32编辑过]

--  作者:Bin
--  发布时间:2015/5/25 16:03:00
--  
这样的话,做起来就比较复杂麻烦了

可以换个思路

PrepareEdit事件  

if e.row.isnull(e.col.name)=false then
  e.cancel=true
end if
这段代码,如果单元格不是空就不允许编辑

解锁按钮代码,把单元格内容清空.
dim t as table=tables("XX")
t.current(t.cols(t.colsel).name)=nothing


--  作者:yifan3429
--  发布时间:2015/5/25 17:06:00
--  
Select Case User.Group
    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

If e.Row.isnull(e.Col.name)=False Then
    If User.Group <> "生产厂长" Then
        e.cancel=False
    End If
End If

可以这个方案解决  我的代码不多   求调整    不能控制
[此贴子已经被作者于2015/5/25 17:06:07编辑过]

--  作者:Bin
--  发布时间:2015/5/25 17:10:00
--  
If e.Row.isnull(e.Col.name)=False Then
    If User.Group <> "生产厂长" Then
        e.cancel=False
    End If
End If
这段放前面

--  作者:yifan3429
--  发布时间:2015/5/25 17:42:00
--  
还是这个表上的问题  如果备料日期没有填  机加工日期就不能填写    如果 备料  机加工日期都没填  组装就不能填写   用什么控制  怎么控制
--  作者:大红袍
--  发布时间:2015/5/25 17:50:00
--  

 一样写到prepareEdit事件,比如

 

If e.Col.Name = "机加工日期" Then

    If e.Row.IsNull("备料日期") hen

        e.Cancel = true

    End If

ElseIf e.Col.Name = "组装" Then

    If e.Row.IsNull("备料日期") OrElse e.Row.Isnull("机加工日期") Then

        e.Cancel = true

    End If

End If