参考学习如下帖子:http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=22963
代码很多看不懂,不过估摸着套用也通过了.
现希望月报表增加月份列,每月结算时上月的数据保留.
低手现在做不出,希望高手相助.
Dim st As Date = Date.Now '用于计算时间
Dim s As String = e.Form.Controls("月份").Value
If s <> "" Then
Tables("月报表").StopRedraw() '停止重绘
DataTables("月报表").DataRows.Clear
Dim dt_in As List(Of DataRow)
dt_in = DataTables("装箱入库").Select("零件图号 is not null", "零件图号,零件名称,月份") '排序取出 入仓 全部数据
Dim r As Row
Dim sum_curr_count, sum_prev_count As Integer
r = Tables("月报表").AddNew
r("零件图号") = dt_in(0)("零件图号")
r("零件名称") = dt_in(0)("零件名称")
If dt_in(0)("月份") < s Then '之前月
sum_prev_count = sum_prev_count + dt_in(0)("入库数量")
Else If dt_in(0)("月份") = s Then '本月份
sum_curr_count = sum_curr_count + dt_in(0)("入库数量")
End If
For i As Integer = 1 To dt_in.Count - 1 '写入型号和规格,同时统计入仓数量和金额
If dt_in(i)("零件图号") <> dt_in(i-1)("零件图号") OrElse dt_in(i)("零件名称") <> dt_in(i-1)("零件名称") Then '不同产品
r("本月入库") = sum_curr_count
r("上月结存") = sum_prev_count '暂存
r = Tables("月报表").AddNew '插入新数据
r("零件图号") = dt_in(i)("零件图号")
r("零件名称") = dt_in(i)("零件名称")
sum_curr_count = 0
sum_prev_count = 0
End If
If dt_in(i)("月份") < s Then '之前月
sum_prev_count = sum_prev_count + dt_in(i)("入库数量")
Else If dt_in(i)("月份") = s Then '本月份
sum_curr_count = sum_curr_count + dt_in(i)("入库数量")
End If
Next
r("本月入库") = sum_curr_count
r("上月结存") = sum_prev_count '暂存
MessageBox.Show("复制型号和规格耗时: " & (Date.Now - st).TotalSeconds & "秒")
st = Date.Now '用于计算时间
For Each dr As DataRow In DataTables("月报表").DataRows '填充统计数据
sum_curr_count = 0 '累计本月出仓数量
sum_prev_count = 0 '累计之前出仓数量
Dim drs_out As List(Of DataRow)
Dim filter As String = "零件图号 = '" & dr("零件图号") & "' And 零件名称 = '" & dr("零件名称") & "'"
drs_out = DataTables("销售出库").Select(filter, "月份") '排序取出 出仓 全部数据
For Each dr_out As DataRow In drs_out
If dr_out("月份") < s Then
sum_prev_count = sum_prev_count + dr_out("出库数量")
Else If dr_out("月份") = s Then
sum_curr_count = sum_curr_count + dr_out("出库数量")
Else
Exit For
End If
Next
Dim sum_in_prev_count As Integer = dr("上月结存") '从表中取出暂存数据
dr("本月出库") = sum_curr_count
dr("上月结存") = sum_in_prev_count - sum_prev_count
dr("本月结存") = dr("上月结存") + dr("本月入库") - dr("本月出库")
Next
Tables("月报表").ResumeRedraw()
End If
MessageBox.Show("统计和写入耗时: " & (Date.Now - st).TotalSeconds & "秒")