データベースクエリから入力されたデータテーブルオブジェクトがあります。
この関数を使用して合計行を達成しようとしています
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
角括弧を追加しても役に立ちません。
`文字も追加しようとしましたが、うまくいきません