Neuigkeiten:

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

Mobiles Hauptmenü

Durchsuchen/Anzeigen von Datensätzen mit Ausschlußkriterium

Begonnen von DerSolide, Oktober 12, 2025, 19:03:30

⏪ vorheriges - nächstes ⏩

DerSolide

Hallo,

ich habe eine Behälterdatenbank in der diverse Kenndaten (Hersteller, Typ, Größe, Gewicht, Inhalt, Bemerkung, etc.) gespeichert sind.

Bis dato habe ich die Suchfunktion mit dem internen Access-Makro durchgeführt, weil es jedes Datenfeld einschließt, was auch problemlos funktioniert.
Jetzt möchte ich an Hand eines neuen Statusfeldes mit den Einträgen "Verfügbar","Bestellt" und "Verschrottet" die Suche/Anzeige im Formular insoferne auf jene Datensätze beschränken, welche den Status "Verfügbar" und "Bestellt" besitzen, d.h. jene Datensätze mit dem Status "Verschrottet" ignoriert.

Die bisher verwendete "interne" Suchfunktion ist dafür leider nicht geeignet.
Ich gehe davon aus, dass ich nicht umhin kommen werde, eine eigene Suchfunktion umzusetzen. Ich persönlich habe mir das in etwas so vorgestellt:

1. Durchsuche alle Felder nach dem ersten Auftreten des gesuchten Begriffs
2. Zeige diesen Datensatz nur an, wenn der Status nicht "Verschrottet" ist und markiere den übereinstimmenden Text in dem Feld des Formulars wo er gefunden wurde (also wie in der klassischen Suchfunktion)
3. Suche nach dem nächsten Auftreten dieses Begriff
4.1 Derselbe Datensätz enthält den Suchbegriff noch einmal => Die neue Stelle wird markiert
4.2 Ein neuer Datensatz enthält den Suchbegriff und dieser wird analog Punkt 2 behandelt
5. Weiter bei Punkt 2 bis zum Ende der Datensätze

 Ist diese Vorgehensweise mit vertretbaren Maß umsetzbar oder hat jemand eine bessere Idee?

Vielen Dank im Voraus.

Schönen Abend,
Christian


Doming

Moin Christian,

Du kannst doch Dein Statusfeld auf "enthält nicht" - "verschrottet" filtern, dann im gewünschten Feld wie gewohnt suchen.

Ansonsten kannst Du mit VBA natürlich nach Lust und Laune filtern und sortieren.

Gruß
 Doming


Knobbi38

Hallo Christian,

das ist ein wenig Excel-Denke. In Datenbanken wird mit SQL die anzuzeigende Datenmenge durch eine Where-Bedingung eingegrenzt. In Access kann man dafür auch Filter verwenden, entweder in der Oberfläche im Ribbon oder aber per VBA.

Des Weiteren ist eigentlich üblich, für einen Status einen numerischen Wert zu verwenden anstatt nach Text zu suchen, der möglicherweise auch falsch geschrieben sein könnte.

Soviel als Anmerkung nebenbei. Deine Problembeschreibung ist nicht ganz eindeutig. In deinem Text sprichst du von einem Statusfeld, aber in deiner Aufzählung dann wieder von "Datenfelder durchsuchen". Du solltest dein Problem schon eindeutig und genauer beschreiben. Den Punkt 4.1 kann man als Außenstehender gar nicht richtig nachvollziehen. Das hört sich so an, als ob du eine Volltextsuche in einer Datenbank machen möchtest, die eigentlich so nur von Datenbankservern unterstützt wird - für Access eher eine ungewöhnliche Aufgabe und auch nicht performant.

Knobbi38

DerSolide

Hallo Doming und Knobbi38,

vielen Dank für Eure schnellen Rückmeldungen.

Da habe ich mich wohl etwas zu ungenau - oder zu speziell und dadurch verwirrend - ausgedrückt.

Bisher (normale Standardsuche):
  • In einem Formular werden alle Kenndaten eines Behälters angezeigt.
  • Wenn ich jetzt mittels der Access integrierten Suche eine Wert eingebe um diesen zu suchen (mit Vergleichen = Teil eines Feldinhalts) und der Wert gefunden wird, wird der Inhalt des Formulars mit demjenigen Datensatz aktualisiert, der in irgendeinem Feld diesen Wert teilweise oder ganz enthält.
  • Klicke ich jetzt in der Suchfunktion auf die Schaltfläche "Weitersuchen" wird - insoferne vorhanden - zum nächsten Auftreten dieses Wertes gesprungen, egal ob der Suchwert jetzt im gleichen Datensatz (=keine Änderung des Formularinhalts) befindet oder in einem anderen Datensatz vorhanden ist, was wiederrum eine Aktualisierung des Formulars mit demjenigen Datensatz bedingt, der den Wert enthält.
Gewünscht:
  • Dasselbe Verhalten, allerdings unter der Bedingung, dass gewisse Datensätze - nämlich jene wo der Wert "Verschrottet" im Datensatz steht - bei der Suche ignoriert - und die Suche beim folgenden Datensatz fortgesetzt wird.
  • Bemerkung: Der Status ist in einer eigenen Tabelle definiert, steht als Verweis im jeweiigen Datensatz und ist gleichzeitig Datenquelle einer Kombinationsbox, welche als Filterkriterium für die Suchfunktion dienen soll, ein verschreiben ist damit ausgeschlossen.

Ich hoffe jetzt ist erkennbar, auf was ich hinaus will.

Schöne Grüße,
Christian

Knobbi38

Hallo Christian,

das von dir gewünschte Verhalten wird von Access so nicht unterstützt. Du müsstest per Filter erst alle DS filtern und dann kannst du in der Ergebnismenge suchen, wie gehabt. Alternative Methoden werden im Ribbon "Start -> Sortieren und Filtern" angeboten.

Ich verstehe immer noch nicht, ob du eine Suche in einem Feld mit einem bestimmten Teilstring in den Datensätzen durchführen möchtest oder ob du nach allen Vorkommen eines Teilstrings in allen Feldern der gesamten Tabelle suchst.

Zitat... steht als Verweis im jeweiigen Datensatz
Bei einem "Verweis" gehe ich jetzt mal von einem numerischen Fremdschlüssel aus und so etwas läßt sich doch problemlos Filtern.

Knobbi38

Beaker s.a.

Hallo,
@Ulrich
Die eingebaute Suche (Statuszeile) sucht immer in allen Feldern und DS.

@DerSolide
Das Einfachste ist wohl das Form zuerst auf "Status <> 'verschrottet'"
zu filtern und dann erst mit der Suche zu beginnen.

gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

Beaker s.a.

@Ulrich
Ganz vergessen, - bei der Suche mit Strg-F kannst du auswählen,
wie und wo gesucht werden soll.
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

Knobbi38

@ekkehard:

Vergesse ich auch oft, weil ich das so gut wie nie verwende. Aber ausschließen geht nun mal bei der Methode nicht, bzw. mit ist keine Möglichkeit bekannt, in dem Dialog zwei Kriterien zu verwenden.

VG Ulrich
 

Beaker s.a.

Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

DerSolide

Hallo Ulrich und Ekkehard,

vielen Dank für die Lösung(svorschläge): Vorher Filtern

Manchmal denke ich zu kompliziert und sehe den Wald vor lauter Bäumen nicht  ::)

@Ulrich
Ich will einen bestimmten Teilstring in allen Feldern der gesamten Tabelle suchen, so wie Ekkehard es beschrieben hat und ja, der "Verweis" ist ein numerischer Fremdschlüssel

Nochmals danke.

Schöne Grüße,
Christian