August 06, 2020, 20:49:32

Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!


Übergabe Mehrfachauswahl an Funktionsvariable - irgendwo klemmts

Begonnen von ritzenflitzer, Juni 06, 2011, 18:28:21

⏪ vorheriges - nächstes ⏩

ritzenflitzer

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

DF6GL

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)


DF6GL

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$