Hallo
ich habe bereits mehrere Filterformulare, aus denen ich eine Listenfeld-Mehrfachauswahl an eine Funktionsvariable für eine Abfrage übergebe, und bei allen klappt das Procedere. Bloß bei diesem Fall nicht und ich weiß net wo ich da was falsch mache. Vielleicht hat jemand von euch einen Tip, denn irgendwie werden die Items nicht übergeben:
Modul: modFnGetVariable4
Option Explicit
Public gstrVariable4 As String
Public Function FnGetVariable4()
FnGetVariable4 = gstrVariable4
End Function
Übergabe-Ereignis im Filterformular:
Private Sub Kombinationsfeld49_Exit(Cancel As Integer)
Dim var As Variant
gstrVariable4$ = ""
For Each var In Me!Kombinationsfeld49.ItemsSelected
gstrVariable4$ = gstrVariable4$ & Me!Kombinationsfeld49.ItemData(var)
Next var
End Sub
SQL-Statement der Abfrage:
SELECT [Abfrage Materialverwendung].Materialgruppe, [Abfrage Materialverwendung].Seriennummer, [Abfrage Materialverwendung].Materialname, [Abfrage Materialverwendung].[Tages-KM], [Abfrage Materialverwendung].Datum, [Abfrage Materialverwendung].Nutzungsbeginn, [Abfrage Materialverwendung].Nutzungsende, [Abfrage Materialverwendung].Rad, [Abfrage Materialverwendung].[Material ausgemustert], [Abfrage Materialverwendung].[Material stillgelegt], [Abfrage Materialverwendung].[Nutzungsende akt]
FROM [Abfrage Materialverwendung]
WHERE ((([Abfrage Materialverwendung].Datum)>=[Abfrage Materialverwendung]![Nutzungsbeginn] And ([Abfrage Materialverwendung].Datum)<=[Abfrage Materialverwendung]![Nutzungsende akt]) AND (([Abfrage Materialverwendung].[Material ausgemustert])=[Formulare]![Filterform Verschleisszähler]![Kontrollkästchen47]) AND (([Abfrage Materialverwendung].[Material stillgelegt])=[Formulare]![Filterform Verschleisszähler]![Kontrollkästchen41]) AND (([Abfrage Materialverwendung].[Nutzungsende akt])<=[Formulare]![Filterform Verschleisszähler]![Nutzungsende]) AND ((FnGetVariable4()) Like "*" & [Materialgruppe] & "*"));
Wie gesagt, bei den anderen Abfragen, die so ähnlich aufgebaut sind funzt das, hier ist die Abfrage einfach leer. Wenn ich dann die Funktion aus der Abfrage lösche, kommen wieder Datensätze in der Abfrage.
Bin um jeden Tip dankbar.
Grüße
Michael
Hallo,
was soll die For Each var -Schleife bei einem Kombifeld bezwecken?
Schau Dir mal die Variable "gstrVariable4$" mit Debug.Print im Direktfenster an (oder mittels Haltepunkt setzen)
Was muss ich da tun? ???
Hallo,
also, auf eine solche Frage kann ich eigentlich nur antworten:
Bringe Dir zunächst anhand eines Tutorials die Grundlagen der VBA-Programmierung etwas näher....
Wenn Du schon mit Code hantierst, sollten auch die Debug-Möglichkeiten des VBA-Editors klar sein.
Haltepunkt setzen: Auf die links eines Modulfensters graue Leiste klicken ergibt einen braunen dicken Punkt, der eine "Haltestelle" im Codeablauf kennzeichnet. Kommt der Codeablauf an diese markierte Zeile, wird der Ablauf unterbrochen. Wenn dann der Cursor (Schreibmarke) auf eine Variable platziert wird, wird deren akt. Inhalt angezeigt.
Debug.Print ist die Methode ("Befehl") , um im Direktbereich (falls nicht sichtbar, über Menüleiste/Ansicht/Direktfenster akktivieren) irgendeinen Wert auszugeben, z. B.:
Debug.Print gstrVariable4$
Es könnte auch die Msgbox benutzt werden, um einen akt. Wert im Meldungsfenster anzuzeigen:
Msgbox gstrVariable4$