老师,在工作中经常遇到因数据录入错误而需要修改数据,以下代码当修改了数据,点击重置列后,只对Tables有效,对DataTables无效,未加载的行中的月累计、年累计仍然没有变化。例如:修改了2019年8月15日的“本期碎石日销量”,修改行的月累计、年累计发生了变化,但未加载的2019年8月15日后的月累计、年累计缺不发生变化,能够将以下代码改成修改了某行数据,后台数据也跟着一起变化。
Dim cnt1 As Double '定义cnt(...)为双精度小数类型
Dim cnt2 As Double
Dim cnt3 As Double
Dim cnt4 As Double
Dim y As Integer = Date.Today.Year '取Y为今年
Dim m As Integer = Date.Today.Month '取M为当月
Dim d As Integer = Date.Today.Day '取D为当日
Dim dt1 As New Date(y, m, 1) '获取本月第一天
Dim dt2 As New Date(y, m, d) 'Date.DaysInMonth(y, d))'获取本月第几天
Dim dt3 As New Date(y, 1, 1)
Select Case e.DataCol.Name
Case "本期碎石日销量"
If e.DataRow.IsNull("本期碎石日销量") Then '
e.DataRow("本期碎石日销量") = Nothing '
Else
cnt1 = DataTables("日报").S QLCompute("sum(本期碎石日销量)", "报表日期 >= '" & dt1 & "' And 报表日期<='" & dt2 & "' And 区域 = '" & e.DataRow("区域") & " '")
cnt2 = DataTables("日报").S QLCompute("sum(本期碎石日销量)", "报表日期 >= '" & dt3 & "' And 报表日期<='" & dt2 & "'And 区域 = '" & e.DataRow("区域") & " ' ")
e.DataRow("本期碎石月累计") = cnt1+ e.DataRow("本期碎石日销量")
e.DataRow("本期碎石年累计") = cnt2+ e.DataRow("本期碎石日销量")
End If
Case "本期河沙日销量"
If e.DataRow.IsNull("本期河沙日销量") Then '
e.DataRow("本期河沙日销量") = Nothing '
Else
cnt3 = DataTables("日报").S QLCompute("sum(本期河沙日销量)", "报表日期 >= '" & dt1 & "' And 报表日期<='" & dt2 & "'And 区域 = '" & e.DataRow("区域") & " ' ")
cnt4 = DataTables("日报").S QLCompute("sum(本期河沙日销量)", "报表日期 >= '" & dt3 & "' And 报表日期<='" & dt2 & "'And 区域 = '" & e.DataRow("区域") & " ' ")
e.DataRow("本期河沙月累计") = cnt3+ e.DataRow("本期河沙日销量")
e.DataRow("本期河沙年累计") = cnt4+ e.DataRow("本期河沙日销量")
End select