以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]索引超出范围 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=47442) |
-- 作者:zouxinhao -- 发布时间:2014/3/10 16:10:00 -- [求助]索引超出范围 Dim ydbm As WinForm.TextBox = Forms("移动信息").Controls("移动编码") Dim ddbm As WinForm.TextBox = Forms("移动信息").Controls("订单编码") Dim adddr As DataRow =DataTables("移动主表").AddNew Dim bz As WinForm.TextBox = Forms("移动信息").Controls("备注") Dim kclx As WinForm.ComboBox = Forms("移动信息").Controls("库存类型") Dim gc As WinForm.ComboBox = Forms("移动信息").Controls("工厂") Dim kcd As WinForm.ComboBox = Forms("移动信息").Controls("库存地") Dim pjh As WinForm.TextBox = Forms("移动信息").Controls("票据号") Dim pjlx As WinForm.TextBox = Forms("移动信息").Controls("票据类型") Dim ydlx As WinForm.ComboBox = Forms("移动信息").Controls("移动类型") Dim dr As DataRow adddr("票据号")=pjh.text adddr("票据类型")=pjlx.text adddr("移动类型")=ydlx.text adddr("备注")=bz.text Dim dd As New List(Of String) dd.add("生产订单") dd.add("采购订单") dd.add("委外订单") dd.add("销售订单") Dim str As String Dim st As String Select Case ydbm.text Case "160" str="销售订单" st="订单产品表" Case "161" str="销售订单" st="订单产品表" Case "162" str="采购订单" st="采购订单子表" Case "163" str="采购订单" st="采购订单子表" Case "164" str="委外订单" st="委外订单子表" Case "165" str="委外订单" st="委外订单子表" Case "166" str="委外订单" st="委外订单主表" Case "167" str="委外订单" st="委外订单主表" Case "168" str="生产订单" st="生产订单子表" Case "169" str="生产订单" st="生产订单子表" Case "170" str="生产订单" st="生产订单主表" Case "171" str="生产订单" st="生产订单主表" End Select dd.Remove(str) If dd.Contains("销售订单")=False Then Tables("移动主表.移动子表").Cols.Remove("采购订单","委外订单","生产订单") End If If dd.Contains("采购订单")=False Then Tables("移动主表.移动子表").Cols.Remove("销售订单","委外订单","生产订单") End If If dd.Contains("委外订单")=False Then Tables("移动主表.移动子表").Cols.Remove("采购订单","销售订单","生产订单") End If If dd.Contains("生产订单")=False Then Tables("移动主表.移动子表").Cols.Remove("采购订单","委外订单","销售订单") End If Dim bs As DataRow = DataTables("移动类型").Find("移动编码=\'" & ydbm.Text & "\'") For Each dr In DataTables(st).Select(str & "号=\'" & ddbm.Text & "\'") Dim r As Row = Tables("移动主表.移动子表").AddNew r("物料编码")=dr("物料编码") r("库存状态")= kclx.Text r("移动数量")=dr("订单数量")-dr("入库数量") r("单价")=dr("单价") r("币种")="RMB" r(str)=ddbm.text r("工厂")=gc.Text r("库存地")=kcd.Text r("标识")=bs("移动标识") Next |
-- 作者:zouxinhao -- 发布时间:2014/3/10 16:11:00 -- 以上代码说索引超出范围是什么意思? |
-- 作者:Bin -- 发布时间:2014/3/10 16:14:00 -- 建议您用这个方法: http://www.foxtable.com/help/topics/1485.htm 先找出是哪一行出错,然后分析原因,搞不定,贴出代码,并告诉我们运行到哪一行出错,以及错误提示。
|
-- 作者:zouxinhao -- 发布时间:2014/3/10 16:16:00 -- .NET Framework 版本:2.0.50727.3655 Foxtable 版本:2014.3.7.1 错误所在事件:窗口,过帐界面,AfterLoad 详细错误信息: 索引超出范围。必须为非负值并小于集合大小。 参数名: index 这是错误信息 |
-- 作者:Bin -- 发布时间:2014/3/10 16:17:00 -- 找出错误位置先. |
-- 作者:zouxinhao -- 发布时间:2014/3/10 16:29:00 -- If dd.Contains("销售订单")=False Then Tables("移动主表.移动子表").Cols.Remove("采购订单","委外订单","生产订单") End If If dd.Contains("采购订单")=False Then Tables("移动主表.移动子表").Cols.Remove("销售订单","委外订单","生产订单") End If If dd.Contains("委外订单")=False Then Tables("移动主表.移动子表").Cols.Remove("采购订单","销售订单","生产订单") End If If dd.Contains("生产订单")=False Then Tables("移动主表.移动子表").Cols.Remove("采购订单","委外订单","销售订单") End If |
-- 作者:zouxinhao -- 发布时间:2014/3/10 16:30:00 -- 这里出问题了 |
-- 作者:Bin -- 发布时间:2014/3/10 16:35:00 -- 这个不应该会出错啊,上个例子我分析分析看看. |
-- 作者:Bin -- 发布时间:2014/3/10 16:35:00 -- 你再精确定位一下 看看到底是哪一句出错 |
-- 作者:zouxinhao -- 发布时间:2014/3/10 16:41:00 -- If dd.Contains("销售订单")=False Then End If 运行这句代码时出错了 |