2017-04-06 84 views
2

我在使用MS Access 2010查询时遇到困难。我有一个大致具有以下字段的表:ID(自动递增)英亩(号码),VOLUME(号码),BEGIN_DATE(日期/时间),CONTRACT_AMT(货币),COLLECTED_AMT( 货币)。在查询中返回0计数的MS Access查询

我然后用这个表达式创建的BEGIN_DATE的是计算领域与会计年度(7月1日至六月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函数有什么不正确。

谢谢。

回答

2

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

你的功能缺失这一行:

GetCurrentFiscalYear = currentFiscalYear 

否则将始终返回NULL。

+0

这样做。谢谢。 – tpdance