我有一个数据表,当我调试时,我发现它已经充满了正确的数据。我正在尝试使用计算方法,但它并不顺利。 我试过了
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'")
我收到此错误
聚合参数中的语法错误:期望具有可能的“子”限定符的单个列参数。
我真的被困在这里好几个小时,并尝试了太多的东西,但似乎我错过了一些东西。我做错了什么?
答案 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'")