以文本方式查看主题 - 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=181004) |
-- 作者:冷泉 -- 发布时间:2022/10/22 10:16:00 -- DataColChanged事件代码 DataColChanged事件 现在数据记录有4000行,直接录数量不卡,录完后修改个数量或者单价就非常卡,能不能帮忙优化一下代码 If e.DataCol.Name = "数量" Or e.DataCol.Name = "单价" Then Dim dr As DataRow dr= DataTables("订单").Find("订单编号=\'" & e.DataRow("订单编号") & "\'") If dr IsNot Nothing Then dr("金额")= DataTables("订单明细").Compute("Sum(金额)","订单编号 =\'" & e.DataRow("订单编号") & "\'") dr("数量")= DataTables("订单明细").Compute("Sum(数量)","订单编号 =\'" & e.DataRow("订单编号") & "\'") End If End If Select Case e.DataCol.Name Case "数量","单价" If e.DataRow.IsNull("数量") OrElse e.DataRow.IsNull("单价") Then e.DataRow("金额")=Nothing Else e.DataRow("金额")=e.DataRow("数量")*e.DataRow("单价") End If End Select
|
-- 作者:有点蓝 -- 发布时间:2022/10/22 10:26:00 -- 代码在哪个表?都是同一个事件的代码? |
-- 作者:冷泉 -- 发布时间:2022/10/23 11:02:00 -- 代码都是放在订单明细表 DataColChanged事件 里面 |
-- 作者:有点蓝 -- 发布时间:2022/10/23 20:27:00 -- 应该不是这个代码的原因,可能又触发了其它事件,或者有多处表达式列计算受数量、单价、金额的影响。 金额的计算要放到统计前 If e.DataCol.Name = "数量" Or e.DataCol.Name = "单价" Then If e.DataRow.IsNull("数量") OrElse e.DataRow.IsNull("单价") Then e.DataRow("金额")=Nothing Else e.DataRow("金额")=e.DataRow("数量")*e.DataRow("单价") End If Dim dr As DataRow dr= DataTables("订单").Find("订单编号=\'" & e.DataRow("订单编号") & "\'") If dr IsNot Nothing Then dr("金额")= DataTables("订单明细").Compute("Sum(金额)","订单编号 =\'" & e.DataRow("订单编号") & "\'") dr("数量")= DataTables("订单明细").Compute("Sum(数量)","订单编号 =\'" & e.DataRow("订单编号") & "\'") End If End If
|