2013-05-01 73 views
2

我想循環通過一個數據表,我的約束有多個值。我如何保留第一個值並將所有符合我的約束條件的其他值相加。循環通過數據表vb

For i = 0 To ds.Tables(0).Rows.Count - 1 

      If ds.Tables(0).Rows(i).Item("TEND_POS_ID") = 8 Then 

       'This only returns the last value 
       'Value 1 = 2 
       'Value 2 = 7.5 
       'should = 9.5 but it is showing 7.5     

      tmpCoupon = ds.Tables(0).Rows(i).Item("TENDER_AMT") 
      End If 
     Next 
     txtCoupon.Text = tmpCoupon 

回答

2

如果我正確理解你的問題,你需要添加的TENDER_AMT其中TEND_POS_ID的值是8的值。如果是這樣的話,你可以使用數據表

Dim rows = ds.Tables(0).Select("TEND_POS_ID = 8") 
for each r in rows 
    tmpCoupon += Convert.ToDecimal(r("TENDER_AMD")) 
Next 
Select方法

但是,請注意,您提交給數據庫的查詢通常可以更好地解決此類工作(SUM列按另一列分組)。這樣的事情:

SELECT TEND_POS_ID, SUM(TENDER_AMD) FROM Table1 GROUP BY TEND_POS_ID 
+0

不知道這是否有幫助,但它是一個我無法控制的存儲過程。 tmpCoupon已經是一個十進制值。是的,我試圖添加TENDER_AMT的值,其中TEND_POS_ID = 8。循環訪問DataTable並通過Debug.Print打印值,但是如何將它們(添加)一起添加。 – iDev 2013-05-01 19:01:31

+0

是的,上面的代碼執行加法'tmpCoupon + ='但是,它是一個小數點,我需要修復答案。 – Steve 2013-05-01 19:03:56

+0

謝謝,我知道我之前就是這樣試過的。它現在有效。 – iDev 2013-05-01 19:13:02