以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 多行一样的数据,如何累计现场单总套数 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=164171) |
||||
-- 作者:edisontsui -- 发布时间:2021/4/28 13:01:00 -- 多行一样的数据,如何累计现场单总套数 \'同生产票号/同制造产品号的情况下,只要一行<计划数量>输入数据,那么就重新计算该行现场单总套数的数据 If e.DataCol.name = "计划数量" Then Dim Filter3 As String = "[票号时间] = \'" & e.DataRow("票号时间") & "\' and [制造产品号] = \'" & e.DataRow("制造产品号") & "\' and [_Identify] <>" & e.DataRow ("_Identify") Dim drs3 As List(Of DataRow) = DataTables("现场任务单").Select(Filter3) e.DataRow("现场单总套数") = drs3.count * e.DataRow("计划数量") End If 上述代码,好像没有效果,也就是说“现场单总套数”不会发生变化。请教是什么原因呢?
|
||||
-- 作者:有点蓝 -- 发布时间:2021/4/28 13:54:00 -- Dim Filter3 As String = "[piao号时间] = \'" & e.DataRow("piao号时间") & "\' and [制造产品号] = \'" & e.DataRow("制造产品号") & "\'" |
||||
-- 作者:edisontsui -- 发布时间:2021/4/28 14:22:00 -- If e.DataCol.name = "计划数量" Then Dim Filter3 As String = "[piao号时间] = \'" & e.DataRow("piao号时间") & "\' and [制造产品号] = \'" & e.DataRow("制造产品号") & "\' and [_Identify] <>" & e.DataRow ("_Identify") Dim drs3 As List(Of DataRow) = DataTables("现场任务单").Select(Filter3) e.DataRow("现场单总套数") = (drs3.count + 1) * e.DataRow("计划数量") End If 上面那样也行。
|
||||
-- 作者:edisontsui -- 发布时间:2021/4/29 20:58:00 -- \'同生产票号/同制造产品号的情况下,只要一行的<计划数量>输入数据,那么就重新计算该行的<现场单总套数>的数据,也就是说,每增加一行 同生产票号/同制造产品号 的记录,现场单总套数 就要把计划数量累计加一次。 比如第一行的计划数量为1,第二行的计划数量为2,第三行的计划数量为3,那么第三行的累计 <现场单总套数> 就是6. If e.DataCol.name = "计划数量" Then Dim Filter3 As String = "[票号时间] = \'" & e.DataRow("票号时间") & "\' and [制造产品号] = \'" & e.DataRow("制造产品号") & "\'" Dim drs3 As List(Of DataRow) = DataTables("现场任务单").Select(Filter3) e.DataRow("现场单总套数") = (drs3.count) * e.DataRow("计划数量") End If 但是上述代码累计加起来的数据不对。请问是什么原因?
|
||||
-- 作者:edisontsui -- 发布时间:2021/4/29 21:01:00 -- 哦,发现问题了,好像是 e.DataRow("现场单总套数") = (drs3.count) * e.DataRow("计划数量")
要改为 e.DataRow("现场单总套数") = e.DataRow("现场单总套数") + e.DataRow("计划数量") |
||||
-- 作者:edisontsui -- 发布时间:2021/4/30 20:55:00 -- 上面的代码还是有问题。问题应该是这样的: \'同生产票号/同制造产品号的情况下,只要一行的<计划数量>发生变化, 那么就重新计算同生产票号/同制造产品号情况下的<现场单总套数> If e.DataCol.name = "计划数量" Then Dim Filter3 As String = "[生产票号] = \'" & e.DataRow("生产票号") & "\' and [制造产品号] = \'" & e.DataRow("制造产品号") & "\'" Dim drs3 As List(Of DataRow) = DataTables("现场任务单").Select(Filter3) For i As Integer = 0 To drs3.count - 1 If i = 0 e.DataRow("现场单总套数") = e.DataRow("计划数量") Else drs3(i)("现场单总套数") = drs3(i-1)("现场单总套数") + e.DataRow("计划数量") End If Next End If 但是上述代码计算的结果不对。 比如第一行的计划数量为1,第二行的计划数量为2,第三行的计划数量为3,现场单总套数就是6。如果第三行的计划数量改为4,现场单总套数就是7。但是结果并非如此。请教这是什么原因? |
||||
-- 作者:edisontsui -- 发布时间:2021/4/30 21:56:00 -- Dim dr1 As DataRow Dim mr As DataRow = e.DataRow Dim drs As List(of DataRow) dr1 = e.DataTable.Find("[_SortKey] < " & mr("_SortKey") & " And [生产票号] = \'" & mr("生产票号") & "\' And [制造产品号] = \'" & mr("制造产品号") & "\'", "[_SortKey] Desc") If dr1 Is Nothing OrElse dr1("_Identify") = mr("_Identify") Then mr("现场单总套数") = mr("计划数量") dr1 = mr End If drs = e.DataTable.Select("[_SortKey] >= " & dr1("_SortKey") & " And [生产票号] = \'" & dr1("生产票号") & "\' And [制造产品号] = \'" & mr("制造产品号") & "\'", "[_SortKey]") For i As Integer = 1 To drs.Count - 1 drs(i)("现场单总套数") = drs(i-1)("现场单总套数") + drs(i)("计划数量") Next 我用上述计算余数的方法来算也不对。
|
||||
-- 作者:有点酸 -- 发布时间:2021/5/1 8:27:00 -- 6楼的代码,没有看出问题,做个例子发上来看看 |
||||
-- 作者:edisontsui -- 发布时间:2021/5/3 8:54:00 -- 我用6楼的代码时,比如第一行的计划数量为1,第二行的计划数量为2,第三行的计划数量为3,那么第一行的现场单总套数应为1,第二行的现场单总套数应为3,第三行的现场单总套数应为6,但是实际上却是:第一行的现场单总套数为1,第二行的现场单总套数为4,第三行的现场单总套数为7。说明是有问题。 |
||||
-- 作者:edisontsui -- 发布时间:2021/5/3 10:24:00 --
|