PDA

Vollständige Version anzeigen : Funktionswerte als Kriterien in Abfragen ?


RWg
23.06.2003, 20:42
Hi folks,

ich habe im Klassenmodul eines Formulars :
------------------------------------------------
Public Sub step_Click()

Dim Mldg, Titel, Voreinstellung, Wert1
Mldg = "Steuerbescheinigung für welches Jahr ?" ' Aufforderung festlegen.
Titel = "Kalenderjahr" ' Titel festlegen.
Voreinstellung = "2003" ' Voreinstellung festlegen.
' Meldung, Titel und Standardwert anzeigen.

BeschJahr = InputBox(Mldg, Titel, Voreinstellung)

fct_BescheinigungsJahr

End Sub
------------------------------------------------

und in einem Standardmodul :
------------------------------------------------
Public Function fct_BescheinigungsJahr()

fct_BescheinigungsJahr = BeschJahr

End Function
------------------------------------------------

Jetzt versuche ich, den Funktionswert als Kriterium in
einer Abfrage zu nutzen
------------------------------------------------
fct_BescheinigungsJahr()
------------------------------------------------

Wenn ich den Wert, den die Funktion zurückgeben sollte, direkt
als Kriterium der Abfrage eingebe, bekomme ich das gewünschte
Ergebnis.
Mit der Funktion als Kriterium bekomme ich eine leere Abfrage.

Was mache ich falsch?

cu
Roland

gentry205
23.06.2003, 21:58
Hallo Roland,

wie sieht denn deine Abfrage aus? So kann ich schlecht etwas dazu sagen.

RWg
24.06.2003, 12:26
@gentry205

naja, 'ne ganz simple Abfrage halt :

--------------------------------------------------------------------------
SELECT [Vorname] & " " & [Name] & ", " & [Strasse] & ", " & [PLZ] & " " & [Ort] AS VoNaAdr, tr_Mitglieder.GESCHLECHT, tr_Mitglieder.NAME, tr_Mitglieder.VORNAME, [Vorname] & " " & [Name] AS VoNa, tr_Mitglieder.STRASSE, [PLZ] & " " & [Ort] AS Adr, tr_Mitglieder.PLZ, tr_Mitglieder.ORT, Right([Datum],4) AS Dat
FROM tr_Zahlungen INNER JOIN tr_Mitglieder ON tr_Zahlungen.tr_Mitglieder_IDZ = tr_Mitglieder.tr_Mitglieder_ID
GROUP BY [Vorname] & " " & [Name] & ", " & [Strasse] & ", " & [PLZ] & " " & [Ort], tr_Mitglieder.GESCHLECHT, tr_Mitglieder.NAME, tr_Mitglieder.VORNAME, [Vorname] & " " & [Name], tr_Mitglieder.STRASSE, [PLZ] & " " & [Ort], tr_Mitglieder.PLZ, tr_Mitglieder.ORT, Right([Datum],4), tr_Mitglieder.AUSDAT
HAVING (((tr_Mitglieder.NAME)=[forms]![fr_Mitglieder]![name]) AND ((Right([Datum],4))=fct_BescheinigungsJahr()) AND ((tr_Mitglieder.AUSDAT) Is Null))
ORDER BY tr_Mitglieder.NAME, tr_Mitglieder.VORNAME;

--------------------------------------------------------------------------

Evtl. habe ich da ein Formatproblem mit dem Datum. Wird ein Datum mit der Funktion links() zum String oder bleibt es Date?

cu
Roland

erwin
24.06.2003, 12:32
wesentlicher scheint mir, WO die Variable "BeschJahr" deklariert ist. Diese muss als public (i.e. allg. Modul im Deklarationsbereich (=ganz oben ;) ) definiert sein, damit das überhaupt funktionieren kann. Und zur Laufzeit muß die Var. natürlich einen "sinnvollen" Wert haben.

HTH Erwin

PS: ausserdem achtest du überhaupt nicht auf "sinnvolle" Datentypen - besser:

public function fct_BescheinigungsJahr()) as integer

...Year([Datum])=fct_BescheinigungsJahr())

RWg
24.06.2003, 13:37
@erwin

vielen Dank, jetzt funkts


>wesentlicher scheint mir, WO die Variable "BeschJahr" deklariert ist.
>Diese muss als public (i.e. allg. Modul im Deklarationsbereich
>(=ganz oben ) definiert sein, damit das überhaupt funktionieren kann.

Nö, das war's nicht. Ein Test bewies, daß die public function schon im Standardmodul und nicht im Deklarationsbereich liegen muß.

>Und zur Laufzeit muß die Var. natürlich einen "sinnvollen" Wert haben.
>HTH Erwin

>PS: ausserdem achtest du überhaupt nicht auf "sinnvolle"
>Datentypen - besser:

Dieser Tipp war's :-)
>public function fct_BescheinigungsJahr()) as integer

und dieser:
>...Year([Datum])=fct_BescheinigungsJahr())

Also nochmal : vielen Dank

cu Roland

erwin
24.06.2003, 17:48
>>wesentlicher scheint mir, WO die Variable "BeschJahr" deklariert ist.
>>Diese muss als public (i.e. allg. Modul im Deklarationsbereich
>>(=ganz oben ) definiert sein, damit das überhaupt funktionieren kann.

>Nö, das war's nicht. Ein Test bewies, daß die public function schon im >Standardmodul und nicht im Deklarationsbereich liegen muß.

NICHT die function, sondern die Variablendeklaration (hab' ich doch geschrieben)

Public blabla as integer

public function getBlabla()
getBlabla = blabla
end function

slg Erwin...