Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Filter in Access

Begonnen von Nicolo#22, September 11, 2025, 09:15:46

⏪ vorheriges - nächstes ⏩

Nicolo#22

Guten Tag und danke für die Aufnahme hier.
Zu mir:
Bin seit Jahren mit etwas einfachen Dingen in Access tätig. Ich nutzte mehrere DB für div. Zwecke.
Mit VBA bin ist leider bei weitem nicht so fähig wie die Profis.
Habe aus einem Forum welches nicht mehr existiert mal einen Code bekommmen der auch super
funktioniert, bis auf folgendes:
Tippe ich in einem Combo (Listenauswahlfeld) einen Wert ein der nicht in der Liste ist, kommt
die Fehlermeldung Laufzeitfehler 2237. Das Formular muß dann geschlossen werden weil nichts mehr funktioniert.
Kann man den Fehler irgendwie abfangen? So das dieses FRM weiter funktioniert?
Der Code der beim Laden eingetragen ist nennt sich CC Filter und stammt von
' Module    : clsCCFilter
' Author    : Christian Coppes
' Date      : 07.03.2011
' Last Change: 08.06.2012
Kennt das jemand der Profis hier? Evtl. aus dem alten MS Access Forum?
Oder hat der Fehler damit nichts zu tun und muß anders behandelt werden?
Sorry evtl. für mein schlechtes Deutsch.

Knobbi38

#1
Hallo Nicolo,

die Fehlermeldung (2237) besagt, dass ein Wert in der Combobox eingegeben worden ist, welcher nicht in der Datenquelle vorkommt. Man kann so etwas im NotInList Ereignis der Combobox abfangen.
Siehe auch https://learn.microsoft.com/de-de/office/vba/api/access.combobox.notinlist

Nun, die verwendete Klasse und der Autor (Bitsqueezer) sind eigentlich hinlänglich bekannt und er ist auch gelegentlich hier im Forum anzutreffen.  :)

Die Version ist aber glaube ich ein wenig veraltet. Vielleicht schaust du mal auf seiner Downloadseite vorbei:
https://www.ccedv.de/downloads/php/downloads.php?lang=de

Gruß Knobbi38

Nicolo#22

Hallo Knobbi38, das dier Fehler kommt wenn ich einen falschen Wert eintippe, hatte ich schon verstanden.
Ich möchte allerdings nicht das ein neuer Wert eingetragen wird (dein Link) sondern verhindern
das dieses FRM danach unbrauchbar ist, zumindest die Filterung in dem >Feld< vom CC.
Es lässt sich aber sicher in dem Feld ein Code hinterlegen welcher mich darauf hinweist das ein falscher Wert
eingetippt wurde und somit den Absturz verhindert.
Hab schon mal sowas gelesen, aber ohne Hilfe wird das für mich schwierig.
Grüße

Knobbi38

Hallo Nicolo,

so ganz habe ich dein Anliegen noch nicht verstanden, auch kenne ich die Klasse "clsCCFilter" nicht.

Wie schon beschrieben, kannst du diesen Fehler im NotInList-Ereignis der Combobox behandeln, oder du fängst den Fehler im Form_Error Ereignis ab. Wie das geht, kannst du der kleinen Beispieldatenbank im Anhang entnehmen.

Knobbi38



PhilS

Zitat von: Nicolo#22 am September 12, 2025, 13:51:38Es lässt sich aber sicher in dem Feld ein Code hinterlegen welcher mich darauf hinweist das ein falscher Wert
eingetippt wurde und somit den Absturz verhindert.
Ich kenne das genannte Beispiel selbst nicht. Vielleicht kann @Bitsqueezer dazu genaueres sagen.

Du könntest aber mal probieren, ob es vielleicht schon ausreicht den Fehler im NotInList-Ereignis mit Response = acDataErrContinue zu unterdrücken:
Private Sub DeineCombobox_NotInList(NewData As String, Response As Integer)
  MsgBox "Den eingegebenen Wert gibt es nicht."
  Response = acDataErrContinue
End Sub
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

Bitsqueezer

Hallo,

schau mal auf meiner Downloadseite www.ccedv.de, da findest Du die Filterklassen-Datenbank.
Am besten testest Du erst mal hier, ob der Fehler hier auch auftritt. Wenn nicht, würde ich mal vermuten, daß es eigene Programmierung war. Das läßt sich dann nicht so einfach herausfinden, da müßtest Du schon eine Demodatenbank hochladen.

Gruß

Christian

Nicolo#22

Zitat von: PhilS am September 12, 2025, 14:50:48Du könntest aber mal probieren

Die Msg Box kommt dann, okay, aber es wird der Fehler 3709 gemeldet >Beenden > Debuggen
Also ebenso Absturz.
@christian
Dein Filtermodul wende ich schon ein paar Jahre mit großer Begeisterung an. Es hat allerdings ne Menge Zeit
gekostet bis ich halbwegs verstanden habe wie man es einbaut, bin eben Laie.
Demodatenbank muss ich schauen. Die aktuelle ist riesig für meine Verhältnisse.
Das dauert, bis ich das hinbekommen würde.
Ich schaue mich mal auf deiner Seite um.
Vielen herzlichen Dank für die Hilfe bis hier. So schnell habe ich keine Hilfe erwartet. Super Sache hier.
DANKE !!

Bitsqueezer

Hallo,

die Access-Gemeinde hält eben zusammen.. ;)

Ist eigentlich nicht so schwer, wenn Du Dir die Demodatenbank anschaust.
Wenn Du die Filterklasse verwendest ohne den Popup-Filter, mußt Du etwas mehr Arbeit investieren, weil Du selbst die Filterfelder einbauen mußt und passend zu den Namen der Tabellenfelder anpassen mußt. Mit dem sehr kurzen Init-Code sucht sich die Klasse selbst die Felder und verwaltet sie.
Daher sollen diese Felder auch keine eigenen Events im Formular verwenden - macht alles die Filterklasse.
Beim Popup-Formular mußt Du lediglich einen Button und einen Init-Code in Dein Formular einbauen, über den Button werden dann alle Filterfelder automatisch generiert und in einem Popup angezeigt. Das Verhalten kann man auch noch anpassen.

Ergibt sich, wenn Du Dir die Demodatenbank und den Formularcode anschaust.

Listboxen sind übrigens nicht unterstützt, nur Textboxen, Comboboxen und Checkboxen.

Fehlermeldungen müssen mit einem Errorhandler abgefangen werden. Ansonsten kann es passieren, daß alle Variablen ihren Wert verlieren und das schließt die Formularklassen-Objektvariable mit ein. Dann geht natürlich gar nichts mehr.

Gruß

Christian

Nicolo#22

Nun, danke für die ausführliche Erklärung. Zu meiner Schande muss ich aber sagen das ich das meiste nicht wiklich verstehe. Nur kurz:
Was ich gemacht habe bzw. mit Begeisterung nutze:
Habe aus der FilterV2_7 die Demo 3 genommen, daraus die Combos, meine Filternamen angepasst, den Code
"beim LADEN" 1 zu 1 in meine FRM übernommen, dann noch in meine DB alle Module von dir übernommen. Das wars.
Alles funktioniert für meine bescheidenen Möglichkeiten hervorragend.
Den Fehler (Startpost) habe nun mehr oder weniger zufällig nach VERGLEICHEN gefunden.
Es lag daran das ich in der Lasche DATEN "NUR Listeneinträge" auf JA stehen hatte. Nach Anpassung auf NEIN ist
auch die Fehlermeldung nicht mehr gezeigt worden.
Ich denke das war mein eigener Fehler und nicht etwa am Filter Modul. Das habe ich eh von vorne herein
nicht ausgeschlossen. Für mich bleibt nur zu sagen, ich bewundere diese Fähigkeiten solche Dinge zu programmieren und kann nur ein großes Danke sagen.
Das alte MS Forum war schon top und hat mir manchmal sehr geholfen, das wurde leider geschlossen.
Bin froh das hier Hilfe finden kann.
Auch wenn es dann bei der Umsetzung meiner "Problemchen" oft an den tieferen Kenntnissen fehlt.
Schönes WE.

Bitsqueezer

Hallo,

wenn es funktioniert, ist ja alles gut.. :)
Dann noch viel Spaß damit.
Das Modul ist aus purem Eigennutz entstanden, weil ich keine Lust mehr hatte, für jedes Formular solche Dinge immer manuell zusammenzudengeln.

Gruß

Christian