0

我整天都在努力寻找解决这个问题的方法,但我无法自己想出解决方案或在网上找到它。

我的问题如下:我在 vb.net 2010 中创建一个应用程序我有一个连接到项目的 Access 数据库。该数据库有 2 个表,一个是代表,另一个是演示。我正在尝试提供一些有关代表的有用统计数据,例如演示总数、总销售量 (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()

当值为空时我也遇到了麻烦,它告诉我它不能添加 DBNull。无论如何,如果尚未输入值(null)或只是将null计数为0,计数器是否会继续并忽略。

提前致谢!

4

1 回答 1

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

希望这可以帮助

于 2013-09-30T09:47:16.960 回答