以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  提示调用目标异常,lenth长度错误,用substring取左4位字符时(完美解决)  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=34167)

--  作者:zerov
--  发布时间:2013/6/1 7:58:00
--  提示调用目标异常,lenth长度错误,用substring取左4位字符时(完美解决)
下面这段代码用于取合同编号的左4位字符,添加合同编号时能正确取出,但重置或删除合同编号时出错
If e.DataCol.Name = "合同编号" Then \'发生变化的是项目名称吗?
    Dim s As String = e.DataRow("合同编号")
    If s IsNot Nothing Then
        e.DataRow("年份")=s.SubString(0,4)
    Else
        e.DataRow("年份")=Nothing
    End If
End If

错误提示:

图片点击可在新窗口打开查看此主题相关图片如下:添加相同键的项目.jpg
图片点击可在新窗口打开查看
 
不知何原因
[此贴子已经被作者于2013-6-1 14:07:41编辑过]

--  作者:lsy
--  发布时间:2013/6/1 8:24:00
--  
一删除,就没字符串长度了,重置的话,空值行也会引发事件,从哪取4位?
[此贴子已经被作者于2013-6-1 8:25:34编辑过]

--  作者:zerov
--  发布时间:2013/6/1 9:31:00
--  回复:(lsy)一删除,就没字符串长度了,重置的话,空...
所以,考虑到这种情况,加了一句:
 
Else
   e.datarow("年份")=Nothing

--  作者:jspta
--  发布时间:2013/6/1 9:42:00
--  

If s IsNot Nothing Then

 

这句话有问题,改为if s > "" then  


--  作者:程兴刚
--  发布时间:2013/6/1 10:13:00
--  
If s IsNot Nothing Then改为: If s > "" and len(s) > 3 Then
--  作者:zerov
--  发布时间:2013/6/1 14:07:00
--  
谢谢程版和JSPTA!解决。