Foxtable(狐表)用户栏目专家坐堂 → 多行一样的数据,如何累计现场单总套数


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

主题:多行一样的数据,如何累计现场单总套数

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


加好友 发短信
等级:七尾狐 帖子:1510 积分:9791 威望:0 精华:0 注册:2014/12/18 16:12:00
多行一样的数据,如何累计现场单总套数  发帖心情 Post By:2021/4/28 13:01:00 [只看该作者]

'同生产piao号/同制造产品号的情况下,只要一行<计划数量>输入数据,那么就重新计算该行现场单总套数的数据
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 * e.DataRow("计划数量")
End If

上述代码,好像没有效果,也就是说“现场单总套数”不会发生变化。请教是什么原因呢?

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107677 积分:547706 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/4/28 13:54:00 [只看该作者]

Dim Filter3 As String = "[piao号时间] = '" & e.DataRow("piao号时间") & "' and [制造产品号] = '" & e.DataRow("制造产品号") & "'"

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


加好友 发短信
等级:七尾狐 帖子:1510 积分:9791 威望:0 精华:0 注册:2014/12/18 16:12:00
  发帖心情 Post By: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
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1510 积分:9791 威望:0 精华:0 注册:2014/12/18 16:12:00
  发帖心情 Post By:2021/4/29 20:58:00 [只看该作者]

'同生产piao号/同制造产品号的情况下,只要一行的<计划数量>输入数据,那么就重新计算该行的<现场单总套数>的数据,也就是说,每增加一行 同生产piao号/同制造产品号 的记录,现场单总套数 就要把计划数量累计加一次。
比如第一行的计划数量为1,第二行的计划数量为2,第三行的计划数量为3,那么第三行的累计 <现场单总套数> 就是6.
If e.DataCol.name = "计划数量" Then
    Dim Filter3 As String = "[piao号时间] = '" & e.DataRow("piao号时间") & "' and [制造产品号] = '" & e.DataRow("制造产品号") & "'"  
    Dim drs3 As List(Of DataRow) = DataTables("现场任务单").Select(Filter3)
    e.DataRow("现场单总套数") = (drs3.count) * e.DataRow("计划数量") 
End If

但是上述代码累计加起来的数据不对。请问是什么原因?

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


加好友 发短信
等级:七尾狐 帖子:1510 积分:9791 威望:0 精华:0 注册:2014/12/18 16:12:00
  发帖心情 Post By:2021/4/29 21:01:00 [只看该作者]

哦,发现问题了,好像是     
e.DataRow("现场单总套数") = (drs3.count) * e.DataRow("计划数量") 
要改为
e.DataRow("现场单总套数") = e.DataRow("现场单总套数") + e.DataRow("计划数量") 

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


加好友 发短信
等级:七尾狐 帖子:1510 积分:9791 威望:0 精华:0 注册:2014/12/18 16:12:00
  发帖心情 Post By:2021/4/30 20:55:00 [只看该作者]

上面的代码还是有问题。问题应该是这样的:
'同生产piao号/同制造产品号的情况下,只要一行的<计划数量>发生变化, 那么就重新计算同生产piao号/同制造产品号情况下的<现场单总套数>
If e.DataCol.name = "计划数量" Then
    Dim Filter3 As String = "[生产piao号] = '" & e.DataRow("生产piao号") & "' 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
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1510 积分:9791 威望:0 精华:0 注册:2014/12/18 16:12:00
  发帖心情 Post By: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 [生产piao号] = '" & mr("生产piao号") & "' 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 [生产piao号] = '" & dr1("生产piao号") & "' And [制造产品号] = '" & mr("制造产品号") & "'", "[_SortKey]")
        For i As Integer = 1 To drs.Count - 1
            drs(i)("现场单总套数") = drs(i-1)("现场单总套数") + drs(i)("计划数量")
        Next

我用上述计算余数的方法来算也不对。

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


加好友 发短信
等级:五尾狐 帖子:1093 积分:6682 威望:0 精华:0 注册:2013/7/1 9:05:00
  发帖心情 Post By:2021/5/1 8:27:00 [只看该作者]

6楼的代码,没有看出问题,做个例子发上来看看

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


加好友 发短信
等级:七尾狐 帖子:1510 积分:9791 威望:0 精华:0 注册:2014/12/18 16:12:00
  发帖心情 Post By:2021/5/3 8:54:00 [只看该作者]

我用6楼的代码时,比如第一行的计划数量为1,第二行的计划数量为2,第三行的计划数量为3,那么第一行的现场单总套数应为1,第二行的现场单总套数应为3,第三行的现场单总套数应为6,但是实际上却是:第一行的现场单总套数为1,第二行的现场单总套数为4,第三行的现场单总套数为7。说明是有问题。

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


加好友 发短信
等级:七尾狐 帖子:1510 积分:9791 威望:0 精华:0 注册:2014/12/18 16:12:00
  发帖心情 Post By:2021/5/3 10:24:00 [只看该作者]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.rar


 回到顶部
总数 11 1 2 下一页