MS Access 查询在查询中返回 0 个计数

Posted

技术标签:

【中文标题】MS Access 查询在查询中返回 0 个计数【英文标题】:MS Access query returning 0 count in query 【发布时间】:2017-04-06 22:17:00 【问题描述】:

我在使用 MS Access 2010 查询时遇到了困难。我有一张表,大致有以下字段:ID (AutoIncrement)、ACRES (Number)、VOLUME (Number)、BEGIN_DATE (日期/时间)、CONTRACT_AMT(货币)、COLLECTED_AMT(货币)。

然后我创建了一个查询表,该表使用以下表达式计算了一个包含 BEGIN_DATE 的财政年度(7 月 1 日至 6 月 30 日)的字段:

FYBegin: IIf([CalendarMonthBegin] Between 7 And 12,[CalendarYearBegin]+1,
[CalendarYearBegin]) 

我现在需要做的是创建一个查询来计算 ID,并将本财政年度的体积、英亩、合同和收款金额相加。

我创建了以下 VBA 函数来获取当前会计年度:

Public Function GetCurrentFiscalYear(ByVal CurrentDate As Date)
'Returns the current fiscal year for CurrentFY_Summary query

Dim yearToday As Integer
Dim monthToday As Integer
Dim currentFiscalYear As Integer

yearToday = Year(CurrentDate)
Debug.Print (yearToday)
monthToday = Month(CurrentDate)
Debug.Print (monthToday)

If monthToday > 6 And monthToday < 13 Then
    currentFiscalYear = yearToday + 1
    Debug.Print (currentFiscalYear)
Else
    currentFiscalYear = yearToday
    Debug.Print (currentFiscalYear)
End If
End Function

但是当我尝试使用以下 SQL 创建另一个查询时:

SELECT Count(FiscalYear.ID) AS [Count of Records], Sum(FiscalYear.ACRES) AS 
[Sum Of ACRES], Sum(FiscalYear.VOLUME) AS [Sum Of VOLUME], 
Sum(FiscalYear.CONTRACT_AMT) AS [Sum Of CONTRACT_AMT], 
Sum(FiscalYear.COLLECTED_AMT) AS [Sum Of COLLECTED_AMT]
FROM FiscalYear
WHERE (FiscalYear.FYBegin) = GetCurrentFiscalYear(Now());

我只在计数字段中得到一个 0,没有其他记录。我可以直观地看到记录与条件匹配,并且我使用即时窗口来验证 VBA 函数是否以整数形式返回正确的会计年度。 SQL 语句和/或 VBA 函数有什么不正确之处。

谢谢。

【问题讨论】:

【参考方案1】:

在这种情况下,您的 Debug.Print 命令正在欺骗您。它们打印内部变量,但不打印函数返回值。

您的函数缺少这一行:

GetCurrentFiscalYear = currentFiscalYear

否则它将始终返回 NULL。

【讨论】:

以上是关于MS Access 查询在查询中返回 0 个计数的主要内容,如果未能解决你的问题,请参考以下文章

在 SQL Server 查询中复制 MS Access “First”函数

ms-access 查询需要连接编号或计数

MS Access Sql 查询不是聚合函数的一部分。使用计数功能

MS Access - 在 1 个报告中使用多个查询

MS Access 查询返回的记录不足,但仅限于某些约束

当表有 42 个字段时,为啥 .NET 中的 MS Access adodb 在字段计数中返回 34?