以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]统计数据汇总遇到的问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=122604)

--  作者:紫色幽魂
--  发布时间:2018/7/29 14:27:00
--  [求助]统计数据汇总遇到的问题
请教
生成了一个统计表,增加了一列“已检构件”,想要对“无损_构件清单”进行筛选,然后将数量汇总写入这个统计表,下面这个需要怎么改


Dim zd As New Dictionary(of DataRow, String)
Dim drs As List(of DataRow)
Dim sl As Double 
For Each dr1 As DataRow In DataTables("无损_构件清单").DataRows
    drs = DataTables("无损_构件清单").SQLSelect("检验批编号 = \'"& dr1("检验批编号") &"\'")  \'筛选的时候这个表里面的总数量列可能有的单元格为空,需不需要筛选的时候就将这个条件加进去 
        For Each dr2 As DataRow In drs 
            If dr2("已检构件数") > dr2("总数量") Then
               sl = sl + dr2("总数量")
            Else
               sl = sl + dr2("已检构件数")
            End If
        Next
    zd.Add(dr1, sl)
Next
For Each dr As DataRow In zd.Keys
    dr("已检构件") = zd(dr)
Next


--  作者:有点甜
--  发布时间:2018/7/29 16:03:00
--  

没看懂你要做的东西。

 

如果要给统计表赋值,你应该循环统计表的每一行才对。


--  作者:紫色幽魂
--  发布时间:2018/7/29 17:00:00
--  回复:(有点甜)没看懂你要做的东西。 如果...
先生成统计表,然后增加一列,查询每一行对应的检验批编号所对应的表“无损_构件清单”的“已检构件数”之和,但是如果单行已检构件数超过“总数量”的话就以单行“总数量”来算
--  作者:有点甜
--  发布时间:2018/7/29 17:27:00
--  

Dim drs As List(of DataRow)

For Each dr1 As DataRow In DataTables("统计表").DataRows
    Dim sl As Double = 0
    drs = DataTables("无损_构件清单").SQLSelect("检验批编号 = \'"& dr1("检验批编号") &"\'")  \'筛选的时候这个表里面的总数量列可能有的单元格为空,需不需要筛选的时候就将这个条件加进去
    For Each dr2 As DataRow In drs
        If dr2("已检构件数") > dr2("总数量") Then
            sl = sl + dr2("总数量")
        Else
            sl = sl + dr2("已检构件数")
        End If
    Next
    dr1("已检构件") = sl
Next


--  作者:紫色幽魂
--  发布时间:2018/7/29 21:32:00
--  回复:(有点甜)Dim drs As List(of DataRow)For E...
在取值的表单里面有的行已检构件大于总数,如果大于总数取总数,否则取已检构件数,现在取出来的数之和和实际这个检验批已检构件数量之和对不上;’
在这个取值表总数量行可能是空值,所以我把筛选条件将总数量是空值的去除了,但是最后生成的表里面这一列都是0了;请问这个英国怎么改

Dim drs As List(of DataRow)
For Each dr1 As DataRow In DataTables("无损查询表_Table1").DataRows
    Dim sl As Double = 0
    drs = DataTables("无损_构件清单").SQLSelect("检验批编号 = \'"& dr1("检验批编号") &"\' And 总数量 IsNot Nothing ")  
    For Each dr2 As DataRow In drs
        If dr2("已检构件") > dr2("总数量") Then
            sl = sl + dr2("总数量")
        Else
            sl = sl + dr2("已检构件")
        End If
    Next
    dr1("已检构件") = sl
Next

--  作者:有点甜
--  发布时间:2018/7/29 23:05:00
--  

 

drs = DataTables("无损_构件清单").SQLSelect("检验批编号 = \'"& dr1("检验批编号") &"\' And 总数量 Is not null ")