Проблема суммирования удваивается в DataTable с VB? - PullRequest
0 голосов
/ 27 апреля 2018

У меня проблема с суммированием столбца сумм в долларах в DataTable с VB. Я пробовал два разных способа, приводящих к двум различным ошибкам, которые я не уверен, как их устранить. Прежде чем перейти к двум путям, я попытался решить проблему, вот настройка:

Я импортирую файл с разделителями табуляции в DataTable. Заголовки автоматически заполняются данными из первой строки в файле. DataGridView, который отображает таблицу данных, называется DGV_detail.

Столбец в DGV_detail, который я пытаюсь суммировать, находится в столбце 3 и называется «Значение до даты». Этот столбец полон значений суммы в долларах, подобных: $ 10,00 со знаком доллара и всем прочим.

Я также объявляю переменные представления и выполняю некоторые вычисления при нажатии кнопки.

Вот мой первый подход:

For i As Integer = 0 To DGV_detail.Rows.Count() - 1 Step +1
    interestPaidToAccounts = interestPaidToAccounts + DGV_detail.Rows(i).Cells(3).Value
Next

Когда я пробую этот подход, я получаю следующую ошибку:

An unhandled exception of type 'System.InvalidCastException' occurred in Microsoft.VisualBasic.dll
Conversion from string "" to type 'Double' is not valid.

Другие методы, которые я пытался использовать для решения этой проблемы, были (Для справки: в этих примерах я создал локальную переменную для функции button_click, которая присвоила BGV_detail.DataSource равный dataTable1):

Dim sumObject = dataTable1.Compute("Sum(Convert(Value-to-date, 'System.Decimal'))", "[Value-to-date] IS NOT NULL")

и

Dim sumObject As Decimal = dataTable1.Compute("Sum(Value-to-date)", "")

, которая вызвала следующую ошибку:

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

На данный момент я довольно растерян, поэтому, независимо от того, что сообщество считает лучшим способом решения этих проблем, я открыт.

При необходимости могу предоставить дополнительную информацию! :)

Заранее спасибо за помощь!

1 Ответ

0 голосов
/ 27 апреля 2018

Знак доллара является проблемой, используйте mid, чтобы удалить его, и val, чтобы преобразовать в число:

val(mid(DGV_detail.Rows(i).Cells(3).Value, 2,DGV_detail.Rows(i).Cells(3).Value.length -1))

Не проверено, но вы должны начать ... Есть несколько способов удалить $.

...