使用VB在DataTable中对问题求和加倍?

时间:2018-04-27 15:12:04

标签: vb.net winforms tab-delimited

我在使用VB在DataTable中汇总一列美元金额时遇到了问题。我尝试了两种不同的方法导致两种不同的错误,我不知道如何解决。在我进入这两种方式之前,我试图解决这个问题的方法是设置:

我正在将制表符分隔文件导入DataTable。标题将自动填充文件中第一行的数据。 显示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 :(得分:0)

美元符号是问题,使用mid删除它和val转换为数字:

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

未经测试,但应该让你开始......有很多方法可以删除$。