PDA

Vollständige Version anzeigen : Suchabfrage mit bis zu 8 Kriterien


rob-b
25.09.2003, 14:58
Hallo miteinander,

möchte eine Suchabfrage in einem seperaten Formular durchführen. Die Ergebnisse sollen dann in einem Unterformular auf der selben Seite angezeigt werden. Aus diesen Suchergebnissen möchte ich einen Bericht erstellen.


Meine Probleme bis dato sind:

1. (das schwerwiegenste Problem) Wie bekomme ich die 8 Kriterien in einer Suchabfrage zusammen? Alle mir bekannte Literatur oder Foren befassen sich mit primitiven Filter und Suchabfragen, in denen nur in einem Feld gesucht wird. Ich möchte aber das die 8 Suchoptionen kombiniert ein möglichst genaues Resultat bringen. Es sollte aber auch möglich sein mit weniger Kriterien zu suchen (d.h. die restlichen Suchfelder sind leer).

2. In meiner Tabelle gibt es 5 Kombi-Felder mit der Bezeichnung Branche1, Branche2,... Branche5. Nun möchte ich auch erreichen, dass wenn unter Branche3 ein Datensatz "Automobil" enthält und ich in der Suchabfrage (s.o.) "Automobil" unter Branche1 auswähle (per Kombi-feld), die Suche mir den Datensatz findet. Dies gilt natürlich für alle anderen möglichen Fälle auch.

3. In dem besagten Suchformular möchte ich, dass in den Kombi-Feldern Branche 1,... Branche 5 nur diejenigen Branchenkennungen zur Auswahl stehen, die auch tatsächlich vergeben wurden. Hierfür habe ich eine Abfrage erstellt, die nur die Spalten Branche1,...5 enthält. Nun habe ich das Problem, dass ich Mehrfachnennungen habe. Bspl: unter Branche1 taucht "Automobil" auf, aber auch unter Branche2. Andererseits habe ich auch folgenden Fall: Branche2 enthält "Textil", Branche3 und 4 aber nicht. Idealerweise wäre es, wenn ich alle Branchenkennungen die in den Feldern Branche1,...5 verwendet wurden in jedem Kombinationsfeld im Suchformular erscheint. Ein Zusammenführen von Spalten ist das nicht, die müssten ja untereinander stehen, die Duplikate lassen sich ja dann ausschalten. Wie schaffe ich es jedoch aus 5 Feldern die Inhalte in ein Feld untereinander zu packen.

Das sind meine größten Probleme, habe auch einige Zeit dran gesessen bin aber zu keiner Lösung gekommen. Leider bin ich auch nicht der Pro, der VB beherrscht. Für jeden Rat bin ich sehr dankbar.

Grüße aus Frankfurt

Rob

JeGr
25.09.2003, 15:04
Schau dir mal ein paar SQL-Befehle an.

Z.B. SELECT DISTINCT... um doppelte Einträge nicht anzuzuzeigen

Und dann SELECT "felder" FROM "tabelle" WHERE feld1 = "wert1" AND feld2 = "wert2" ... AND feldN = "wertN" um mehrere Auswahlkriterien zu berücksichtigen

Wenn du auch Wildcards in der Suche zulassen willst, dann versuch's mit dem LIKE-Operator anstelle des =-Operators

Nouba
25.09.2003, 15:10
Hallo,

Deine Tabelle verletzt die Regeln der Normalisierung und enthält sich wiederholende Spalten. (siehe auch "Relationale Datenbanken" in meiner Fußzeile).

Besser dürfte es sein eine Branchentabelle mit Autowert als Primärschlüssel anzulegen und in einer dritten Tabelle den Primärschlüssel aus der Haupttabelle mit dem aus der Branchentabelle zu verheiraten. Damit kannst Du keine, eine oder unendlichviele Branchen Deinem Kunden/Lieferanten? zuordnen und mußt auch keine Veränkungen mit riesigen Suchmasken veranstalten.

rob-b
30.09.2003, 14:24
zuerst einmal vielen dank nouba, der tipp war sehr hilfreich! bin gerade dabei die gesamte datenbank meines vorgängers komplett neu zu konstruieren. langsam kommen die erinnerungen aus dem studium zum arbeiten mit access wieder. daher werde ich noch ein wenig zeit brauchen bis ich wieder mit problemen komme ;)

zu den sql-befehlen:

wie und wo kann ich sql-befehle bei formularen anwenden? wie muss ich die sql-befehle ändern, um sich auf die eingabe in den formular-feldern zu beziehen? fragen über fragen...

gruß

rob

Andre_P
30.09.2003, 15:08
Hallo Rob,

ein Formular kann nicht nur Tabelle als Datenbankherkunft haben, sondern eine gespeicherte Abfrage oder einen SQL-Statement.

Wenn Du die Eigenschaften des Unterformulars anzeigts, kannst du unter Datenherkunft einen SQL-Statement hinterlegen, der über den Assistent aufgebaut wird (wie eine ganz normale Abfrage).
Als Kriterium beziehst Du Dich immer auf die Kriterienfelder des Hauptformulars mit z.B.

Wie "*" & [Formulare]![Formularname]![Feldname] & "*" & "*"

(Like und "*" bei Textfeldern) und so bei jedem der 8 Kriterien (oder auch mittlerweile weniger). Damit kannst Du so suchen, wie Du beschrieben hast, entweder nach allen 8 Kriterien, nach 1 oder gar keinem, also wenn Du alle Felder frei lassen würdest, würde die Abfrage alle Datensätze bringen. Als Suchkriterium können hier nicht nur Anfangsbuchstaben, sondern Zeichenketten eingegeben werden, die sich mitten im Wort befinden.

Im Hauptformular machst Du einen Button "Suchen" o.ä. und erstellst ein Event beim Klicken

Me.NameUnterformular.Requery

Nachdem Du die Suchfelder gefüllt hast und auf Suchen klickst, werden die Daten des UFO unter Berücksichtigung Deiner Kriterien neu geladen.

Hoffe, konnte Dir ein wenig helfen.

Gruß
André

rob-b
30.09.2003, 15:21
... André für die prompte Hilfe! Sobald ich die Datenbank wiederhergestellt habe werde ich es gleich ausprobieren!

Gruß

Rob