У меня есть данные в столбце представления сетки данных
dgvAccDetail.Rows (i) .Cells (3) .Value = dtVD.Rows (i) .Item («ДЕБЕТ»). ToString.Trim
теперь мне нужно получить сумму столбца «ДЕБЕТ», для этого ...
Dim tot As Integer = 0
For i As Integer = 0 To dgvAccDetail.RowCount - 1
tot += dgvAccDetail.Rows(i).Cells(4).Value
Next
If tot = 0 Then
MessageBox.Show("No Records Found")
End If
TXTVoucherDTotal.Text = tot.ToString()
но я получил сообщение
"преобразование из строки в тип double недопустимо"
пожалуйста, скажите мне, что не так с этим кодом,


вы пытаетесь добавить строковое значение к целочисленному значению.
dgvAccDetail.Rows(i).Cells(4).Value возвращает строку.
Вы можете разобрать его до целого числа:
tot += Integer.Parse(dgvAccDetail.Rows(i).Cells(4).Value)
спасибо за ответ, теперь я получил другое сообщение "Входная строка была в неправильном формате"
Какое значение у строки?
это 600 --- dgvAccDetail.Rows (i) .Cells (3) .Value = dtVD.Rows (i) .Item ("DEBIT"). ToString.Trim
Попробуй это:
For i = 0 To dgvAccDetail.RowCount - 1
tot += Cint(dgvAccDetail(4, i).Value)
Next
Во-первых, включите Option strict, это поможет вам избежать многих ошибок в будущем. Если параметр строго выключен, компилятор должен определять типы данных, и поэтому ваши вычисления не будут работать.
Во-вторых, измените эту строку:
dgvAccDetail.Rows(i).Cells(3).Value = dtVD.Rows(i).Item("DEBIT").ToString.Trim
'This line doesn't compile with option strict on
К
dgvAccDetail.Rows(i).Cells(3).Value = dtVD.Rows(i).Cells("DEBIT").Value()
Наконец, вы пытаетесь выполнять математические операции с текстом, вам нужно сначала преобразовать значение ячейки в правильный формат.
If dgvAccDetail.rows.count > 0
Dim tot As double = 0 'integer will only work for whole numbers.
'It will disregard fractional values if set to integer.
For i As Integer = 0 To dgvAccDetail.Rows.Count - 1
tot = tot + Cdbl(dgvAccDetail.Rows(i).Cells(4).Value)
Next
TXTVoucherDTotal.Text = Format(tot,"0.00")
Else
MessageBox.Show("No Records Found")
End If
Вычислительный метод DataTable принимает 2 строки; выражение и фильтр. Используйте соответствующий столбец в DataTable.
Dim columnSum As Integer = CInt(dtVD.Compute("Sum(DEBIT)", Nothing))
Какой у вас источник данных? Это дата?