以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  代码错误,谁能帮忙我看看吗?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=60712)

--  作者:affixed
--  发布时间:2014/11/29 16:33:00
--  代码错误,谁能帮忙我看看吗?
这段代码错误在哪里?提示:索引2不为负数,就是大于行数。

Dim Cols1() As String = {"登记号","计划号","物料ID","物料名称","物料名称日文","规格型号","请购数量","下单数量","含税单价","希望到货日期","供应商名"}
Dim Cols2() As String = {"orderQgDjh","orderQgJhh","orderItemID","orderItemName","orderItemNameJap","orderItemSPEC","orderSl","orderItemUp","orderdhTime","orderSup"}
For Each dr1 As Row In Tables("比价生单窗口_Table1").GetCheckedRows
    Dim result As DialogResult
    If result = False Then
        For i As Integer = 1 To Tables("比价生单窗口_Table1").Rows.Count
            Dim dr As Row
            dr = Tables("比价生单窗口_Table1").Rows(i)
            If dr("下单数量") > dr("剩余数量") Or dr("下单数量") < 0 Then
                messagebox.show("下单数量不能大于请购数量或小于\'0\'!")
            End If
        Next
    End If
    
    
    Dim dr2 As Row = Tables("orderList").AddNew()
    For i As Integer = 1 To Cols1.Length -1
        dr2(Cols2(i)) = dr1(Cols1(i))
    Next
Next

messagebox.show("订单已生成完毕!")

--  作者:狐狸爸爸
--  发布时间:2014/11/29 16:50:00
--  
你用这个,可以找出出错的代码是那一行。
--  作者:affixed
--  发布时间:2014/11/29 16:53:00
--  
狐爸,用哪个?
我也希望FT能想其他的编程软件一样,可以提示出错的具体位置。

--  作者:狐狸爸爸
--  发布时间:2014/11/29 16:54:00
--  

惭愧,是这个:

http://www.foxtable.com/help/topics/1485.htm

 


--  作者:狐狸爸爸
--  发布时间:2014/11/29 16:55:00
--  

其实我已经看出问题了,Cols1有11个元素,Cols2是10个。

所以下面的代码一定会出错:

 

For i As Integer = 1 To Cols1.Length -1

        dr2(Cols2(i)) = dr1(Cols1(i))
    Next

--  作者:affixed
--  发布时间:2014/11/29 17:05:00
--  
这个好似调试起来很麻烦,狐爸,下次更新时能否增加错误跟踪功能。
--  作者:狐狸爸爸
--  发布时间:2014/11/29 17:17:00
--  
嗯,看5楼