以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  参数名: length  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=188201)

--  作者:edisontsui
--  发布时间:2023/9/7 10:58:00
--  参数名: length
If e.DataCol.name = "票号" Then
    If e.DataRow.isnull("票号") = False Then
        If e.DataRow("特采单") = False Then
            If e.DataRow("票号") = "" Then
                e.DataRow("生产票号") = Nothing
            Else
                If e.DataRow("票号").startswith("HL") Then
                    e.DataRow("生产票号") = e.DataRow("票号").SubString(2, 4) & "9260000"
                Else
                    If e.DataRow("票号").Length = 10 Then
                       \'e.DataRow("票号") = "0" & e.DataRow("票号") \'此句删除以保留当初输入的格式
                        e.DataRow("生产票号") = "0" & e.DataRow("票号")
                    End If
                    If e.DataRow("票号").Length = 11 Then
                        e.DataRow("生产票号") = e.DataRow("票号")
                    End If 
                    If e.DataRow("票号").Length = 13 Then
                        If dr("票号").startsWith("920FT") OrElse dr("票号").startsWith("926FT") Then
                            dr("生产票号") = dr("票号").Substring(5, 4) & dr("票号").Substring(0, 3) & dr("票号").Substring(9, 4)
                        End If
                    End If
                End If
            End If
        Else
            e.DataRow("生产票号") = e.DataRow("票号")
        End If
        e.DataRow.save
    end if
End If

上面那段 datacolchanged 代码,老是出现如下提示:

调用的目标发生了异常。
索引和长度必须引用该字符串内的位置。
参数名: length

应该就是红色那部分问题,因为我去除那段,就不会发生提示了。但是我看不出什么问题来。谢谢。



--  作者:有点蓝
--  发布时间:2023/9/7 11:09:00
--  
红色没有问题,倒是这里有问题

                If e.DataRow("piao号").startswith("HL") Then
if e.DataRow("piao号").length > 6
                    e.DataRow("生产piao号") = e.DataRow("piao号").SubString(2, 4) & "9260000"
end if
                Else

另外"生产piao号"后又触发了其它什么代码?


--  作者:edisontsui
--  发布时间:2023/9/7 13:27:00
--  
果然 "生产票号" 触发的其他代码有问题(我加了对字符长度的判断后就没事了)。