以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  代码有错,如何改正?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=193007)

--  作者:lin98
--  发布时间: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

--  作者:有点蓝
--  发布时间:2024/8/9 9:15:00
--  
编辑权限控制到PrepareEdit事件处理:http://www.foxtable.com/webhelp/topics/0605.htm

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

--  作者:lin98
--  发布时间: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

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

--  作者:有点蓝
--  发布时间: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
--  发布时间: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

--  作者:有点蓝
--  发布时间: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
--  发布时间: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

--  作者:有点蓝
--  发布时间:2024/8/9 11:54:00
--  
回7楼,日期型要使用【= Nothing】判断,不使用【Is Nothing】,具体请帮助搜索“空值”。建议还是使用isnull