【问题标题】:Counting data from a datagridview计算来自 datagridview 的数据
【发布时间】:2013-09-30 05:05:48
【问题描述】:

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

我的问题如下:我正在 vb.net 2010 中创建一个应用程序我有一个连接到项目的 Access 数据库。该数据库有 2 个表,一个是代表,另一个是演示。我正在尝试提供一些有关代表的有用统计数据,例如演示总数、总销售量 (CPO)、推荐总数、给出的演示总数和售出的演示总数。我已经成功地让前 3 个工作,但未能让最后 2 个工作。这个问题是输入到该字段的数据是简单的是或否,我不知道如何输入代码如果单元格的值为 Yes 则将加 1 加到计数器,如果它的值为 No 则将加 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,计数器是否会继续并忽略。

提前致谢!

【问题讨论】:

    标签: vb.net ms-access datagridview vb.net-2010 datagridviewcolumn


    【解决方案1】:

    我正在重写你的代码:

    '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
    

    希望对你有帮助

    【讨论】:

    • 嗨,Saurabh,非常感谢您抽出宝贵时间回答我的代码并将其重写为有效的代码。您发布的代码完美无缺!非常感谢!
    • 好吧,这很奇怪……我测试并调整了你给我的代码,一切正常。现在突然之间似乎没有理由给我这个错误,而不是像以前一样完美地工作。重载解析失败,因为无法使用以下参数调用公共“UCase”:“公共共享函数 UCase(Value As Char)As Char”:参数匹配参数“Value”无法从“DBNull”转换为“Char”。 '公共共享函数UCase(值作为字符串)作为字符串':
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-27
    • 2014-09-15
    • 1970-01-01
    • 1970-01-01
    • 2017-01-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多