Datenfilterung und Datensuche in einem Formular

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

chrmeyer112
Beiträge: 6
Registriert: Mo, 02.06.2014 07:55

Datenfilterung und Datensuche in einem Formular

Beitrag von chrmeyer112 »

Hallo zusammen!

Ich beschäftige mich in den letzten drei Tagen mit dem Erstellen einer Personendatenbank, mit welcher ich nach unterschiedlichen Kriterien filtern möchte.
Ich bin absolut neu in diesem Thema und habe vorher noch nie etwas mit SQL, Base und Datenbanken im Allgemeinen zu tun gehabt, daher brauche ich evtl eine idiotensichere Erklärung :D

Ich habe nach dem Tutorial von "Lucky Müller" bei youtube ein Formular mit Suchfunktion erstellt. Das klappt auch super so weit...

Jetzt habe ich neben den Abfragen "Vorname" und "Name", welche ich nach obigem Muster erstellt habe, noch das "Geschlecht" zu erfassen.
Dieses ist im Eingabeformular als Listenfeld geführt. Es gibt also neben der Haupttabelle "Adressen" die Tabelle "tblGeschlecht" mit zwei Einträgen.
Ich hätte jetzt als dritte Auswahlmöglichkeit gerne die Suchfelder aus dem Video mit einem Listenfeld zur Filterung nach Geschlecht kombiniert.

Ich habe versucht die Anleitungen aus dem Video mit denen zur Datenfilterung aus diesem Handbuch auf S. 4 zu kombinieren, bin aber absolut dran gescheitert. Ich habe versucht, den SQL Code aus dem Handbuch in den meiner Parameterabfrage zu integrieren, was immer wieder zu Fehlern führte. Wie gesagt - ich hab da auch recht wenig Ahnung von.

Ich hoffe es hat eventuell jemand hier einen Vorschlag zur Lösung. Oder kann mir zumindest sagen, dass mein Vorhaben nicht möglich ist :-/

Ich bedanke mich schon jetzt für die Antworten!

Gruß,
Chris
RobertG
********
Beiträge: 2067
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Datenfilterung und Datensuche in einem Formular

Beitrag von RobertG »

Hallo Chris,

beide Personen, die die jeweiligen Veröffentlichungen verzapft haben, findest Du auch hier.

Vielleicht hängst Du einfach einmal an, was Du bisher erstellt hast - dürften ja vermutlich noch nicht so sehr viel Daten enthalten sein.

Gruß

Robert
chrmeyer112
Beiträge: 6
Registriert: Mo, 02.06.2014 07:55

Re: Datenfilterung und Datensuche in einem Formular

Beitrag von chrmeyer112 »

Hallo!

Die späte Antwort tut mir leid, ich habe vergessen, mir die Datei von der Arbeit aus nach Hause zu schicken und konnte sie nicht anhängen.

Ich habe sie jetzt mal in den Anhang gepackt.

Wesentlicher Bestandteilt sollen das vorhandene Eingabeformular und das Filterformular werden.
Das Filterformular wie es jetzt ist, ist das nach dem Video von Lucky Müller produzierte.
Dazu möchte ich jetzt neben Name und Vorname noch weitere Felder, wie Geschlecht als Filtereinstellung benutzen.
Während Name und Vorname ja eher Suchen sind, soll Geschlecht ein Listenfeld mit der Auswahl zu Grunde liegen.

Ich weiß jetzt nur nicht, wie ich so ein Listenfeld funktionierend hier einbinde.

BTW: Wenn ihr die Abfragen anschaut, so werdet ihr sehen, dass sich das Formular auf die Abfrage "qTestfuerFilter" bezieht. Ich habe eine weitere Abfrage, die bis vorhin dazu diente, welche aber aus irgendeinem Grund meine neueren Einträge nicht anzeigt. Diese heißt jetzt "qTestfuerFilterDefekt". Ich kann mir nicht erklären, warum das so ist. Vielleicht hat da auch jemand eine Idee?

Danke schon einmal für die Mühe.
Gruß,
Chris
Dateianhänge
Aktuell.odb
(29.88 KiB) 87-mal heruntergeladen
RobertG
********
Beiträge: 2067
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Datenfilterung und Datensuche in einem Formular

Beitrag von RobertG »

Hallo Chris,

Du müsstest an die Abfrage nur anhängen
AND "Geschlecht" = IFNULL(:qGeschlecht,"Geschlecht")
Das Listenfeld musst Du für einen Sucherfolg natürlich so einstellen, dass das Geschlecht angezeigt wird und auch abgespeichert wird, da es in der Abfrage auch nicht als Fremdschlüssel, sonder direkt ausgeschrieben vorhanden ist.

Gruß

Robert
chrmeyer112
Beiträge: 6
Registriert: Mo, 02.06.2014 07:55

Re: Datenfilterung und Datensuche in einem Formular

Beitrag von chrmeyer112 »

Hallo!

Jetzt bin ich einen Schritt weiter - vielen Dank!

Ich habe das Listenfeld anscheinend nicht richtig eingestellt. Nachdem ich es aufgezogen habe und die schrittweisen Einstellungen getätigt hab, war in den Eigenschaften vom Listenfeld im Reiter "Daten" im Listeninhalt

Code: Alles auswählen

SELECT "Geschlecht", "ID" FROM "tbl_Geschlecht"
gespeichert. Es wurden mir einfach keine Ergebnisse angezeigt, bis ich es auf

Code: Alles auswählen

SELECT "Geschlecht" FROM "tbl_Geschlecht"
gekürzt habe.

Nun funktioniert das schon mal. Allerdings habe ich dann versucht, ein weiteres Listenfeld mit dem Familienstand einzubinden. Ich habe dazu den von dir eingegebenen Code einfach hintereinander gehängt, also

Code: Alles auswählen

AND "Geschlecht" = IFNULL(:qGeschlecht,"Geschlecht") AND "Familienstand" = IFNULL(:qFamilienstand,"Familienstand")
Das führte leider dazu, dass beim Öffnen des Formulars, auch nachdem ich ein Listenfeld mit der Frage nach dem Familienstand eingebunden hatte, ein Fenster mit der Abfrage zu qFamilienstand geöffnet wurde. Also so ein Fenster, als wenn man in die Abfrage ohne Formular öffnet.

Ich habe die Abfrage dann versuchsweise in die aus dem Video geändert, also

Code: Alles auswählen

AND ( LOWER ( "Geschlecht" ) LIKE LOWER ( :qGeschlecht || '%' ) OR :qGeschlecht IS NULL ) AND ( LOWER ( "Familienstand" ) LIKE LOWER ( :qFamilienstand || '%' ) OR :qFamilienstand IS NULL )
Jetzt funktioniert das Formular - allerdings habe ich ein weiteres Problem entdeckt und ich weiß nicht, ob das was miteinander zu tun hat...

Immer, wenn eine Angabe, die im Eingabeformular mit einem Listenfeld abgefragt wird, nicht gemacht - also leer gelassen wird, wird der gesamte Datensatz in der Abfrage nicht angezeigt. Was habe ich jetzt nur wieder falsch gemacht???
In den Tabellen ist "Eingabe erforderlich" immer auf NEIN gesetzt.

Irgendwie habe ich mir das alles ein wenig einfacher vorgestellt :lol:

Gruß,
Chris
RobertG
********
Beiträge: 2067
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Datenfilterung und Datensuche in einem Formular

Beitrag von RobertG »

Hallo Chris,

mit LIKE durchsucht Du ein Feld, in der Regel ein Textfeld, auf einen Ausdruck, der nur in etwas gleich sein muss. Bei Deiner Konstruktion also einen Ausdruck, der nur mit den Anfangsbuchstab übereinstimmt.
Mit "=" müssen die Begriffe tatsächlich gleich sein. Das trifft z.B. bei Dir auf den Begriff "Geschlecht" zu. Da macht also eine LIKE-Abfrage wenig sinn.

Code: Alles auswählen

"Familienstand" = IFNULL(:qFamilienstand,"Familienstand")
bedeutet, dass bei einem leeren Eintrag in der Abfrage qFamilienstand alle Datensätze angezeigt werden, die irgendwo einen Familienstand stehen haben - nicht aber die Datensätze, bei denen kein Eintrag im Familienstand vorhanden ist.

Parameterabfragen habe ich bisher nie genutzt, deswegen muss Dir zu der speziellen Konstruktion jemand anderes etwas sagen. Mir ist der Code, den Du da aufschreibst, so nicht klar:

Code: Alles auswählen

AND ( LOWER ( "Geschlecht" ) LIKE LOWER ( :qGeschlecht || '%' ) OR :qGeschlecht IS NULL )
Eine Abfrage vergleicht in der Regel ein Feld einer Tabelle mit einem Wert. Das machst Du mit

Code: Alles auswählen

LOWER ( "Geschlecht" ) LIKE LOWER ( :qGeschlecht || '%' )
Im zweiten Teil mit

Code: Alles auswählen

OR :qGeschlecht IS NULL
fehlt mir die Anbindung an irgendein Feld.

Gruß

Robert
chrmeyer112
Beiträge: 6
Registriert: Mo, 02.06.2014 07:55

Re: Datenfilterung und Datensuche in einem Formular

Beitrag von chrmeyer112 »

Hallo!

Ich hatte die letzten Tage leider keine Zeit mich näher damit zu beschäftigen.
Vielen Dank erstmal für die Hilfe bisher - wie ich das Problem jetzt im Endeffekt lösen werde, weiß ich noch nicht ganz. Wenn ich meine anderen Schwierigkeiten überwunden habe, werde ich mich dieser Sache noch einmal widmen...

Gruß,
Chris
Antworten