BITTE helfen Sie uns HEUTE mit einer SPENDE
Helfen Sie das LibreOffice Forum zu erhalten!

❤️ DANKE >><< DANKE ❤️

> KEINE WERBUNG FÜR REGISTRIERTE BENUTZER!<
Ihre Spende wird für die Deckung der laufenden Kosten sowie den Erhalt und Ausbau 🌱 des LibreOffice Forums verwendet.
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

[gelöst] Formular mit ungefährem Filterfeld?

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
Pit Zyclade
Beiträge: 2674
Registriert: Mo 12. Nov 2012, 16:59

[gelöst] Formular mit ungefährem Filterfeld?

Beitrag von Pit Zyclade » Do 30. Jun 2022, 18:22

Hallo Experten,
Ich habe ein funktionierendes (!) Formular, welches aus einer sortierten Abfrage einer Tabelle gespeist wird.
Dieses Formular enthält mehrere Textfalder und ein grafisches Feld, welches Fotografien zeigt, deren Name (in der Abfrage bzw. Tabelle) verlinkt sind.

Da ich nunmehr alle Datensätze (sortiert nach Name) angeboten bekomme und durchschalten muß, wäre es schön und sinnvoll, wenn man mit einem Suchfeld, in das man einen Teil des Namens eintippt, filterartig auf die Datensätze einschränkt, deren Namen zutreffend sind.

1. Geht so etwas ohne großen Aufwand, ohne Makro usw. ?
2. Was für ein Feld muß ich im Formular einfügen (mir macht das Unwissen über die Terminologie Schwierigkeiten)?
3. Wo wird der eingetippte Text zwischen- oder endgültig gespeichert (in derselben Tabelle oder Abfrage oder vielleicht gar nicht) ?

Danke für Antwort!
Zuletzt geändert von Pit Zyclade am Fr 1. Jul 2022, 18:29, insgesamt 1-mal geändert.
LO 7.5.8.2 (X86_64) / AOO 4.1.14 / Windows 11 64bit
Problem gelöst? Dann bitte im Betreff der ersten Nachricht [gelöst] voranstellen.

RobertG
Beiträge: 2732
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Formular mit ungefährem Filterfeld?

Beitrag von RobertG » Do 30. Jun 2022, 18:46

Hallo Pit,

zuerst einmal: Es geht ohne Makros.

Erstelle eine Tabelle "Filter", die aus 2 Feldern besteht: "ID" → Ja/Nein-Feld (als Primärschlüssel) und "Suche" → Varchar(50)
Öffne die Tabelle und Klicke einmal in "ID". Damit ist der erste Datensatz erstellt.

Dein Formular basiert bereits auf einer Abfrage. Hier müssen jetzt die Verbindungen zur Tabelle "Filter" rein. Jetzt gehe ich einmal von einem Feld "Beschreibung" in Deiner Abfrage aus:

Code: Alles auswählen

SELECT … FROM … WHERE … AND (LOWER("Beschreibung") LIKE '%'||COALESCE((SELECT LOWER("Suche") FROM "Filter" WHERE "ID" = True),'')||'%' OR …) ORDER BY …
Für jedes Feld sollte dieser Code entsprechend drin stehen. Die einzelnen Felder sind über OR miteinander zu verbinden, damit der Treffer nicht in allen Feldern mit Text liegen muss.

Jetzt baust Du in Dein Formulardokument noch ein zusätzliches Formular "Filter" neben dem anderen Formular für Deine Abfrage ein. Das bezieht sich auf die Tabelle "Filter" und soll nur das Feld "Suche" enthalten. Das Formular soll immer nur den Datensatz mit "ID"=True überschreiben - also nicht löschen, keinen neuen Datensatz, nur ändern.

In Dein Formular für die Abfrage baust Du einen Button, der "Formular aktualisieren" erfüllt. Den schiebst Du direkt neben das Feld, das Du für "Suche" erstellt hast.

Trägst Du jetzt einen neuen Suchbegriff ein und drückst auf den Button, dann wird der Suchbegriff gespeichert und das Formular mit der Abfrage darauf neu eingestellt.

Gruß

Robert
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare

Pit Zyclade
Beiträge: 2674
Registriert: Mo 12. Nov 2012, 16:59

Re: Formular mit ungefährem Filterfeld?

Beitrag von Pit Zyclade » Fr 1. Jul 2022, 08:24

Hallo Robert,
Du bist wie immer der Schnellste. Ich bin, so hoffe ich, sofort bis in die Nacht Deinen Vorschlägen gefolgt, aber war schrecklich müde und nicht so erfolgreich.
Die Tabelle "Filter" konnte ich erstellen. ID mit Ja/Nein-Feld war für mich ungewöhnlich. Wusste bis heute nicht, dass das geht.

Auch die Ännderung in der Abfrage war möglich, obwohl ich kein WHERE vorher hatte und folglich kein AND brauchte:

SELECT "ID" AS "ID", "erworben am" AS "erworben am", "Name der Pflanze" AS "Name der Pflanze", "deutscher Name", "Fotografie" AS "Fotografie", "Anmerkung" AS "Anmerkung" FROM "Tabelle1" WHERE ( LOWER ( "Name der Pflanze" ) LIKE '%' || COALESCE ( ( SELECT LOWER ( "Suche" ) FROM "Filter" WHERE "ID" = TRUE ), '' ) || '%' ) OR ( LOWER ( "deutscher Name" ) LIKE '%' || COALESCE ( ( SELECT LOWER ( "Suche" ) FROM "Filter" WHERE "ID" = TRUE ), '' ) || '%' ) ORDER BY "Name der Pflanze" ASC

Es kam kein Protest!
... Jetzt baust Du in Dein Formulardokument noch ein zusätzliches Formular "Filter" neben dem anderen Formular für Deine Abfrage ein. Das bezieht sich auf die Tabelle "Filter" und soll nur das Feld "Suche" enthalten. Das Formular soll immer nur den Datensatz mit "ID"=True überschreiben - also nicht löschen, keinen neuen Datensatz, nur ändern.
War nicht so trivial. Habe zum ersten Mal den Formularnavigator benutzt. Im Gegensatz zum Handbuchbeispiel erzielte ich erst auf der Stufe "MainForm" , auf der alle meine bisherigen Felder verankert waren, unterhalb "Formulare", Erfolg, bevor ich dann mit "Feld einfügen" die beiden neuen Felder "Suche" und "Optionsfeld" (anstelle Button ?) "aktualisieren" einfügen konnte. (Auf dem oberen Niveau Formulare kommt man mit "neu" nicht zum Einfügen der Felder!)

Leider war nach Fertigstellung die Hierarchie futsch und statt Zahlen unter ID erschienen "WAHR" oder "FALSCH" (für die zwei Datensätze) und die Fotos werden nicht mehr gewechselt. Ich habe das Formular korrigiert, so dass die ursprüngliche Funktionalität da ist.
Aber das Ziel mit der Filtersuche geht gar nicht.
MeinePflanzen.zip
entzippen zu Meine Pflanzen.odb
(2.49 MiB) 74-mal heruntergeladen
LO 7.5.8.2 (X86_64) / AOO 4.1.14 / Windows 11 64bit
Problem gelöst? Dann bitte im Betreff der ersten Nachricht [gelöst] voranstellen.

Pit Zyclade
Beiträge: 2674
Registriert: Mo 12. Nov 2012, 16:59

Re: Formular mit ungefährem Filterfeld?

Beitrag von Pit Zyclade » Fr 1. Jul 2022, 16:25

@RobertG
Kannst du mir helfen und meinen Fehler sehen?
LO 7.5.8.2 (X86_64) / AOO 4.1.14 / Windows 11 64bit
Problem gelöst? Dann bitte im Betreff der ersten Nachricht [gelöst] voranstellen.

RobertG
Beiträge: 2732
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Formular mit ungefährem Filterfeld?

Beitrag von RobertG » Fr 1. Jul 2022, 16:29

Hallo Pit,

nach dem Erstellen der Abfrage: Erst einmal etwas in die Filtertabelle unter "Suche" eintragen und testen. - Das passt bei Dir

Dann das neue Formular neben dem Formular "MainForm" erstellen. Das passte nicht, konnte ich aber verschieben.

Jetzt brauchst Du kein Optionsfeld, sondern eine Schaltfläche. Und die im "MainForm". Die soll "MainForm" aktualisieren.

Ich habe das einmal bei dem vorliegenden Formular getestet. Ich erreiche aus irgendwelchen Gründen nicht einmal das Feld für die Suche mit einem Cursor… Da muss ich noch etwas schauen, was da wohl schief geht. Gefunden: Das Beschriftungsfeld für "Suche" war zu breit und ragte damit über das Eingabefeld. So konnte ich den Cursor nicht an den Anfang des Feldes positionieren.

Schau auch einmal die Einstellung des Formulars "Suche" an. Da ist jetzt alles ausgeschaltet, was die Eingabe eines neuen Datensatzes oder das Löschen des alten Datensatzes ermöglichen könnte. Du kannst lediglich ein leeres Feld oder eben Inhalt in dem Datensatz mit ID = WAHR speichern.

Gruß

Robert
Dateianhänge
MeinePflanzen2.zip
(2.49 MiB) 68-mal heruntergeladen
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare

Pit Zyclade
Beiträge: 2674
Registriert: Mo 12. Nov 2012, 16:59

Re: Formular mit ungefährem Filterfeld?

Beitrag von Pit Zyclade » Fr 1. Jul 2022, 18:27

RobertG hat geschrieben:
Fr 1. Jul 2022, 16:29
...
Dann das neue Formular neben dem Formular "MainForm" erstellen...
Jetzt brauchst Du kein Optionsfeld, sondern eine Schaltfläche. Und die im "MainForm"...
... Einstellung des Formulars "Suche" ...
SQL -> ja
Filter -> ("Filter"."ID" = TRUE )
Daten hinzu -> nein
Daten ändern -> ja
Daten löschen -> nein
Nur Daten hinzufügen -> nein
Symbolleiste Navigation -> nein
Zyklus -> Aktueller Datensatz

Ja, das funktioniert bestens. Du bist genial und ich habe, um die Erfahrung nicht zu vergessen, hier noch einmal alles aufgeschrieben. Vielleicht lernt auch jemand anderes davon.
Danke :D :D :D
LO 7.5.8.2 (X86_64) / AOO 4.1.14 / Windows 11 64bit
Problem gelöst? Dann bitte im Betreff der ersten Nachricht [gelöst] voranstellen.

Pit Zyclade
Beiträge: 2674
Registriert: Mo 12. Nov 2012, 16:59

Re: [gelöst] Formular mit ungefährem Filterfeld?

Beitrag von Pit Zyclade » Sa 16. Jul 2022, 12:29

Ja, ich bin mit deiner Lösung SEHR zufrieden und habe auch ein zweites "Projekt" erfolgreich damit "frisiert".
Aber heute bin ich auf eine eigenartige Situation gestoßen, die mich verwunderte, andererseits habe ich auf die Schnelle einen Ausweg gefunden:
Wir (meine Frau & ich) hatten in dieser Pflanzendatei im Formular (wo sich ja auch der Suchen-Knopf befindet) die neuen Bilder (je ein Bild je neuen Datensatz) verlinkt eingetragen und gesichert. Dabei hatten wir noch keinen Pflanzennamen, weder den lateinischen noch den deutschen eingetragen, also in diese beiden Felder, auf die ja die Suche zugreift, noch gar nichts eingeschrieben.
Im Resultat ist alles richtig in der Tabelle. Aber in der Abfrage und im Formular hingegen tauchen die neuen Datensätze überhaupt nicht auf!
Der Ausweg ist, provisorisch in eines der beiden Namens-Felder gleich während des Bild-Verlinkens im Formular oder nachträglich in der Tabelle Ziffern (1...n) einzutragen. Die kann man dann im Formular nachträglich editieren.
Das Arbeiten und Editieren im Formular ist wegen des Pflanzen-Fotos nur dort komfortabel.

Habe die Lösung selber gefunden:
Zu den funktionierenden Suchbedingungen musste ich nur die (SQL-)Zeile zufügen:
OR ("Name der Pflanze" IS NULL AND "deutscher Name" IS NULL)
LO 7.5.8.2 (X86_64) / AOO 4.1.14 / Windows 11 64bit
Problem gelöst? Dann bitte im Betreff der ersten Nachricht [gelöst] voranstellen.

Pit Zyclade
Beiträge: 2674
Registriert: Mo 12. Nov 2012, 16:59

Re: [gelöst] Formular mit ungefährem Filterfeld?

Beitrag von Pit Zyclade » Sa 16. Jul 2022, 18:08

Ich habe mir eine mehrfach überarbeitete Kurzanleitung für Nachnutzer abgerungen:
base - Formular aus Abfrage mit Filter-Suche.odt
(21.5 KiB) 67-mal heruntergeladen
LO 7.5.8.2 (X86_64) / AOO 4.1.14 / Windows 11 64bit
Problem gelöst? Dann bitte im Betreff der ersten Nachricht [gelöst] voranstellen.

Wanderer
Beiträge: 895
Registriert: Di 11. Feb 2014, 20:03
Wohnort: Berlin

Re: [gelöst] Formular mit ungefährem Filterfeld?

Beitrag von Wanderer » Sa 23. Jul 2022, 07:38

Ich fand damals dieses Video extrem hilfreich,
da ich damit die Hierarchie im Navigator und die Möglichkeit komplette (Unter-)Formulare zu verschieben begriffen habe.

https://youtu.be/Jy9CV1yD7ew
Autor Lucky Müller/ Base Tutorial Serie
LO 6.0.7 (32Bit) Win8.1 Pro 32 Bit/ LO 6.3.2 Win10 64Bit / LO 6.0.7 Win7 Pro 64 Bit

Pit Zyclade
Beiträge: 2674
Registriert: Mo 12. Nov 2012, 16:59

Re: [gelöst] Formular mit ungefährem Filterfeld?

Beitrag von Pit Zyclade » Sa 23. Jul 2022, 13:38

Danke für den Link. Ich habe mir dieses Video angeschaut, obwohl ich gar kein Youtuber bin.
Im Resultat hat er aber keineswegs einen wesentlichen Schritt mehr erreicht als ich. Ob der Unterschied nötig war, kann ich noch nicht begreifen. Wahrscheinlich ist es nur eine Alternative.

Videodarstellungen oder Bildersammlungen können manche Lücke im Verständnis füllen, aber schriftliche Beschreibungen sind nach meiner Erfahrung notwendig. Das einzige Hauptproblem bleibt das menschliche Fassungsvermögen. Der eine liebt das ausführlichste Handbuch, der andere (wozu ich wohl gehöre) die prägnantere Kurzfassung, die auf das anstehende Problem zugeschnitten ist. So stümpert man sich durchs Leben. Jeder nach seiner Fasson.
LO 7.5.8.2 (X86_64) / AOO 4.1.14 / Windows 11 64bit
Problem gelöst? Dann bitte im Betreff der ersten Nachricht [gelöst] voranstellen.

An alle, die das LibreOffice-Forum nutzen:


Bitte beteiligen Sie sich mit 7 Euro pro Monat und helfen uns bei unserem Budget für das Jahr 2024.
Einfach per Kreditkarte oder PayPal.
Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet.

❤️ Vielen lieben Dank für Ihre Unterstützung ❤️

Antworten