Now durch Stichtag ersetzen

25/02/2009 - 10:31 von Bernd W. | Report spam
In Access 2007 habe ich folgende Abfrage in Visual Basic definiert:

Private Sub Report_Open(Cancel As Integer)
Dim EingabeTag, Mldg, Titel, Stil, VorDatum As String
Dim G_Stichtag As Date
Mldg = "Geben Sie bitte einen Stichtag ein"
Titel = "Stichtag-Eingabe"
VorDatum = #1/1/2009#
EingabeTag = InputBox(Mldg, Titel, VorDatum)
G_Stichtag = CDate(EingabeTag)
End Sub

Public Function G_VierzigJ()
G_VierzigJ = DCount("Geburtsdatum", "G_Aufnahme", "(DateDiff
('yyyy',Geburtsdatum, Now) @) And AnmeldeStatus = 'K' ")
End Function

Mit NOW funktioniert das einwandfrei.
Jetzt würde ich gerne in die untere Funktion das NOW durch den
eingegebenen Stichtag (G_Stichtag) ersetzen.
Aber sobald ich G_Stichtag in die Funktion einsetze, kommt eine
Fehlermeldung "Ausdruck hat einen Fehler verursacht."
Als Gelegenheits-Access-Nutzer dachte ich, dass da so einfach ginge,
aber die Lösung scheint wohl komplizierte zu sein.
Kann jemand mir bitte auf die Sprünge helfen ?
Danke.
 

Lesen sie die antworten

#1 Thomas Kühn
25/02/2009 - 10:55 | Warnen spam
Hallo Bernd,



Public Function G_VierzigJ()
G_VierzigJ = DCount("Geburtsdatum", "G_Aufnahme", "(DateDiff
('yyyy',Geburtsdatum, Now) @) And AnmeldeStatus = 'K' ")
End Function




In dieser Funktion ist
1. G_Stichtag nicht deklariert.
2. Der dritte Parameter im DCount SQL Syntax enthalten muss.
G_Stichtag wird dort nicht als syntaktisch korrekt erkannt.

Die Lösung wàre hierfür:
1. Ein Option Explicit in das Modul setzen um fehlende Deklarationen
zu erkennen.
2. G_Stichtag im Modul Global zu deklarieren
3. Vor dem Aufruf auf ein gültiges G_Stichtag prüfen.
4. Das Kriterium für das DCount entsprechend gültiger SQL Syntax zu
bilden.
"(DateDiff('yyyy',Geburtsdatum, #" & Format(G_Stichtag, "mm\/dd\/
yyyy"") & "#) @) " &
"And AnmeldeStatus = 'K' ")

Gruß Thomas

http://www.thomas-kuehn.de

Ähnliche fragen