2017-04-06 3 views
2

Ich habe Schwierigkeiten mit einer MS Access 2010 Abfrage. Ich habe eine Tabelle, die die folgenden Felder grob hat: ID (AutoIncrement), acres (Anzahl), VOLUME (Anzahl), BEGIN_DATE (Datum/Uhrzeit), CONTRACT_AMT (Währungs), COLLECTED_AMT (Währung).MS Access Abfrage zurückgeben 0 Anzahl in Abfrage

Ich habe dann eine Abfrage-Tabelle, die ein Feld mit dem Geschäftsjahr berechnet (1. Juli - 30. JUNI) des BEGIN_DATE mit diesem Ausdruck:

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

Was ich jetzt tun muß, ist eine Abfrage erstellen, zählt die IDs und summiert das Volumen, die Hektarzahl, den Vertrag und die gesammelten Beträge in diesem Geschäftsjahr.

Ich habe die folgende VBA-Funktion das laufende Geschäftsjahr zu erhalten:

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 

Aber wenn ich versuche eine andere Abfrage mit dem folgende SQL zu erstellen:

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()); 

bekomme ich nur ein 0 in das Zählfeld und keine anderen Datensätze. Ich kann visuell sehen, dass Datensätze den Kriterien entsprechen, und ich habe das unmittelbare Fenster verwendet, um zu überprüfen, ob die VBA-Funktion das korrekte Geschäftsjahr und als Ganzzahl zurückgibt. Was ist an der SQL-Anweisung und/oder VBA-Funktion falsch?

Vielen Dank.

Antwort

2

Ihre Debug.Print Befehle täuschen Sie in diesem Fall. Sie drucken interne Variablen, aber nicht den Rückgabewert der Funktion.

Ihre Funktion fehlt diese Zeile:

GetCurrentFiscalYear = currentFiscalYear 

sonst ist es immer NULL zurück.

+0

Das hat den Trick gemacht. Vielen Dank. – tpdance