2013-05-21 34 views
0

我有一個DataGrid,其中包含多個客戶買入交易。 我想要的是將每位顧客的交易購買加起來,並將結果添加到相關圖像中。我現在所擁有的東西給了我邏輯錯誤,即在多個圖像上添加相同的數量。循環,彙總並返回唯一的DataRow總和

這裏是我的DataGrid的結構(列標題):[Name,Surname, Buyin, Type, StartTime, TransactionID, CustomerID] 這裏是我的代碼:

Dim tbActivePlayers As DataTable = Me.ActivePlayersTableAdapter.GetData() 

Dim tbTemp As New DataTable 

' table = DataSet.Tables("Orders") 

' Declare an object variable. 
Dim objTotalBuyin As Object 
Dim iCount, ilbl As Integer 
ilbl = 1 

Dim viewUniquePlayers As New DataView(tbActivePlayers) 
Dim iActivePlayers As Integer = viewUniquePlayers.ToTable(True, "CustomerID").Rows.Count 
Dim dtDataTable As DataTable = viewUniquePlayers.ToTable(True, "CustomerID") 

Dim myLabel As Label 
For iCount = 0 To dtDataTable.Rows.Count 
    objTotalBuyin = tbActivePlayers.Compute("Sum(Buyin)", "CustomerID = " & tbActivePlayers.Rows(iCount).Item("CustomerID")) 
    'MsgBox("Name: " & tbActivePlayers.Rows(iCount + 1).Item("Name") & ", Sumbuyin:" & sumObject.ToString & " ResultCount:" & ResultCount) 
    ' 
    myLabel = CType(Me.Controls.Find("lblPlayer" & ilbl, True)(0), Label) 
    If Not myLabel Is Nothing Then 
     myLabel.Text = "Empty Seat" 
    End If 
    ' 

    myLabel.Text = tbActivePlayers.Rows(iCount).Item("Name") & Environment.NewLine & _ 
        "€" & objTotalBuyin.ToString 

    myLabel.Image = Global.PokerBusiness.My.Resources.Resources.seatocc 
    ilbl += 1 

Next 

回答

0

Compute您的過濾功能似乎tbActivePlayers是基於關閉的每一行,但你」重新循環遍歷每行(並因此計數行)獨特玩家的視圖。我的大腦編譯器告訴我這很可能是你的邏輯錯誤的根源,因爲你可能使用一次只使用一個唯一的客戶ID的過濾器計算你的總和。考慮更改

objTotalBuyin = tbActivePlayers.Compute("Sum(Buyin)", "CustomerID = " & tbActivePlayers.Rows(iCount).Item("CustomerID")) 

objTotalBuyin = tbActivePlayers.Compute("Sum(Buyin)", "CustomerID = " & dtDataTable.Rows(iCount).Item("CustomerID")) 
+0

感謝阿德里安。事情是我也嘗試過。我添加了另一個這樣的列:Dim dtDataTable As DataTable = viewUniquePlayers.ToTable(True,「CustomerID」, - >「Name」),我指的是名稱,現在它起作用。再次感謝。 – alwaysVBNET