Hallo,
mein Code soll alle Elemente einer ListBox als Kriterium für eine Abfrage nehmen.
Funktioniert soweit auch ganz super, nur dass er mir jetzt andauernd den Fehler:
"Object variable or With block variable not set"
zeigt. Der Fehler liegt wohl im Schleifenkopf.
Function Liste()
Dim i As Variant
Dim strvalue As String
Dim frmSelectionExport As Form_frmSelectionExport
strvalue = "="
For Each i In frmSelectionExport.List16
strvalue = strvalue & "OR" & [i]
Next i
End Function
Ich hab echt ein Brett vor dem Kopf. Kann mir wer helfen und sagen wo der Fehler liegt bzw. wie ich das Problem löse?
Mfg Kladdi
Hallo,
versuch mal so:
Function Liste()
Dim i As Variant
Dim strvalue As String
Dim frmSelectionExport As Form_frmSelectionExport
strvalue = "="
For i = 0 To frmSelectionExport.List16.ListCount -1
strvalue = strvalue & " OR " & frmSelectionExport.List16.ItemData(i)
Next i
End Function
Hatte es vorhin schon mal so ähnlich versucht, habe trotzdem mal deinen Code ausprobiert.
Hat leider nicht funktioniert, selber Fehler und immernoch im Schleifenkopf. :-\
Wenn ich das Formular neu instanziere läuft er durch, bringt mir nur nichts weil das Formular ja dann leer ist.
Mfg Kladdi
weil mit Dim frmSelectionExport As Form_frmSelectionExport ist das frmSelectionExport - Object erst mal nix (Nothing oder nicht zugewiesen)
es fehlt die Zeile mit der zuweisung
Set frmSelectionExport = Verweis auf das laufende Object
dann sollte es sich doch theoretisch so:
Set frmSelectionExport = Screen.ActiveForm
lösen lassen?!
ja, wenn sichergestellt ist das das Aktive Form das gewünschte ist. Aber dann auch nur in Verbindung mit z.B dem Code von database, mit deiner for each schleife wirds ggf nicht funktionieren.
Super es funktioniert, danke! :)
Nur dass meine Abfrage keine Werte liefert, für die diese Function als Kriterium dient.
Aber das ist ein anderes Problem...
Mfg Kladdi
ohne das ich jetzt deine weitere verarbeitung deines Codes kenne, wenn's aber stringwerte sind welche du übergibst, so musst du diese in Gänsefüßchen setzen, die Stringvariable muss valid sein, dein unten geposteter Code ergibt aber strvalue = "= or bla or bla ...", was falsch ist. Richtiger wäre strvalue = "[Feldname] = 'bla' or [Feldname] = 'bla'..." oder ggf. strvalue = "IN ('bla', 'bla'...)" wandeln.
Grundsätzlich dient das als Report-Möglichkeit, sprich der User hat die Möglichkeit Monate auszuwählen um für diese Monate Buchungen sehen zu können. Die ausgewählten werden der Übersicht halber in einer ListBox angezeigt. Eine Abfrage soll nun die Elemente aus der "Ausgewählt"-ListBox als Kriterium nehmen, damit ich im Anschluss die Abfrage exportieren kann.
Wenn ich dich nun richtig verstanden haben, müsste der Code ja theoretisch so aussehen.
For i = 0 To frmSelectionExport.List16.ListCount - 1
'strvalue = strvalue & gf & frmSelectionExport.List16.ItemData(i) & gf & gf & " = tblBooking.[boRevenue Recognition Fiscal Year Month Display Code] & gf & " Or ""
strvalue = "tblBooking.[boRevenue Recognition Fiscal Year Month Display Code] = frmSelectionExport.List16.ItemData(i) & " Or " & strvalue"
Next i
Hier bekomm ich aber einen Runtime Error 13 "Type-Missmatch".
Was mach ich falsch?
Mfg Kladdi
hallo
probiers mal so:
strvalue = "tblBooking.[boRevenue Recognition Fiscal Year Month Display Code] = " & frmSelectionExport.List16.ItemData(i) & IIF$(len(strvalue) ," Or " & strvalue, "")
sollten die die rückgabewerte deiner listbox vom typ string sein so müsste die zeile lauten:
strvalue = "tblBooking.[boRevenue Recognition Fiscal Year Month Display Code] = '" & frmSelectionExport.List16.ItemData(i) & IIF$(len(strvalue) ,"' Or " & strvalue, "'")
und nach next i könntest du ein debug.print strvalue ausführen und im Direktfenster schauen ob dein zusammengesetzter string valid ist.
Danke dir erstmal,
aber er zeigt mir einen Compile-Error bei dem "IIf$" an.
"Type declaration character does not match declared data type."
strvalue ist als string deklariert muss ich dazu sagen.
Mist, tschuldigung mein Fehler. muss lauten IIF (ohne $). Manchmal unterscheide ich halt nicht zwischen den Dialikten.
Woooah es funktioniert!
Lieben vielen Dank! :D