Foxtable(狐表)用户栏目专家坐堂 → [求助]单击逻辑列其值不变


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

主题:[求助]单击逻辑列其值不变

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


加好友 发短信
等级:婴狐 帖子:38 积分:365 威望:0 精华:0 注册:2012/10/31 11:49:00
[求助]单击逻辑列其值不变  发帖心情 Post By:2012/11/7 16:45:00 [只看该作者]

有一逻辑列单击“钩”不上,后在代码窗口中加入Output.show(1)到Output.show(3),打开命令窗口只再单击逻辑列,命令窗口只显示1和3,很显然无论怎样单击单元格,逻辑列值均为“False",请高手帮忙。对了,以前我没有升级到2012最新版时是正常的。
图片点击可在新窗口打开查看此主题相关图片如下:命令窗口.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:逻辑列.png
图片点击可在新窗口打开查看

以下是d "prepereedit"事件中的代码。

Output.Clear()

If e.Col.Name = "分部审批" Then
   
    If User.Group <> "管理组"  Then  '只有管理组成员才能审批
        e.Cancel = True
    End If
    Output.Show(1)
    If e.Row("分部审批") = True Then '如果此行已经审批了,则禁止修改
        e.Cancel = False
        e.Row("审批时间") =  Date.Today.Now()
        e.Row("审批人") = User.Name
        Output.Show(2)
    Else
        e.Row("审批时间") = Nothing
        e.Row("审批人") = " "
        Output.Show(3)
    End If
End If
e.Cancel = True


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


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By:2012/11/7 16:51:00 [只看该作者]

 楼主,这个很明显了吧。

 e.Cancel = True 以后,这一列就不能被编辑了,你取出最后一行试一下……

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


加好友 发短信
等级:婴狐 帖子:38 积分:365 威望:0 精华:0 注册:2012/10/31 11:49:00
  发帖心情 Post By:2012/11/7 17:09:00 [只看该作者]

谢谢!的确是那个问题。但问题的关键是这表我采用独占式编辑,有专门的输入窗口,必须把审批后的各行设置成不能编辑,有什么解决办法没有?


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


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By:2012/11/7 18:05:00 [只看该作者]

 那我就不懂了,你说你有一个专门的输入窗口,那就不能改变值么?楼主的疑问我还未明白。

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


加好友 发短信
等级:婴狐 帖子:38 积分:365 威望:0 精华:0 注册:2012/10/31 11:49:00
  发帖心情 Post By:2012/11/8 11:06:00 [只看该作者]

意思是经逻辑列“审批”后的就不能编辑。那个专门的输入窗口是要靠“DoubleClick”触发的,只有表格设置成不能编辑才能“DoubleClick”,否则一单击就直接进入单元格,无法加载“输入窗口”了。


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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2012/11/8 11:14:00 [只看该作者]

我也没有看明白你的问题。

你最好提炼出问题,做成一个简单的例子后发上来,然后说明你需要的是什么,设置了什么代码,现在卡在那里。

[此贴子已经被作者于2012-11-8 11:13:53编辑过]

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


加好友 发短信
等级:婴狐 帖子:38 积分:365 威望:0 精华:0 注册:2012/10/31 11:49:00
  发帖心情 Post By:2012/11/8 11:55:00 [只看该作者]


图片点击可在新窗口打开查看此主题相关图片如下:表.png
图片点击可在新窗口打开查看

就这样一个表,采用窗口独占方式录入。希望审批后的行,除审批逻辑列单元格外均不能修改。审批列只有授权人才能修改,审批后在后面单元格添加上审批时间和审批人(这个现在没问题了)。代码如下:

以下是d "prepereedit"事件中的代码。

Output.Clear()

If e.Col.Name = "分部审批" Then

If User.Group <> "管理组" Then '只有管理组成员才能审批
e.Cancel = True
End If
Output.Show(1)
If e.Row("分部审批") = True Then '如果此行已经审批了,则禁止修改
e.Cancel = False
e.Row("审批时间") = Date.Today.Now()
e.Row("审批人") = User.Name
Output.Show(2)
Else
e.Row("审批时间") = Nothing
e.Row("审批人") = " "
Output.Show(3)
End If
End If
e.Cancel = True

 

 

现在的问题是,如果不加最后的e.Cancel = True录入窗口又不能加载。加了这条语句,逻辑列又无法更改。以下是在DoubleClick事件中的代码:

e.Row.Load() '重新加载此行
If e.Row.IsNull("编辑者") = False AndAlso e.Row("编辑者")  <>  User.Name Then '判断是否有人编辑
    MessageBox.Show(e.Row("编辑者") & "正在编辑此行!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
Else
    e.Row("编辑者") = User.Name '设置编辑者列为当前用户
    e.Row.Save() '并立即保存
    If e.Row("分部审批") = False Then
        Forms("加班统计").Open() '打开编辑窗口
    End If
End If


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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2012/11/8 12:10:00 [只看该作者]

PrePareEdit事件改为:

 

If e.Col.Name = "分部审批" Then
    If User.Group <> "管理组" Then '只有管理组成员才能审批
        e.Cancel = True
    Else
        If e.Row("分部审批") = True Then '如果此行已经审批了,则禁止修改
            e.Cancel = False
            e.Row("审批时间") = Date.Today.Now()
            e.Row("审批人") = User.Name
        Else
            e.Row("审批时间") = Nothing
            e.Row("审批人") = " "
        End If
    End If
Else
    e.Cancel = True
End If


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


加好友 发短信
等级:婴狐 帖子:38 积分:365 威望:0 精华:0 注册:2012/10/31 11:49:00
  发帖心情 Post By:2012/11/8 13:55:00 [只看该作者]

谢谢狐爸,搞定!


 回到顶部