Foxtable(狐表)用户栏目专家坐堂 → DataColChanged事件代码


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

主题:DataColChanged事件代码

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


加好友 发短信
等级:小狐 帖子:392 积分:3176 威望:0 精华:0 注册:2019/4/13 16:10:00
DataColChanged事件代码  发帖心情 Post By:2022/10/22 10:16:00 [只看该作者]

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

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


加好友 发短信
等级:超级版主 帖子:110443 积分:562081 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/10/22 10:26:00 [只看该作者]

代码在哪个表?都是同一个事件的代码?

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


加好友 发短信
等级:小狐 帖子:392 积分:3176 威望:0 精华:0 注册:2019/4/13 16:10:00
  发帖心情 Post By:2022/10/23 11:02:00 [只看该作者]

代码都是放在订单明细表 DataColChanged事件 里面

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


加好友 发短信
等级:超级版主 帖子:110443 积分:562081 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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

 回到顶部