以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- datacolchanged 问题 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=105657) |
-- 作者:edisontsui -- 发布时间:2017/8/23 17:26:00 -- datacolchanged 问题 我在增加一行空行时,会出现入下警告: .NET Framework 版本:2.0.50727.8669 Foxtable 版本:2017.3.18.1 错误所在事件:表,出入库,DataColChanged 详细错误信息: 调用的目标发生了异常。 未将对象引用设置到对象的实例。 目前,我的DataColChanged代码如下: If e.DataCol.name = "出入库日期" If e.DataRow.IsNull("出入库日期") Then e.DataRow("已出库天数") = Nothing Else Dim tp As TimeSpan = Date.today - CDate(e.DataRow("出入库日期")) e.DataRow("已出库天数") = Math.Round(tp.TotalDays / 1,0) End If End If If e.DataCol.name = "入库数量" OrElse e.DataCol.name = "出库数量" If e.DataRow("批号") = "" Else Dim re As Boolean = False For Each dr As DataRow In DataTables("批号表").DataRows If dr("批号") = e.DataRow("批号") And dr("物料编号") = e.DataRow("物料编号") Then dr("库存数量") = e.DataRow("入库数量") + e.DataRow("出库数量") + dr("库存数量") - e.OldValue dr("批号变动记录") = Date.now & " " & User.Name dr("库存数量变动记录") = Date.now & " " & User.Name re = True Exit For Else Continue For End If Next If re =False Dim dr As DataRow dr = DataTables("批号表").AddNew() dr("批号") = e.DataRow("批号") dr("物料编号") = e.DataRow("物料编号") dr("库存数量") = e.DataRow("入库数量") + e.DataRow("出库数量") dr("批号变动记录") = Date.now & " " & User.Name dr("库存数量变动记录") = Date.now & " " & User.Name End If End If End If Select Case e.DataCol.Name Case "物料编号","入库数量","出库数量" Dim dr As DataRow Dim mr As DataRow = e.DataRow Dim drs As List(of DataRow) dr = e.DataTable.Find("[出入库日期] <= #" & mr("出入库日期") & "# And [物料编号] = \'" & mr("物料编号") & "\'", "出入库日期,出入原因 desc,出入库单号") If dr("_Identify") = mr("_Identify") Then mr("余数") = mr("入库数量") + mr("出库数量") dr = mr End If drs = e.DataTable.Select("[出入库日期] >= #" & dr("出入库日期") & "# And [物料编号] = \'" & dr("物料编号") & "\'", "出入库日期,出入原因 desc,出入库单号") For i As Integer = 1 To drs.Count - 1 drs(i)("余数") = drs(i-1)("余数") + drs(i)("入库数量") + drs(i)("出库数量") Next If e.DataCol.Name = "物料编号" AndAlso e.OldValue IsNot Nothing AndAlso e.OldValue <> e.NewValue Then dr = e.DataTable.Find("[出入库日期] <= #" & mr("出入库日期") & "# And [物料编号] = \'" & e.OldValue & "\'", "出入库日期,出入原因 desc,出入库单号") If dr Is Nothing Then dr = e.DataTable.Find("[物料编号] = \'" & e.OldValue & "\'", "出入库日期,出入原因 desc,出入库单号") If dr IsNot Nothing Then dr("余数") = dr("入库数量") + dr("出库数量") End If End If If dr IsNot Nothing Then drs = e.DataTable.Select("[出入库日期] >= #" & dr("出入库日期") & "# And [物料编号] = \'" & dr("物料编号") & "\'", "出入库日期,出入原因 desc,出入库单号") For i As Integer = 1 To drs.Count - 1 drs(i)("余数") = drs(i-1)("余数") + drs(i)("入库数量") + drs(i)("出库数量") Next End If End If Case "物料编号","指令单号" Dim dr As DataRow =e.DataRow dr("变更记录") = e.oldvalue & "更改为" & e.newvalue & " " & Date.Now() & User.name End Select 那么,是哪里的代码有问题呢?如何修改呢?谢谢。
|
-- 作者:有点甜 -- 发布时间:2017/8/23 19:13:00 -- 加上判断,如
dr = e.DataTable.Find("[出入库日期] <= #" & mr("出入库日期") & "# And [物料编号] = \'" & mr("物料编号") & "\'", "出入库日期,出入原因 desc,出入库单号") If dr Is Nothing OrElse dr("_Identify") = mr("_Identify") Then
mr("余数") = mr("入库数量") + mr("出库数量")
dr = mr
End If
|
-- 作者:edisontsui -- 发布时间:2017/8/24 10:48:00 -- 加上上述判断之后,还是没有改善。可否请你帮我加好这些代码之后,再将整个datacolchanged 代码发给我? 或者可否请你利用我的主题“流水帐问题”那里的数据库和项目测试一下?谢谢。
|
-- 作者:有点甜 -- 发布时间:2017/8/24 11:28:00 -- 就是像2楼那样,把原先的代码修改。
如果还有,请自行加入msgbox调试。我测试没问题。
http://www.foxtable.com/webhelp/scr/1485.htm
|