以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  关于字符串长度  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=40271)

--  作者:东坡一剑
--  发布时间:2013/9/13 18:36:00
--  关于字符串长度

为了根据产品的代码生成其对应的相关产品信息,我在“货品信息”表的datacolchanged事件中编写了如下代码:

 

If e.NewValue = Nothing Then
    Return
End If
Dim dr As DataRow
Dim hh,xl,xb,jb,nf,pp As String
Dim v,i As Integer
hh = e.NewValue
For i = 0 To hh.length - 1
    If Char.IsDigit(hh.Substring(i,1)) Then
        v = i
        Exit For
    End If
Next

xl = hh.Substring(0,v)
nf = hh.Substring(v,2)
xb = hh.Substring(v + 2,1)
jb = hh.Substring(v + 3,1)

 

dr = DataTables("系列信息").Find("代码 =\'" & xl & "\'")
If dr IsNot Nothing Then
    xl = dr("系列")
    pp = dr("品牌")
End If

MessageBox.Show(1)

dr = DataTables("性别信息").Find("代码 =\'" & xb & "\'")
If dr IsNot Nothing Then
    xb = dr("性别")
End If

MessageBox.Show(2)

dr = DataTables("季别信息").Find("代码 =\'" & jb & "\'")
If dr IsNot Nothing Then
    jb = dr("季别")
End If

MessageBox.Show(3)

dr = e.DataRow
dr("年份") = nf
MessageBox.Show(3.1)

dr("季别") = jb

MessageBox.Show(3.2)
dr("性别") = xb

MessageBox.Show(3.3)
dr("系列") = xl

MessageBox.Show(3.4)
dr("品牌") = pp

 

运行到MessageBox.Show(3)以后出现如下错误提示:

 


图片点击可在新窗口打开查看此主题相关图片如下:2013-09-13 18 23 26.png
图片点击可在新窗口打开查看

 

叉掉错误提示窗口,运行到MessageBox.Show(3.1),dr("年份") = nf 正确生成,再次出现同样的错误提示。

叉掉错误提示窗口,运行到MessageBox.Show(3.2),dr("季别") = jb 正确生成,又一次出现同样的错误提示,以此类推,直至结束。

 

不知道问题出在哪里,请教各位!

[此贴子已经被作者于2013-9-13 18:44:20编辑过]

--  作者:程兴刚
--  发布时间:2013/9/13 19:02:00
--  
datacolchanged事件首先要判断列名称,否则,e.NewValue 及其后面的代码在给表任意列变化后均被调用或执行,其次要判断控制,什么错误我想您应该明白了,自己动手改一改吧,您能行的!
--  作者:有点甜
--  发布时间:2013/9/13 19:17:00
--  
 你的 v = i (i可能是0 到 hh.length - 1)

 但你写有

xb = hh.Substring(v + 2,1)
jb = hh.Substring(v + 3,1)

 有v + 2, v + 3 自然是超过hh范围的。
[此贴子已经被作者于2013-9-13 19:17:23编辑过]

--  作者:东坡一剑
--  发布时间:2013/9/13 20:55:00
--  

感谢程兴刚,提醒得太对了!

我居然把这茬给忘了,简直弱智!


--  作者:程兴刚
--  发布时间:2013/9/13 21:25:00
--  
2楼控制=空值