2017-04-06 11 views
2

MS Access 2010クエリに問題があります。 ID(自動インクリメント)、ACRES(番号)、VOLUME(番号)、BEGIN_DATE(日付/時刻)、CONTRACT_AMT(通貨)、COLLECTED_AMT(:私は、おおよそ次のフィールドを持つテーブルを持っています通貨)。 BEGIN_DATEの私は、その後(6月30日に7月1日)当連結会計年度でフィールドを計算照会表を作成しクエリで0カウントを返すMSアクセスクエリ

この式を使った:私は今行う必要がある何

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

関連する問題