Foxtable(狐表)用户栏目专家坐堂 → [求助]查询与赋值并存


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

主题:[求助]查询与赋值并存

帅哥,在线噢!
lgj716330
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1437 积分:11134 威望:0 精华:0 注册:2013/11/8 15:27:00
[求助]查询与赋值并存  发帖心情 Post By:2017/8/25 9:14:00 [只看该作者]

Dim Dic1,Dic2,Dic2 As new Dictionary(of DataRowInteger)
Dim 
v1,v2,v3 As Double
For Each 
dr As DataRow In DataTables("表A").DataRows
    v1 = DataTables("表A").Compute("Count(第二列 )""第二列 = " & dr("第一列"))
    v2 = DataTables("表A").Compute("Count(第三列 )""第三列 = " & dr("第一列"))
    v3 = DataTables("表A").Compute("Count(第四列 )""第四列 = " & dr("第一列"))

    dic1
.Add(drv1
    dic2.Add(drv2
    dic3.Add(drv3
Next
For Each 
dr As DataRow In dic1.Keys
    
dr("第五列") = dic1(dr)
Next
For Each dr As DataRow In dic2.Keys
    
dr("第六列") = dic2(dr)
Next
For Each dr As DataRow In dic3.Keys
    
dr("第七列") = dic3(dr)
Next

上述代码还可以整得简洁点吗
[此贴子已经被作者于2017/8/25 9:19:19编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/8/25 9:21:00 [只看该作者]

 上传实例,直接说明你要实现的功能。

 回到顶部
帅哥,在线噢!
lgj716330
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1437 积分:11134 威望:0 精华:0 注册:2013/11/8 15:27:00
  发帖心情 Post By:2017/8/25 9:30:00 [只看该作者]

Dim Dic1,Dic2,Dic3 As new Dictionary(of DataRow, Integer)
Dim v1,v2,v3 As Double
For Each dr As DataRow In DataTables("日报表").DataRows
    v1 = DataTables("销售日报").SQLCompute("sum(销售数量)", "[日期] = '" & dr("日期") & "' and [店铺名称] = '" & dr("店铺名称") & "'")
    v2 = DataTables("销售日报").SQLCompute("sum(销售金额)", "[日期] = '" & dr("日期") & "' and [店铺名称] = '" & dr("店铺名称") & "'")
    v3 = DataTables("销售日报").SQLCompute("sum(销售成本)", "[日期] = '" & dr("日期") & "' and [店铺名称] = '" & dr("店铺名称") & "'")
    dic1.Add(dr, v1) 
    dic2.Add(dr, v2) 
    dic3.Add(dr, v3) 
Next
For Each dr As DataRow In dic1.Keys
    dr("销售数量") = dic1(dr)
Next
For Each dr As DataRow In dic2.Keys
    dr("销售金额") = dic2(dr)
Next
For Each dr As DataRow In dic3.Keys
    dr("销售成本") = dic3(dr)
Next

哦,上面代码能实现我需要的功能,只是我要赋值的例比较多的时候,这代码有点长,看能不能弄得简洁一点
[此贴子已经被作者于2017/8/25 9:29:47编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/8/25 9:39:00 [只看该作者]

1、不要频繁使用sqlCompute,这样效率低下;还不如先把要统计的数据加载出来或先统计出来,再查找。

 

2、

 

Dim ary() As String = {"销售数量", "销售金额", "销售成本"}
Dim dic As new Dictionary(Of DataRow, List(of double))
For Each dr As DataRow In DataTables("阿米巴基础日报表").DataRows
    Dim filter As String = "[日期] = '" & dr("日期") & "' and [店铺名称] = '" & dr("店铺名称") & "'"
    Dim ls As new List(Of Double)
    For Each s As String In ary
        Dim sum As Double = DataTables("销售日报").SQLCompute("sum(" & s & ")", filter)
        ls.add(sum)
    Next
    dic.add(dr, ls)
Next
For Each dr As DataRow In dic.Keys
    For i As Integer = 0 To ary.length-1
        dr(ary(i)) = dic(dr)(i)
    Next
Next


 回到顶部
帅哥,在线噢!
lgj716330
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1437 积分:11134 威望:0 精华:0 注册:2013/11/8 15:27:00
  发帖心情 Post By:2017/8/25 9:57:00 [只看该作者]

确实,用sqlCompute速度很慢,我再偿试下先加载再计算

 回到顶部