Foxtable(狐表)用户栏目专家坐堂 → 代码有错,如何改正?


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

主题:代码有错,如何改正?

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


加好友 发短信
等级:六尾狐 帖子:1360 积分:9034 威望:0 精华:0 注册:2020/11/4 22:15:00
代码有错,如何改正?  发帖心情 Post By:2024/8/9 8:59:00 [只看该作者]

需求:如果"日期"为空,列一,列二,列三不可编辑,否则,不为空,为编辑?如果列多比10多列,如何更简洁写?

''Dim dr As DataRow = e.DataRow
''Select Case e.DataCol.Name
''    Case "日期"
''        If dr.IsNull("日期") Then
''            dr("列一").Cancel = True
''            dr(列二").Cancel = True
''            dr("列三").Cancel = True
''        Else
''            dr("列一").Cancel = False
''            dr("列二").Cancel = False
''            dr("列三").Cancel = False 
            
            
''        End If
''End Select

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110867 积分:564285 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2024/8/9 9:15:00 [只看该作者]

编辑权限控制到PrepareEdit事件处理:http://www.foxtable.com/webhelp/topics/0605.htm

列名如果有规律,比如都是【列】字开头,判断控制【列】字开头的列即可。
列名如果没有规律,只能是把所有列名都一一列出来判断

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


加好友 发短信
等级:六尾狐 帖子:1360 积分:9034 威望:0 精华:0 注册:2020/11/4 22:15:00
  发帖心情 Post By:2024/8/9 10:06:00 [只看该作者]

If e.Col.Name = "日期" AndAlso e.Row.IsNull("日期") = False Then
    e.Row("列一").Cancel = True
    e.Row("列二").Cancel = True
    e.Row("列三").Cancel = True
End If

执行后,无法实现需求
需求:如果"日期"为空,列一,列二,列三不可编辑,否则,不为空,为编辑?

 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110867 积分:564285 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2024/8/9 10:22:00 [只看该作者]

IsNull的帮助认真看看:http://www.foxtable.com/webhelp/topics/0595.htm

PrepareEdit再认真看看,帮助里是怎么设置不可编辑的:http://www.foxtable.com/webhelp/topics/0605.htm

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


加好友 发短信
等级:六尾狐 帖子:1360 积分:9034 威望:0 精华:0 注册:2020/11/4 22:15:00
  发帖心情 Post By:2024/8/9 11:02:00 [只看该作者]

If Tables("窗口_Table2").Current.IsNull("日期") Then
  e.Cancel = True,执行后,是整行,需求:如果"日期"为空,列一,列二,列三不可编辑,否则,不为空,为编辑?看帮助还不太理解,请帮处理,谢谢

'    e.Row("期初_数量").Cancel = True
'    e.Row("入库_数量").Cancel = True
'    e.Row("出库_数量").Cancel = True   
End If

 回到顶部
帅哥,在线噢!
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110867 积分:564285 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2024/8/9 11:12:00 [只看该作者]

让您看IsNull的用法,不是让你照抄IsNull的全部代码。看帮助要学会理解帮助讲解的知识点的处理问题的逻辑

If e.Col.Name = "列一" orelse e.Col.Name = "列2" orelse e.Col.Name = "列3
if e.Row.IsNull("日期") Then
    e.Cancel = True
End If
End If

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


加好友 发短信
等级:幼狐 帖子:73 积分:1159 威望:0 精华:0 注册:2017/3/27 20:43:00
  发帖心情 Post By:2024/8/9 11:31:00 [只看该作者]

PrepareEdit事件:
Select Case e.Col.Name
    Case "第一列", "第二列", "第三列" '要设置的列名
        If e.Row("日期") Is Nothing Then
            e.Cancel = True
        End If
End Select

 回到顶部
帅哥,在线噢!
有点蓝
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110867 积分:564285 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2024/8/9 11:54:00 [只看该作者]

回7楼,日期型要使用【= Nothing】判断,不使用【Is Nothing】,具体请帮助搜索“空值”。建议还是使用isnull

 回到顶部