以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]请问如何解决这样的错误提示!  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=65757)

--  作者:rophy0952
--  发布时间:2015/3/22 14:00:00
--  [求助]请问如何解决这样的错误提示!
表属性的“datacolchanged”事件中的如下代码,在执行的过程中提示:“索引超出了数组界限。”,试着弹出结果,与实际想要的一致,但就不知什么原因会出现这个错误提示?请指教,谢谢!

If e.DataCol.name = "规格" Then
    If e.DataRow.Isnull("规格") = True Then
        e.DataRow("卷芯宽度") = Nothing
    Else
        e.DataRow("卷芯宽度") = e.DataRow("规格").Split("*")(1)
    End If
End If



--  作者:有点甜
--  发布时间:2015/3/22 14:07:00
--  
If e.DataCol.name = "规格" Then
    If e.DataRow.Isnull("规格") = True OrElse e.DataRow("规格").Split("*") < 2 Then
        e.DataRow("卷芯宽度") = Nothing
    Else
        e.DataRow("卷芯宽度") = e.DataRow("规格").Split("*")(1)
    End If
End If

--  作者:rophy0952
--  发布时间:2015/3/22 14:26:00
--  
我的规格是这样的“3.5*14*1.5”,想取两个*号中间的数(14),按照上面代码修改后,卷芯宽度值为空
--  作者:有点甜
--  发布时间:2015/3/22 14:28:00
--  

 代码没问题,重置一下你的规格列。

 

 如果还不行,就是你数据有问题


--  作者:rophy0952
--  发布时间:2015/3/22 14:32:00
--  
又出现这样的提示“没有为 类型“String()” 和 类型“Integer” 定义运算符“<”。”
--  作者:有点甜
--  发布时间:2015/3/22 14:33:00
--  
If e.DataCol.name = "规格" Then
    If e.DataRow.Isnull("规格") = True OrElse e.DataRow("规格").Split("*").Length < 2 Then
        e.DataRow("卷芯宽度") = Nothing
    Else
        e.DataRow("卷芯宽度") = e.DataRow("规格").Split("*")(1)
    End If
End If

--  作者:rophy0952
--  发布时间:2015/3/22 15:09:00
--  
刚才用排除法将所有代码屏蔽掉,逐一排除,发现是在执行下面的代码时,出现的错误提示:“索引超出了数组界限。”,该如何处理呢,谢谢!
Select Case e.DataCol.name
    Case "不良品_只数","不良品_毛重","卷芯单重"
        Dim dr As DataRow = e.DataRow
        dr("不良品_净重") = dr("不良品_毛重")-dr("不良品_只数")*dr("卷芯单重")
        dr.save
End Select

--  作者:有点甜
--  发布时间:2015/3/22 15:12:00
--  

1、去检测此列名 不良品_净重 对应的Datacolchanged代码;

 

2、去检测beforesavedatarow事件


--  作者:rophy0952
--  发布时间:2015/3/22 15:24:00
--  
有这段代码,但还是注释的状态呀?beforesavedatarow事件中无代码
\'Select Case e.DataCol.name
    \'Case "不良品_净重","单边_不良净重"
        \'Dim r As Row = Tables("核数表").Current
        \'Tables("核数明细表").current.save
        \'r("不良品_净重") = DataTables("核数明细表").SQLCompute("sum(不良品_净重)","流水号 = \'" & e.DataRow("流水号") & " \'") + DataTables("核数明细表").SQLCompute("sum(单边_不良净重)","流水号 = \'" & e.DataRow("流水号") & " \'")
        \'r.save
\'End Select
[此贴子已经被作者于2015/3/22 15:24:48编辑过]

--  作者:有点甜
--  发布时间:2015/3/22 15:26:00
--  

 1、加入msgbox看是哪里出问题;

 

 2、不会排查,就请上传具体例子