以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 写代码实现时实显示近30天的库存数量,测试总有错误,求高手帮忙看看 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=31566) |
||||
-- 作者:jljacky -- 发布时间:2013/4/17 14:11:00 -- 写代码实现时实显示近30天的库存数量,测试总有错误,求高手帮忙看看 项目有两个表,"库存运维"和"出入库记录",两表都有同一名称列“配件名称”,两表之间没有设关联。
现在通过在库存运维表中的DataColChanged事件中写代码实现 滚动显示最近30天的出库数量。 我每次修改日期测试的时候就会提示错误“Exception has been thrown by the target of an invocation.” 求高手帮我看看为什么会这样?
以下是库存运维表DataColChanged中的代码: If e.DataCol.Name = "配件名称" Then e.DataRow("出库总量") = DataTables("出入库记录").Compute("Sum(出库)","[配件名称] = \'" & e.NewValue & "\'") e.DataRow("最近30天出库数量") = DataTables("出入库记录").Compute("Sum(出库)","[配件名称] = \'" & e.NewValue & "\' And [日期]<=#" & Date.Today & "# And [日期]>#" & Date.Today.AddDays(-31) & "#") End If
为了使每次出入库记录表中数据有变化都触发库存运维表的DataColChanged事件,我又在出入库记录表的 DataColChanged事件下了代码入下: If e.DataCol.Name = "出库" Then Dim pr As DataRowpr = DataTables("库存运维").Find(" 配件名称= \'" & e.DataRow("配件名称") & "\'") If pr IsNot Nothing Thenpr( "出库总量")= pr("出库总量") + e.NewValue - e.OldValue End IfElseIf e.DataCol.Name="配件名称" Or "日期" If e.NewValue<>e.OldValue DataTables("库存运维").DataCols("配件名称").RaiseDataColChanged() End IfEnd If我其实也试着在MaintableChanged事件里面写RaiseDataColChanged(),测试下来没问题,想知道为什么以上的代码就有问题
|
||||
-- 作者:Bin -- 发布时间:2013/4/17 14:14:00 -- 没见有报错啊. |
||||
-- 作者:jljacky -- 发布时间:2013/4/17 14:44:00 -- 以下是引用Bin在2013-4-17 14:14:00的发言:
没见有报错啊. 你试着改一下出入库记录表里面配件703的日期, 此主题相关图片如下:1.jpg |
||||
-- 作者:jljacky -- 发布时间:2013/4/17 15:10:00 -- 顶 |
||||
-- 作者:jijianjsj -- 发布时间:2013/4/17 15:27:00 -- 日期列问题,你改成这样,我测试过了 If e.DataCol.Name = "出库" Then Dim pr As DataRow pr = DataTables("库存运维").Find("配件名称 = \'" & e.DataRow("配件名称") & "\'") If pr IsNot Nothing Then pr("出库总量")= pr("出库总量") + e.NewValue - e.OldValue End If ElseIf e.DataCol.Name="配件名称" If e.NewValue<>e.OldValue DataTables("库存运维").DataCols("配件名称").RaiseDataColChanged() End If ElseIf e.DataCol.Name= "日期" Dim y,m,d As Integer DateYMD(e.NewValue,e.OldValue,y,m,d) If d = 0 And y = 0 And m = 0 Then Else DataTables("库存运维").DataCols("配件名称").RaiseDataColChanged() End If End If [此贴子已经被作者于2013-4-17 15:30:11编辑过]
|
||||
-- 作者:jljacky -- 发布时间:2013/4/17 15:33:00 -- 非常感谢! |
||||
-- 作者:jljacky -- 发布时间:2013/4/17 15:42:00 -- 不好意思, If d = 0 And y = 0 And m = 0 Then 的后面一句是什么啊? |
||||
-- 作者:jljacky -- 发布时间:2013/4/17 15:44:00 -- 还有DateYMD(e.NewValue,e.OldValue,y,m,d)是什么意思?偶不大理解 |
||||
-- 作者:jijianjsj -- 发布时间:2013/4/17 15:46:00 -- 后面没有,你可以改成 If d <> 0 or y <> 0 or m <> 0 Then DataTables("库存运维").DataCols("配件名称").RaiseDataColChanged() End If |
||||
-- 作者:Bin -- 发布时间:2013/4/17 15:46:00 -- http://www.foxtable.com/help/topics/2648.htm 以下是引用jljacky在2013-4-17 15:44:00的发言:
请查看帮助
还有DateYMD(e.NewValue,e.OldValue,y,m,d)是什么意思?偶不大理解 |