Foxtable(狐表)用户栏目专家坐堂 → sqlselct 找出来行数据之后 的计算方法


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

主题:sqlselct 找出来行数据之后 的计算方法

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


加好友 发短信
等级:九尾狐 帖子:2355 积分:16187 威望:0 精华:0 注册:2013/9/1 8:09:00
sqlselct 找出来行数据之后 的计算方法  发帖心情 Post By:2016/2/14 8:38:00 [只看该作者]

刚才大概看下论坛,发现大红袍老师,Hyphen 老师等已经在12号就开始为小狐们答疑了,大红袍老师最后一条回复是昨晚凌晨0:17,感动啊!!!
衷心祝愿所有热心的工程师 新年发大财!!更祝福 狐爸 狐表 发展的越来越好!!!我现在可真的是狐表的铁杆粉丝!!

遇到一个问题,应该算是比较基础的,不过查了 帮助 和论坛 都没看到怎么解决,贴出来给伟大的工程师们瞧瞧!







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


加好友 发短信
等级:九尾狐 帖子:2355 积分:16187 威望:0 精华:0 注册:2013/9/1 8:09:00
  发帖心情 Post By:2016/2/14 8:39:00 [只看该作者]

    Dim gvdid As List(of DataRow) 
    Dim cmd4 As New SQLCommand
    cmd4.C
    cmd4.CommandText = "S ELECT * From {GatheringVouchDetail} Where [fchrGatheringVouchDetailID] Is not Null"
    Dim dt4 As DataTable = cmd4.ExecuteReader()
    gvdid = dt4.SQLs elect("[fchrGatheringVouchID] = '"& gvid &"' ")   '通过 上一个参数 主表id (gvid) 得出所有的子表id (gvdid)

    Dim cmd5 As New SQLCommand
    cmd5.C
    cmd5.CommandText = "S ELECT * From {StoredCardRecord} Where [fchrStoredCardID] Is not Null"
    Dim dt5 As DataTable = cmd5.ExecuteReader()
ykje = dt5.sqlCompute("Sum(flotCurrentAmount)","fchrGatheringVouchDetailID = '"& gvdid &"'") '计算所有符合 上面筛选出来的数组 gvdid里的子表id  的当前值

这样做肯定是不对的,因为 gvdid  不是具体的一行,而是多行。。。
而是要用遍历,那要怎么做呢?
[此贴子已经被作者于2016/2/14 8:41:51编辑过]

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


加好友 发短信
等级:九尾狐 帖子:2355 积分:16187 威望:0 精华:0 注册:2013/9/1 8:09:00
  发帖心情 Post By:2016/2/14 8:47:00 [只看该作者]

是不是这样:

ykje = dt5.sqlCompute("Sum(flotCurrentAmount)","fchrGatheringVouchDetailID in gvdid )   用 in  ,在这个集合里的行。。。

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


加好友 发短信
等级:狐神 帖子:5015 积分:25363 威望:0 精华:0 注册:2015/8/18 9:21:00
  发帖心情 Post By:2016/2/14 9:41:00 [只看该作者]

试试用连接直接求和:

Dim cmd4 As New SQLCommand
cmd4.C
cmd4.CommandText = "S ELECT c.fchrGatheringVouchDetailID ,Sum(c.flotCurrentAmount) as 求和 From {GatheringVouchDetail} as gvd inner join {StoredCardRecord} as c on gvd.fchrGatheringVouchDetailID = c.fchrGatheringVouchDetailID wh ere gvd.fchrGatheringVouchID = '" & gvid & "' group by c.fchrGatheringVouchDetailID "
Dim val As Integer = cmd4.ExecuteScalar()
msgbox(val)

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/2/15 9:06:00 [只看该作者]

参考4楼的方法,如果你要用到集合,你必须把主键合并成字符串,才能用in的,如

 

http://www.foxtable.com/help/topics/2228.htm

 


 回到顶部