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

时间:2017-04-06 22:17:01

标签: sql vba ms-access access-vba

我在使用MS Access 2010查询时遇到了困难。我有一个大致包含以下字段的表:ID( AutoIncrement ),ACRES( Number ),VOLUME( Number ),BEGIN_DATE(< em>日期/时间),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 个答案:

答案 0 :(得分:2)

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

您的功能缺少此行:

GetCurrentFiscalYear = currentFiscalYear

否则它将始终返回NULL。