对数据表中的行求和,需要具有可能的'Child'限定符的单列参数



>我有一个从数据库查询填充的数据表对象。

我正在尝试使用此函数实现总计行

Public Function getDataTable(data) As DataTable
    Dim theTable As New DataTable()
    theTable.Columns.Add(New DataColumn("Location"))
    theTable.Columns.Add(New DataColumn("Total Sales"))
    theTable.Columns.Add(New DataColumn("VAT"))
    theTable.Columns.Add(New DataColumn("Refunds"))
    theTable.Columns.Add(New DataColumn("VAT refund"))
    theTable.Columns.Add(New DataColumn("Total VAT"))
    theTable.Columns.Add(New DataColumn("Turnover"))
    theTable.Columns.Add(New DataColumn("Turnover Net"))
    ' Location, Sale value, VAT, Refund, VAT refund, Total Vat, Turnover (Gross) 
    For Each ele In data
        Dim thisRow As DataRow = theTable.NewRow()
        thisRow.Item("location") = ele("name")
        thisRow.Item("Total Sales") = "£" & FormatNumber(ele("totalSales"), 2)
        thisRow.Item("VAT") = "£" & FormatNumber(ele("totalVat"), 2)
        thisRow.Item("Refunds") = "£" & FormatNumber(ele("refundTotal"), 2)
        thisRow.Item("VAT refund") = "£" & FormatNumber(ele("vatRefunded"), 2)
        thisRow.Item("Total VAT") = "£" & FormatNumber((ele("totalVat") - ele("vatRefunded")), 2)
        thisRow.Item("Turnover") = "£" & FormatNumber(ele("netSales"), 2)
        thisRow.Item("Turnover Net") = "£" & FormatNumber((ele("netSales") - ele("totalVat")), 2)
        theTable.Rows.Add(thisRow)
    Next
    Dim totalRow = theTable.NewRow
    For Each col As DataColumn In theTable.Columns
        If col.ColumnName <> "Location" Then
            Try
                totalRow(col.ColumnName) = Convert.ToDouble(theTable.Compute("SUM(CONVERT([" & col.ColumnName & "], CHAR(64)))", Nothing).ToString)
            Catch ex As Exception
                totalRow(col.ColumnName) = "grr"
            End Try
        Else
            totalRow("Location") = "Total"
        End If
    Next
    theTable.Rows.Add(totalRow)
    Return theTable
End Function

如您所见,我们正在创建一个包含 8 列的表,第一列是位置名称,其余是数字。我跳过了带有简单if子句的"位置"行的总和。

不过,我一直收到此错误:

Expecting a single column argument with possible 'Child' qualifier.

我读过几篇帖子,但似乎没有什么能解决它。

我认为我的列名称中的空格可能是一个问题,这篇文章建议这样做:

http://forums.asp.net/t/1341960.aspx/1

添加方括号无济于事。

我也尝试添加'字符,但这不起作用

.Compute表达式中,CONVERT函数在SUM聚合中被调用。SUM聚合函数需要一个简单的列名,而不是表达式。

http://msdn.microsoft.com/en-us/library/system.data.datatable.compute(v=vs.100).aspx

我正在使用数据表并遇到了同样的问题。我正在使用:

dataTableNew.Columns.Add("Tax Rate", GetType(System.Double))

一旦我用下划线替换空格,它就起作用了:

dataTableNew.Columns.Add("Tax_Rate", GetType(System.Double))

我认为它不喜欢空间。

相关内容

最新更新