以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助] 分数加总  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=138519)

--  作者:leoli
--  发布时间:2019/8/2 15:12:00
--  [求助] 分数加总
请问一下,如何将表B和表C中数量加总后汇总到表A中 ?
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:分数加总.foxdb


--  作者:有点蓝
--  发布时间:2019/8/2 15:50:00
--  
参考:http://www.foxtable.com/webhelp/topics/1454.htm

比如

If e.DataCol.Name = "产品" Then \'发生变化的是产品列。
    \'则累计订单表中同名产品总的销售量,然后赋值给变动行的数量列

    e.
DataRow("数量") = DataTables("订单").Compute("Sum(数量)","[产品] = \'" & e.NewValue & "\'") + 
DataTables("订单2").Compute("Sum(数量)","[产品] = \'" & e.NewValue & "\'")
End
 
If

上面的代


--  作者:susanhe
--  发布时间:2019/8/2 16:08:00
--  

 

[此贴子已经被作者于2019/8/2 16:08:59编辑过]

--  作者:leoli
--  发布时间:2019/8/2 16:10:00
--  

不好意思, 是想通过按钮代码来实现,可以吗 ?


--  作者:有点蓝
--  发布时间:2019/8/2 16:26:00
--  
Dim lst As List(of String) = DataTables("表B").GetValues("姓名")

For Each s As String In DataTables("表C").GetValues("姓名")
    If lst.Contains(s) = False Then lst.Add(s)
Next

For Each s As String In lst
    Dim dr As DataRow = DataTables("表A").AddNew
    dr("姓名") = s
    dr("总分") = 参考2楼的统计方法
Next

--  作者:leoli
--  发布时间:2019/8/2 17:27:00
--  

 

你好,出现了这个错误, 另外空格的不要计算,如何排除?

 

DataTables("表A").datarows.clear
Dim lst As List(of String) = DataTables("表B").GetValues("姓名")


For Each s As String In DataTables("表C").GetValues("姓名")
    If lst.Contains(s) = False Then lst.Add(s)
Next


For Each s As String In lst
    Dim dr As DataRow = DataTables("表A").AddNew
    dr("姓名") = s
    dr("总分") = DataTables("表B").compute("sum(分数)")","姓名 = \'" & e.NewValue &"\'") +DataTables("表c").compute("sum(分数)")","姓名 = \'" & e.NewValue &"\'")


Next


此主题相关图片如下:捕获.jpg
按此在新窗口浏览图片

--  作者:有点蓝
--  发布时间:2019/8/2 17:47:00
--  
多了个右括号。

空格的问题没看懂

--  作者:leoli
--  发布时间:2019/8/2 18:29:00
--  

你好,第一个加总解决了。

 

第二个问题,如图 表C中有空格,加总后可以不出现空格吗?

 

 

 

DataTables("表A").datarows.clear
Dim lst As List(of String) = DataTables("表B").GetValues("姓名")


For Each s As String In DataTables("表C").GetValues("姓名")
    If lst.Contains(s) = False Then lst.Add(s)
Next


For Each s As String In lst
    Dim dr As DataRow = DataTables("表A").AddNew
    dr("姓名") = s
    dr("总分")= DataTables("表B").compute("sum(分数)" ," 姓名=\'" & s & "\' ") +DataTables("表C").compute("sum(分数)" ," 姓名=\'" & s & "\' ")
 
Next


此主题相关图片如下:捕获.jpg
按此在新窗口浏览图片

此主题相关图片如下:捕获1.jpg
按此在新窗口浏览图片

--  作者:y2287958
--  发布时间:2019/8/2 19:11:00
--  

DataTables("表A").datarows.clear
Dim lst As List(of String) = DataTables("表B").GetValues("姓名","姓名>\'\'")

For Each s As String In DataTables("表C").GetValues("姓名","姓名>\'\'")
    If lst.Contains(s) = False Then lst.Add(s)
Next

For Each s As String In lst
    Dim dr As DataRow = DataTables("表A").AddNew
    dr("姓名") = s
    dr("总分")= DataTables("表B").compute("sum(分数)" ," 姓名=\'" & s & "\' ") + DataTables("表C").compute("sum(分数)" ," 姓名=\'" & s & "\' ")
Next

 


--  作者:有点蓝
--  发布时间:2019/8/2 20:46:00
--  
或者

Dim lst As List(of String) = DataTables("表B").GetValues("姓名","姓名 is not null")