以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- sqlselct 找出来行数据之后 的计算方法 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=80950) |
-- 作者:fubblyc -- 发布时间:2016/2/14 8:38:00 -- sqlselct 找出来行数据之后 的计算方法 刚才大概看下论坛,发现大红袍老师,Hyphen 老师等已经在12号就开始为小狐们答疑了,大红袍老师最后一条回复是昨晚凌晨0:17,感动啊!!! 衷心祝愿所有热心的工程师 新年发大财!!更祝福 狐爸 狐表 发展的越来越好!!!我现在可真的是狐表的铁杆粉丝!! 遇到一个问题,应该算是比较基础的,不过查了 帮助 和论坛 都没看到怎么解决,贴出来给伟大的工程师们瞧瞧! |
-- 作者:fubblyc -- 发布时间: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 -- 发布时间:2016/2/14 8:47:00 -- 是不是这样: ykje = dt5.sqlCompute("Sum(flotCurrentAmount)","fchrGatheringVouchDetailID in gvdid ) 用 in ,在这个集合里的行。。。
|
-- 作者:Hyphen -- 发布时间: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) |
-- 作者:大红袍 -- 发布时间:2016/2/15 9:06:00 -- 参考4楼的方法,如果你要用到集合,你必须把主键合并成字符串,才能用in的,如
http://www.foxtable.com/help/topics/2228.htm
|