以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]规则错误的动态提示  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=34809)

--  作者:chnfo
--  发布时间:2013/6/16 15:07:00
--  [求助]规则错误的动态提示
本意是这样的。
表C中有一列Code,将来要构造树用,所以,它满足用“."分隔开的数据规则,例如1, 1.1 ,1.1.2, 1.2等等。
但难免有输入错误的时候,例如在没有1.5这个编号的时候,直接输了1.5.8,就提示用户的编号规则有错误,要重新输入。

这里面有两种情况
A,父节点的编号调整,如原来编号为1.5的改成了1.8,那么原来的1.5.1 ,1.5.N就需要提示规则有错误
B,子节点的编号调整或增加,如在没有1.9节点的情况下,输入了1.9.1或者将原来的某个节点改成了1.9.N,则需要提示用户规则有错误。

调试了一番,有点问题。
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:编号规则错误动态提示.table

请各位狐神指教。 

--  作者:lsy
--  发布时间:2013/6/16 22:43:00
--  

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:编号规则错误动态提示.table

[此贴子已经被作者于2013-6-17 7:09:57编辑过]

--  作者:chnfo
--  发布时间:2013/6/20 17:46:00
--  
很感谢。不过我自己解决它了。

Select Case e.Col.Name
    Case "Code"
        For Each r As Row In e.Table.Rows
            Dim Values() As String = r("Code").split(".")
            If Values.Length = 1 Then
                r.DataRow.SetError("Code","")
            Else
                Dim cscode As String = ""  \'个人认为问题出在这里,因为下一次遍历的时候,它会已经存在值。开始遍历的时候给它赋空值,就可以了。
                For i  As Integer =  0 To Values.Length - 2
                    cscode = CSCode & "." & Values(i)
                    Dim cs As Integer = e.Table.FindRow(" Code = \'" & CSCode.trim(".") & "\'",e.Table.Position + 1 ,True )
                    If cs < 0 Then
                        r.DataRow.SetError("Code", "上级节点编号规则有误,请检查重新输入!")
                        Exit For
                    Else
                        r.DataRow.SetError("Code","")
                    End If
                Next
            End If
        Next
End Select