无法对数据表

时间:2016-05-27 08:19:20

标签: vb.net datatable

我有一个数据表,当我调试时,我发现它已经充满了正确的数据。我正在尝试使用计算方法,但它并不顺利。 我试过了

Dim xx As DataTable = gelenData.Compute("Sum(H_PERSON_P_NO_543)", "H_PERSON_P_CINS_544 = 'ERKEK'")

这给我一个像

这样的错误
  

无法将'System.Int64'类型的对象强制转换为'System.Data.DataTable'。

当我尝试

Dim xx As DataView = gelenData.Compute("Sum(Convert([H_PERSON_P_NO_543], 'System.Int32'))", "H_PERSON_P_CINS_544 = 'ERKEK'")

 Dim xx As DataView = gelenData.Compute("Sum(Convert([H_PERSON_P_NO_543], 'System.Int64'))", "H_PERSON_P_CINS_544 = 'ERKEK'")

我收到此错误

  

聚合参数中的语法错误:期望具有可能的“子”限定符的单个列参数。

我真的被困在这里好几个小时,并尝试了太多的东西,但似乎我错过了一些东西。我做错了什么?

1 个答案:

答案 0 :(得分:2)

查看您的第一行代码:

Dim xx As DataTable = gelenData.Compute("Sum(H_PERSON_P_NO_543)", "H_PERSON_P_CINS_544 = 'ERKEK'")

您不能将xx声明为DataTable,因为它不返回DataTable对象,而是返回Int64。

它实际上做的是返回表达式的实际“总和”。

所以,如果你这样想:

  

“给我H_PERSON_NO_543的总和,其中H_PERSON_CINS_544   ='ERKEK'“

你有以下数据(仅举例):

H_PERSON_NO_543      H_PERSON_CINS_544
      1                 SOMETHING
      3                 ERKEK
      5                 ERKEK
      7                 SOMETHING ELSE

然后运行代码,它将返回 8 (因为有两行符合条件,一行的值为 3 ,另一行的值为 5 )。

当您尝试将其转换为DataTable时,它只会拒绝,因为它是一个很好的int而不是DataTable

因此,假设您想要总结表格中H_PERSON_NO_543列的值,那么您最好的选择是:

Dim xx As Integer = gelenData.Compute("Sum(H_PERSON_P_NO_543)", "H_PERSON_P_CINS_544 = 'ERKEK'")