Rss & SiteMap

Foxtable(狐表) http://www.foxtable.com

新一代数据库软件,完美融合Access、Foxpro、Excel、vb.net之优势,人人都能掌握的快速软件开发工具!
共8 条记录, 每页显示 10 条, 页签: [1]
[浏览完整版]

标题:[求助]关于类似一个权限控制的需求

1楼
ddlzq 发表于:2010/5/30 21:51:00

各位老师:

如果判断一行中某个单元格不为空,那么从它之前的单元格就不能编辑,类似工作流的那种,请问代码如何写指定区域呢?谢谢老师指点。

[此贴子已经被作者于2010-5-30 21:51:06编辑过]
2楼
狐狸爸爸 发表于:2010/5/31 8:45:00
呵呵,很有意思的问题,可以小考一下逻辑能力。

下面的代码放在PrepareEdit事件, "第一列","第二列","第三列","第四列"这四列,如果后一列输入了内容,则前面所有列不能输入内容。

 Select Case e.Col.Name
    Case "第一列","第二列","第三列","第四列"
        Dim Ary() As String = New String (){ "第一列","第二列","第三列","第四列"}
        For i As Integer = Ary.Length - 1 To 0 Step - 1
            If Ary(i) = e.Col.Name Then
                Exit For
            ElseIf e.Row.IsNull(ary(i)) = False Then
                e.Cancel = True
                Exit For
            End If        
        Next
End Select
[此贴子已经被作者于2010-5-31 8:50:13编辑过]
3楼
ddlzq 发表于:2010/5/31 8:54:00

谢谢狐爸的指点,我以前在excel中做的这种 权限,可惜excel协同能力够差,呵呵

excel中可以指定行号区域锁定,比如直接A2:F2.locked = true

我想有没有好办法提取到e.row的想锁定的行号区域再指定锁定的呢?因为我要写每列的名,表头大时,写太多喽....55555

 

4楼
狐狸爸爸 发表于:2010/5/31 9:16:00
 如果按行更简单,例如要对第一列进行类似的设置:

if e.Col.Name = "第一列" Then
    If e.Table.FindRow("第一列 Is Not Null",e.Table.Position + 1,False) > 0  Then
        e.Cancel = True
    End If
End If

这样某行第一列输入了内容,那么之前所有行的第一列都不能输入内容
5楼
ddlzq 发表于:2010/5/31 10:20:00

哦,是这样子的

假如

 

     第一列  第二列  第三列  第四列  第五列

 

1行

 

2行

 

假如我在第四列的第1行输入了内容,也就是第四列第1行非空,那么第1行中对应的第一列、第二列、第三列都不可再编辑了。不是整列都不可编辑了,而就是第1行对应的一二三列不可编辑。

[此贴子已经被作者于2010-5-31 10:25:52编辑过]
6楼
狐狸爸爸 发表于:2010/5/31 10:36:00
 那就是用2楼的代码
7楼
ddlzq 发表于:2010/5/31 10:39:00
好的,谢谢,其码有解决办法,我把列名都写代码里,谢谢狐爸了,图片点击可在新窗口打开查看
8楼
狐狸爸爸 发表于:2010/5/31 10:42:00
 也可以用序号的,你仔细想想,自己写一下。
共8 条记录, 每页显示 10 条, 页签: [1]

Copyright © 2000 - 2018 foxtable.com Tel: 4000-810-820 粤ICP备11091905号

Powered By Dvbbs Version 8.3.0
Processed in .02100 s, 2 queries.