Foxtable(狐表)用户栏目专家坐堂 → [求助] 急


  共有2831人关注过本帖树形打印复制链接

主题:[求助] 急

帅哥哟,离线,有人找我吗?
sanny
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:799 积分:5921 威望:0 精华:0 注册:2018/11/3 8:24:00
[求助] 急  发帖心情 Post By:2021/12/23 21:42:00 [只看该作者]


老师,程序运行时出现如下错误,以前都没有问题的,是什么问题 ?

.NET Framework 版本:4.0.30319.42000
Foxtable 版本:2021.5.29.1
错误所在事件:自定义函数,sumChild
详细错误信息:
调用的目标发生了异常。
索引超出了数组界限。



 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107880 积分:548763 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/12/23 21:46:00 [只看该作者]

函数代码发上来看看呀。提示索引有问题,一般是数据问题引起的

 回到顶部
帅哥哟,离线,有人找我吗?
sanny
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:799 积分:5921 威望:0 精华:0 注册:2018/11/3 8:24:00
  发帖心情 Post By:2021/12/23 22:00:00 [只看该作者]

老师,如下,用了很长时间了,以前都没有问题,就这几天出现了。

Dim pn As String = args(0)
Dim qty As String = args(1)
Dim idx As Decimal = args(8)
Dim dic1 = vars("dic1")
Dim dic2 = vars("dic2")
'Dim dic3 = vars("dic3")
Dim dic4 = vars("dic4")
Dim m1 As Decimal = args(9)
For Each dr As DataRow In  DataTables("BOM").Select("FNumber='" & pn & "'")
    Dim ndr As DataRow = DataTables("物料需求").AddNew
    ndr("PartNo") = dr("PN")
    ndr("ETD") = args(3)
    ndr("批号") = args(4)
    ndr("company") = args(10)
    ndr("SOP") = args(11)
   ndr("BOM") = args(12)
ndr("ETA") = args(13)
ndr("CustomerPO") = args(14)
ndr("EndCustomer") = args(15)
ndr("ShippingTerms") = args(16)
ndr("Project") = args(17)
ndr("RequestETA") = args(18)
ndr("ConfirmedETA") = args(19)
ndr("GSS") = args(20)

   ' ndr("PartDesc") = dr("FName1")
    ndr("Demand") = dr("FQty") * qty
    ndr("层次") = "第" & idx & "层"
    Dim mq As Decimal = m1 * dr("FQty")
    Dim m2 As Decimal = args(6)+  args(7) - qty
    Dim flag = args(5) ' And m1 < 0
   
    If m1 <> 0 Then
    If dic1.ContainsKey(ndr("PartNo")) Then
        If m1 < 0 Then
            Dim aa As Decimal = mq*-1
            If dic1(ndr("PartNo")) >= aa Then
                ndr("Stock") = aa
ndr("库存剩余数量")= aa
            Else
                ndr("Stock") = dic1(ndr("PartNo"))
                ndr("库存剩余数量")= dic1(ndr("PartNo"))
            End If
            flag = False
        ElseIf dic1(ndr("PartNo")) > 0 Then
            ndr("Stock") = dic1(ndr("PartNo"))
ndr("库存剩余数量")= dic1(ndr("PartNo"))
        End If
        dic1(ndr("PartNo")) -= ndr("Stock")
ndr("库存剩余数量")= dic1(ndr("PartNo"))
        If dic1(ndr("PartNo"))< 0 Then dic1(ndr("PartNo")) = 0
    End If
    End If
    If dic2.ContainsKey(ndr("PartNo")) Then
        If flag = True And m1 > 0 Then
            Dim qty1 = ndr("Demand") - ndr("stock")
            If qty1 > 0 Then
                If dic2(ndr("PartNo")) >= qty1 Then
                    ndr("QC") = qty1
                    dic2(ndr("PartNo")) -= ndr("QC")
                    ndr("QC剩余数量") = dic2(ndr("PartNo"))
                ElseIf dic2(ndr("PartNo")) > 0 Then
                    ndr("QC") = dic2(ndr("PartNo"))
                    dic2(ndr("PartNo")) -= ndr("QC")
                    ndr("QC剩余数量") = dic2(ndr("PartNo"))
                End If
            End If
        ElseIf m1 < 0 Then
                Dim aa As Decimal = mq*-1
                If dic2(ndr("PartNo")) > aa - ndr("Stock")
                    ndr("QC") = aa - ndr("Stock")
 ndr("QC剩余数量") = dic2(ndr("PartNo"))
                Else
                    ndr("QC") = dic2(ndr("PartNo"))
 ndr("QC剩余数量") = dic2(ndr("PartNo"))
                End If
                dic2(ndr("PartNo")) -= ndr("QC")
 ndr("QC剩余数量") = dic2(ndr("PartNo"))
        End If
    End If
   
   
   
    'If flag = True And m1 > 0 Then
       
       ' If dic3.ContainsKey(ndr("PartNo")) Then
        '    Dim qty2 = ndr("Demand") - ndr("stock") - ndr("QC")
         '   If qty2 > 0 Then
          '      If dic3(ndr("PartNo")) >= qty2 Then
           '         ndr("purchasingorder") = qty2
                   
                   
            '        dic3(ndr("PartNo")) -= ndr("purchasingorder")
             '   ElseIf dic3(ndr("PartNo")) > 0 Then
              '      ndr("purchasingorder") = dic3(ndr("PartNo"))
               '     dic3(ndr("PartNo")) -= ndr("purchasingorder")
               ' End If
           ' End If
           
       ' End If
    'End If
   
    If flag  = True AndAlso m1 > 0 Then
        ndr("MissingQty") =  ndr("Stock")+ndr("QC") -ndr("Demand")+args(6)*dr("FQty")
    Else
        If m1 < 0 AndAlso mq*-1 > ndr("Stock")+ndr("QC")
            ndr("MissingQty") = mq + (ndr("Stock")+ndr("QC"))
        Else
            ndr("MissingQty") = 0
        End If
       
    End If
    If dic4.ContainsKey(ndr("PartNo")) = False Then
        dic4.add(ndr("PartNo"), ndr("MissingQty"))
    Else
        dic4(ndr("PartNo")) += ndr("MissingQty")
    End If
    ndr("SumMissing") = dic4(ndr("partno"))
    Functions.Execute("sumChild",dr("PN"),ndr("Demand"), args(2), args(3),args(4),flag, ndr("Stock"),ndr("QC"),idx+1,ndr("MissingQty"),args(10),args(11),args(12),args(13),args(14),args(15),args(16),args(17),args(18),args(19),args(20))
Next

 回到顶部
帅哥哟,离线,有人找我吗?
lihe60
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:6849 积分:43345 威望:0 精华:0 注册:2009/3/2 14:07:00
  发帖心情 Post By:2021/12/23 22:40:00 [只看该作者]

要发项目文件的

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107880 积分:548763 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/12/23 22:43:00 [只看该作者]

这个要靠自己去调试了,看是哪一行出错。可能原因

1、没有传入足够的参数数量,检查一下调用这个函数的地方
2、往"物料需求"表赋值的时候,触发了表事件,表事件有问题

 回到顶部