我有一个从数据库查询填充的数据表对象。
我正在尝试使用此功能实现总计行
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
添加方括号没有帮助。
我也尝试过添加`字符,但这不起作用