以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  请教:循环语句计算问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=63716)

--  作者:feiyu988
--  发布时间:2015/1/27 9:41:00
--  请教:循环语句计算问题

想实现代码计算m值,每一行的 m值 = 当前行q值 * 当前行至最末行a值和 + 下一行q值 * 下一行a值和 + .....

老是计算错误,请老师帮忙修改一下,谢谢

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.foxdb


--  作者:有点甜
--  发布时间:2015/1/27 9:47:00
--  
Dim t As Table = Tables("表A")
Dim r As Row = t.Rows(t.Rows.Count-1)
Dim sum As Double = r("q值") * r("a值")
For i As Integer = t.Rows.Count - 2 To 0 Step -1
    r = t.Rows(i)
    sum += r("q值") * r("a值")
    r("m值") = sum
Next

--  作者:feiyu988
--  发布时间:2015/1/27 9:55:00
--  

好像还不对,计算出的只是当前行qz值 * 当前行a值至末行和,没有累加 下一行qz值 * 下一行a值  乃至下下行直至    末行q值和一直至最末行*最末行a值


--  作者:有点甜
--  发布时间:2015/1/27 9:59:00
--  
 肯定对啊,就是每行的结果累加啊
--  作者:feiyu988
--  发布时间:2015/1/27 10:05:00
--  
当前计算的只是当前行q值*(当前行a值+下一行a值+...+最末行a值),还需要加上下一行q值*(下一行a值+...+最末行a值),依次累加
--  作者:有点甜
--  发布时间:2015/1/27 10:05:00
--  

 不明白你的逻辑,具体怎么改你改一下

 

Dim t As Table = Tables("表A")
Dim r As Row = t.Rows(t.Rows.Count-1)
Dim m As Double = r("q值") * r("a值")
Dim q As Double = r("q值")
For i As Integer = t.Rows.Count - 2 To 0 Step -1
    r = t.Rows(i)
    q += r("q值")
    m += q * r("a值")
    r("m值") = m
Next


--  作者:feiyu988
--  发布时间:2015/1/27 10:06:00
--  
直至累加至最末行
--  作者:feiyu988
--  发布时间:2015/1/27 10:11:00
--  
如果a都是1,q列依次是1、2、3、4、5、6、7、8、9、10的话,第二行的值应该是2*9+3*8+4*7+5*6+6*5+7*4+8*3+9*2+10*1,第三行为3*8+4*7+5*6+6*5+7*4+8*3+9*2+10*1
--  作者:有点甜
--  发布时间:2015/1/27 10:17:00
--  
Dim t As Table = Tables("表A")
Dim r As Row = t.Rows(t.Rows.Count-1)
Dim m As Double = r("q值") * r("a值")
Dim a As Double = r("a值")
For i As Integer = t.Rows.Count - 2 To 0 Step -1
    r = t.Rows(i)
    a += r("a值")
    m += a * r("q值")
    r("m值") = m
Next

--  作者:feiyu988
--  发布时间:2015/1/27 10:21:00
--  

OK,这个代码把我都整蒙了,终于整好了