Foxtable(狐表)用户栏目专家坐堂 → 报错了,这是什么原因


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

主题:报错了,这是什么原因

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


加好友 发短信
等级:九尾狐 帖子:2234 积分:15284 威望:0 精华:0 注册:2015/7/18 10:10:00
报错了,这是什么原因  发帖心情 Post By:2015/10/28 14:15:00 [只看该作者]

.NET Framework 版本:2.0.50727.5485
Foxtable 版本:2015.10.26.1
错误所在事件:表,产品预算,DataColChanged
详细错误信息:
System.Reflection.TargetInvocationException: 调用的目标发生了异常。 ---> System.NullReferenceException: 未将对象引用设置到对象的实例。
   在 UserCode.DataColChanged(DataColEventArgs e)
   --- 内部异常堆栈跟踪的结尾 ---
   在 System.RuntimeMethodHandle._InvokeMethodFast(Object target, Object[] arguments, SignatureStruct& sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner)
   在 System.RuntimeMethodHandle.InvokeMethodFast(Object target, Object[] arguments, Signature sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner)
   在 System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean skipVisibilityChecks)
   在 System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
   在 Foxtable.DataTable.o0____o0(Object A_0, DataColumnChangeEventArgs A_1)

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/10/28 14:39:00 [只看该作者]

加上msgbox代码,确定一下是哪句代码前出错的。

 

贴出代码


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


加好友 发短信
等级:九尾狐 帖子:2234 积分:15284 威望:0 精华:0 注册:2015/7/18 10:10:00
  发帖心情 Post By:2015/10/28 14:46:00 [只看该作者]

Select Case e.DataCol.name
Case "物料编号","销售数量" ,"发生日期"
DataTables("生产计划物料需求").DataCols("物料编号").RaiseDataColChanged("销售预算单号= '" & e.DataRow("预算单号") & "'")
    If e.DataRow.Isnull("物料编号") = False AndAlso e.DataRow.Isnull("销售数量") = False  Then
        Dim dr1 As DataRow  = DataTables("物料档案").find("物料编号= '" & e.DataRow("物料编号") & "'")
        If dr1 Is Nothing Then
            MessageBox.show("输入物料编号错误或者您还没有在物料档案中建立这个物料编号的档案,请先建立后再使用","提示")
            Return
        Else
            Dim dr5 As DataRow = DataTables("产品预算").find("物料编号= '" & e.DataRow("物料编号") & "'And 发生日期 = '" & e.DataRow("发生日期") & "'")
            If dr5 Is Nothing Then
                dr5=DataTables("产品预算").Addnew()
                dr5("发生日期")=e.DataRow("发生日期")
                dr5("物料编号")=e.DataRow("物料编号")
            Else
                DataTables("产品预算").DataCols("物料编号").RaiseDataColChanged("物料编号= '" & e.DataRow("物料编号") & "'And 发生日期 = '" & e.DataRow("发生日期") & "'")
            End If
            Dim drs2 As List (of DataRow) = DataTables("物料清单").Select("产品编号= '" & e.DataRow("物料编号") & "'")
            If drs2 Is Nothing Then
                MessageBox.show("输入物料编号错误或者您还没有在物料清单中建立这个物料编号的BOM,请先建立后再使用")
                Return
            Else
               
               
                For Each dr2 As DataRow In drs2
                    Dim dr3 As DataRow = DataTables("生产计划物料需求").find("物料编号= '" & dr2("物料编号") & "' and 销售预算单号 = '" & e.DataRow("预算单号") & "'and 产品编号 = '" & e.DataRow("物料编号") & "'")
                    If dr3 IsNot Nothing Then
                        DataTables("生产计划物料需求").datacols("物料编号").RaiseDataColChanged("物料编号= '" & dr2("物料编号") & "' and 销售预算单号 = '" & e.DataRow("预算单号") & "'and 产品编号 = '" & e.DataRow("物料编号") & "'")
                        'Dim sum As Double = e.DataTable.Compute("sum(销售数量)","物料编号='" & e.DataRow("物料编号") &"'")
                        'dr3("使用数量") = dr2("使用数量")*sum
                    Else
                        Dim dr4 As DataRow = DataTables("生产计划物料需求").addnew
                        dr4("销售预算单号") = e.DataRow("预算单号")
                        dr4("发生日期") = e.DataRow("发生日期")
                        dr4("产品编号") = dr2("产品编号")
                        dr4("使用数量") = dr2("使用数量")*e.DataRow("销售数量")
                        dr4("物料编号") = dr2("物料编号")
                    End If
                Next
            End If
        End If
    End If
End Select

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/10/28 15:00:00 [只看该作者]

有可能是 RaiseDataColChanged 触发别的表的事件出错的。

 

加入msgbox调试 http://www.foxtable.com/help/topics/1485.htm

 


 回到顶部