为什么我的datatable.compute和代码不起作用。如何将过滤器代码添加到Sum函数中

时间:2018-02-12 14:45:03

标签: database ms-access access-vba

这是我的视觉基本代码。我有一个Access数据库。收入表,收入金额,月份等列。我已经验证了数据在表中并且正在加载到数据集中。肯定有一个" 2018年1月" MonthYr列中的值。而且我在收入金额列中也有十进制数字。

Dim sum = IncomeTable.Compute("SUM(Income Amount)", "MonthYr = January 2018")

'上面的代码会导致此错误:在2018年之后缺少操作数'操作

Dim sum = IncomeTable.Compute("SUM(Income Amount)", "MonthYr = 'January 2018'")

'上面的代码导致此错误:聚合参数中的语法错误:期望单个列参数可能具有' Child'限定符。

Dim sum = IncomeTable.Compute("SUM(Income Amount)", "MonthYr = [January 2018]")

'上面的代码导致此错误:找不到列[2018年1月]。

- 在Access中,收入金额列是货币数据类型,而MonthYr列是短文本数据类型

- 我尝试了各种其他的事情,例如使用_underscore来替换列名和" 2018年1月和#34; - 我一直在寻找msdn和谷歌,并尝试了我能想到的代码的每个变体。

1 个答案:

答案 0 :(得分:0)

你的语法完全不合适 - 不管你从哪里得到它。

可能是:

Dim SumAmount As Currency
SumAmount = DSum("[Income Amount]", "IncomeTable", "MonthYr = 'January 2018'")

在VB中

打开记录集:

"Select Sum([Income Amount]) From IncomeTable Where MonthYr = 'January 2018'"