0

データベースクエリから入力されたデータテーブルオブジェクトがあります。

この関数を使用して合計行を達成しようとしています

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

角括弧を追加しても役に立ちません。

`文字も追加しようとしましたが、うまくいきません

4

2 に答える 2

2

.Compute式では、関数CONVERTSUM集計内で呼び出されています。集計関数は、SUM式ではなく単純な列名を想定しています。

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

于 2012-12-06T00:26:59.367 に答える