以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 报错了,这是什么原因 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=76405) |
-- 作者:kaituozhe -- 发布时间: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) |
-- 作者:大红袍 -- 发布时间:2015/10/28 14:39:00 -- 加上msgbox代码,确定一下是哪句代码前出错的。
贴出代码 |
-- 作者:kaituozhe -- 发布时间: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 |
-- 作者:大红袍 -- 发布时间:2015/10/28 15:00:00 -- 有可能是 RaiseDataColChanged 触发别的表的事件出错的。
加入msgbox调试 http://www.foxtable.com/help/topics/1485.htm
|