0

我一直在試圖一整天都在爲這個問題找到一個解決方案,但是我一直無法自己想出解決方案或者在網上找到它。從datagridview中計數數據

我的問題是以下幾點:我在vb.net 2010中創建一個應用程序我有一個Access DataBase連接到該項目。這個數據庫有兩個表,一個是代表,另一個是演示。我試圖提供一些有關代表的有用統計信息,例如總體演示,總銷售額(CPO),總推薦數,給出的總演示數和已售演示機總數。我已經成功獲得前3名的工作,但未能獲得最後2名。這個問題的一個問題是,輸入到該字段的數據是簡單的「是」或「否」,我不知道如何投入如果單元格的值爲「是」,則代碼將加1加到計數器,如果代碼的「否」加1加一個不同的計數器。

這是我到目前爲止的代碼,爲前3個統計。

'To calculate the total demos when you change the Representative 
    Dim row As Cutco_testDataSet.DemosRow 

    Dim intTotalItems As Integer 
    For Each row In Cutco_testDataSet.Demos.Rows 
     intTotalItems += 1 
    Next 
    lblTotalItems.Text = intTotalItems.ToString 

    'Declare the variables for the values to be stored and later displayed 
    Dim intTotalCPO As Integer 
    Dim intTotalRecs As Integer 

    'to look in Demosdgv and add the corresponding data 
    For i As Integer = 0 To Cutco_testDataSet.Tables(0).Rows.Count - 1 
     intTotalCPO += Cutco_testDataSet.Tables(0).Rows(i).Item("CPO") 
     intTotalRecs += Cutco_testDataSet.Tables(0).Rows(i).Item("Rec's") 
    Next 
    lblTotalCpo.Text = intTotalCPO.ToString("c0") 
    lblTotalRecs.Text = intTotalRecs.ToString() 

另外我遇到了麻煩,當它爲null它告訴我它不能添加DBNull。 有沒有反正計數器只是進行和忽略,如果價值還沒有輸入(空)或只計爲零0.

在此先感謝!

回答

0

我重寫代碼:

'Dim row As Cutco_testDataSet.DemosRow 

'Dim intTotalItems As Integer 
'For Each row In Cutco_testDataSet.Demos.Rows 
' intTotalItems += 1 
'Next 
'No need to use above "for loop" for counting total rows. 
lblTotalItems.Text = Cutco_testDataSet.Demos.Rows.Count 

'Declare the variables for the values to be stored and later displayed 
Dim intTotalCPO As Integer 
Dim intTotalRecs As Integer 
dim intTotdemosgiven as Integer 

'to look in Demosdgv and add the corresponding data 
'For i As Integer = 0 To Cutco_testDataSet.Tables(0).Rows.Count - 1 
For Each row as Datarow in Cutco_testDataSet.Tables(0).Rows 
    intTotalCPO += NullToZero(row("CPO")) 
    intTotalRecs += NullToZero(row("Rec's")) 

    intTotdemosgiven = intTotdemosgiven + IIf(UCase(nulltostring(row("DemosGiven"))) = "YES", 1, 0) 'I dont know exact field name for Demos given. 

Next 
lblTotalCpo.Text = intTotalCPO.ToString("c0") 
lblTotalRecs.Text = intTotalRecs.ToString() 



Public Function NullToZero(ByRef FieldVal) As Double 
'This function converts null or blank values to zero. 
    If FieldVal Is Nothing OrElse FieldVal.ToString() = vbNullString Then 
     Return 0 
    Else 
     Return FieldVal 
    End If 
End Function 

Public Function NullToString(ByRef FieldVal) As String 
    If FieldVal Is Nothing OrElse IsDBNull(FieldVal) Then 
     Return vbNullString 
    Else 
     Return FieldVal 
    End If 
End Function 

希望這有助於

+0

嗨SAURABH, 非常感謝你抽出時間來回答和我的代碼重寫,以一個沒有工作。您發佈的代碼完美無瑕!真的非常感謝你!! – Ans

+0

好吧,這很奇怪......我測試並調整了你給我的代碼,並且一切正常。現在突然之間,似乎沒有理由給我這個錯誤,而不是像以前那樣完美地工作。 重載決策失敗,因爲沒有公開「用Ucase」可以用這些參數調用: 「公共共享功能用Ucase(價值爲CHAR)爲char」: 參數匹配參數「值」無法從「DBNull的」轉換爲「字符」。 '公共共享函數UCase(值爲字符串)作爲字符串': – Ans

+0

請參閱編輯。 – Saurabh