Hallo in die Runde,
ich habe eine Funktion, die mir einen Formularnamen ausliest. KLNDR789()
Wie bekommen ich nun diese Funktion in mein Kriterium?
"Wie [Formulare]![frm_Kalender_NK7]![WJ]"
Like [Formulare]![frm_Kalender_NK7]![WJ]
Der Teil "[frm_Kalender_NK7]" soll durch den Wert der Funktion ersetzt werden.
Wie muss das geschrieben werden?
Geht das so überhaupt?
Für einen guten Tipp, schon einmal Danke im Voraus.
LG
jagger
Wenn die Funktion in einem Standardmodul liegt:
WHERE XYZ = KLNDR789()
Hallo Ebs17,
ich bekomme den String nicht hin.
WHERE IsoWeekAndYear([tDate]) Like [Formulare]KLNDR789()![WJ]
Ich habe schon sämtliche Klammervarianten um und hinter "KLNDR789()" durch. Es klappt nicht.
Die Fehlermeldung kommt schon im Editor.
"Der von Ihnen eingegebene Ausdruck enthält einen ungültigen .- (Punkt) oder !-Operator oder ein ungültiges Klammerpaar()"
Die Funktion "KLNDR789()" liefert das gewünschte Ergebnis und liegt in einem Standardmodul.
Function KLNDR789() As String
Dim KLNDR As String
KLNDR = Nz(DLookup("Kalender789", "tab_int_Daten", ""))
MsgBox KLNDR
End Function
In vba geht das mit einer Variablen ja ganz easy.
Z.B.:
Dim KLNDR789 As String
KLNDR789 = Nz(DLookup("Kalender789", "tab_int_Daten", ""))
If IsMissing(ArgJahr) Then ArgJahr = Forms(KLNDR789)![kaJ]
Also: ..."Forms(KLNDR789)![kaJ]
Aber in dem Abfragekriterium klappt es nicht.
Wie muss denn so ein zusammengesetzter String aufgebaut sein? Ich kann auch nichts dazu im www finden.
Mit Dank im Voraus
LG
jagger
Hallo!
Zitat
Function KLNDR789() As String
Dim KLNDR As String
KLNDR = Nz(DLookup("Kalender789", "tab_int_Daten", ""))
MsgBox KLNDR
End Function
ZitatDie Funktion "KLNDR789()" liefert das gewünschte Ergebnis ...
Das glaube ich dir nicht. Die Funktion zeigt in der Msgbox das gewünschte Ergebnis, aber sie liefert es nicht.
Zum Ausprobieren:
sub Test()
msgbox KLNDR789()
end sub=> Kein Text in der Messagebox.
Fehler: Es fehlt der Code für die Funktionsrückgabe.
Function KLNDR789() As String
Dim KLNDR As String
KLNDR = Nz(DLookup("Kalender789", "tab_int_Daten", ""))
'MsgBox KLNDR
KLNDR789 = KLNDR
End Functionmfg
Josef
@Josef P.,
oops, Du hast natürlich mit der Funktion völlig recht.
Die msgbox hatte ich da nur drin, um zu sehen, ob sich da was tut. Die Funktionsrückgabe hat natürlich in meinem Beispiel gefehlt. Sorry. ???
Aber das löst leider nicht das Problem mit dem String für die Abfrage.
Danke fürs Mitmachen und Helfen!
LG
jagger
Warum verwendest du nicht noch eine Funktion, die die Werte liefert?
Public function FormularWert(byval FormName as String, byval ControlName as string) as Variant
FormularWert = Forms(FormName).Controls(ControlName).Value
end function
oder direkt mit der KLNDR789-Funktion:
Public function KLNDR789Wert(byval ControlName as string) as Variant
dim FormName as String
FormName = KLNDR789()
KLNDR789Wert = Forms(FormName).Controls(ControlName).Value
end function
Damit hast du Funktionen, die in der Abfrage ohne Forms(...) verwendet werden können.
[OT]
Ich bin allerdings kein besonderer Freund von Funktionen in Abfragen, die ein geöffnetes Formular benötigen, da mir das eine Abfrage zu abhängig macht.
mfg
Josef
Josef P.,
das klingt gut. Also den kompletten Sting in der Funktion zusammensetzen und dann im Kriterium der Abfrage nutzen.
ZitatIch bin allerdings kein besonderer Freund von Funktionen in Abfragen, die ein geöffnetes Formular benötigen, da mir das eine Abfrage zu abhängig macht.
Die Abfrage(n) "füllen" die Ufos.
Wenn das HF nicht geöffnet ist, sind auch die Ufos nicht in Gebrauch.
Danke für Deinen guten Tipp!
LG
jagger