以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  这段代码为什么老是报错  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=122098)

--  作者:rjh4078
--  发布时间:2018/7/18 22:01:00
--  这段代码为什么老是报错

.NET Framework 版本:2.0.50727.8933
Foxtable 版本:2018.7.9.1
错误所在事件:窗口,付款单,Button2,Click
详细错误信息:
索引超出了数组界限。

messagebox.show("1")
DataTables("付款明细").find("来源单据=\'应付对账单\' and 付款单号=\'" & .current("付款单号") & "\' and ID=\'" & r("_identify") & "\'")
messagebox.show("2")


1能弹出 2不行 非常奇怪 找了很久找不到问题 字符串拼接没问题啊


--  作者:rjh4078
--  发布时间:2018/7/18 22:02:00
--  
With Tables("付款单")
    If .current IsNot Nothing Then
        If Tables("付款单_t1").GetCheckedRows.count>0 Then
            MessageBox.show("1")
            For Each r As Row In Tables("付款单_t1").GetCheckedRows
MessageBox.show("2")
                Dim dr As DataRow=DataTables("付款明细").find("来源单据=\'应付对账单\' and 付款单号=\'" & .current("付款单号") & "\' and ID=\'" & r("_identify") & "\'")
MessageBox.show("3")
                If  dr Is Nothing Then

1 2能弹出 3之前就报错

--  作者:有点甜
--  发布时间:2018/7/18 22:06:00
--  

单纯看代码,没有任何问题。

 

你试试贴出完整代码。


--  作者:rjh4078
--  发布时间:2018/7/19 6:18:00
--  
With Tables("付款单")
    If .current IsNot Nothing Then
        If Tables("付款单_t1").GetCheckedRows.count>0 Then
            MessageBox.show("1")
            For Each r As Row In Tables("付款单_t1").GetCheckedRows
MessageBox.show("2")
                Dim dr As DataRow=DataTables("付款明细").find("来源单据=\'应付对账单\' and 付款单号=\'" & .current("付款单号") & "\' and ID=\'" & r("_identify") & "\'")
MessageBox.show("3")
                If  dr Is Nothing Then
                    
                    Dim rr As Row=Tables("付款单.付款明细").AddNew
                    rr("应付对账单号")=r("应付对账单号")
                    rr("来源单据")="应付对账单"
                    rr("记账单据")=r("来源单据")
                    rr("ID")=r("_identify")
                    rr("待核销金额")=r("对账金额")-r("已核销金额")
                    rr("单号")=r("单号")
                    rr("物料名称")=r("物料名称")
                Else
                    MessageBox.show("同一供应商付款明细不能在同一付款单分开编辑!!","提示!")
                    Return
                End If
            Next
            e.Form.Controls("TabControl2").Selectedindex=0
        Else
            MessageBox.show("没有选中任何记录!")
        End If
    End If
End With

--  作者:blackzhu
--  发布时间:2018/7/19 8:53:00
--  
 and ID=\'" & r("_identify") & "\'")  你这个是数值的吧,数值当字符串在处理条件?
--  作者:有点甜
--  发布时间:2018/7/19 9:05:00
--  

肯定不是你标记的地方有错。假如你把代码改成

 

Dim dr As DataRow = Nothing

 

然后执行,是否还会报错?


--  作者:rjh4078
--  发布时间:2018/7/19 9:27:00
--  
以下是引用有点甜在2018/7/19 9:05:00的发言:

肯定不是你标记的地方有错。假如你把代码改成

 

Dim dr As DataRow = Nothing

 

然后执行,是否还会报错?


代码没问题 我把bin文件夹删除了竟然好了