Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: Kladdi am März 04, 2013, 10:19:50

Titel: Verkettung in Function/ Runtime Error 91
Beitrag von: Kladdi am März 04, 2013, 10:19:50
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
Titel: Re: Verkettung in Function/ Runtime Error 91
Beitrag von: database am März 04, 2013, 12:36:25
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
Titel: Re: Verkettung in Function/ Runtime Error 91
Beitrag von: Kladdi am März 04, 2013, 13:36:20
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



Titel: Re: Verkettung in Function/ Runtime Error 91
Beitrag von: daolix am März 04, 2013, 13:56:03
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
Titel: Re: Verkettung in Function/ Runtime Error 91
Beitrag von: Kladdi am März 04, 2013, 14:13:26
dann sollte es sich doch theoretisch so:

Set frmSelectionExport = Screen.ActiveForm

lösen lassen?!
Titel: Re: Verkettung in Function/ Runtime Error 91
Beitrag von: daolix am März 04, 2013, 14:29:30
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.
Titel: Re: Verkettung in Function/ Runtime Error 91
Beitrag von: Kladdi am März 04, 2013, 15:13:03
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
Titel: Re: Verkettung in Function/ Runtime Error 91
Beitrag von: daolix am März 04, 2013, 15:45:59
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.



Titel: Re: Verkettung in Function/ Runtime Error 91
Beitrag von: Kladdi am März 05, 2013, 09:42:49
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
Titel: Re: Verkettung in Function/ Runtime Error 91
Beitrag von: daolix am März 05, 2013, 12:24:12
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.
Titel: Re: Verkettung in Function/ Runtime Error 91
Beitrag von: Kladdi am März 05, 2013, 12:51:34
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.

Titel: Re: Verkettung in Function/ Runtime Error 91
Beitrag von: daolix am März 05, 2013, 12:57:49
Mist, tschuldigung mein Fehler. muss lauten IIF (ohne $). Manchmal unterscheide ich halt nicht zwischen den Dialikten.
Titel: Re: Verkettung in Function/ Runtime Error 91
Beitrag von: Kladdi am März 05, 2013, 13:10:44
Woooah es funktioniert!

Lieben vielen Dank! :D