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. 🤗

Filter mit Markierfeld (Alles An- bzw. Abwählen u. Einzelwahl)

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
Antworten
Falke5179
Beiträge: 17
Registriert: Fr 17. Dez 2021, 18:25

Filter mit Markierfeld (Alles An- bzw. Abwählen u. Einzelwahl)

Beitrag von Falke5179 » Fr 18. Mär 2022, 17:24

Hallo RoberG,

ich habe nun ein neues Thema bzgl. Filtern eröffnet da es zu meinen vorigen Thema " Differenz mit Feldwert aus vorigem Datensatz berechnen " nicht passt.
Deinen Vorschlag mit der ODER Abfrage im Kombinationsfeld habe ich umgesetzt und funktioniert auch.
Für viele verschiedene Datensätze braucht man viele ODER Kombinationsfelder , was natürlich nicht sehr praktikabel ist.
Nun habe ich in der Tabelle ein Ja/Nein (Boolean) Feld eingefügt welches ich mit in zwei Makros alle An- bzw. Abwählen und einzeln in der Abfrage Ab- oder Anhaken kann.
In der Abfrage filtere ich dann dieses Feld mit TRUE oder FALSE und es werden nur die gewollten Datensätze angezeigt.
Dies funktioniert alles auch recht gut.
Wenn ich aber diese Abfrage in ein Formular einfüge wird sie nicht aktualisiert obwohl in der Abfrage und in der Tabelle alles richtig angezeigt wird.
Datenbank "FilterMarkierfeld" im Anhang.
Bitte um Hilfe und Danke im Voraus.
MfG Falke
Dateianhänge
FilterMarkierfeld.zip
(11.72 KiB) 92-mal heruntergeladen

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

Re: Filter mit Markierfeld (Alles An- bzw. Abwählen u. Einzelwahl)

Beitrag von RobertG » Fr 18. Mär 2022, 20:09

Hallo Falke,

bei mir macht das ganze genau das, was es tun soll, wenn ich von den Makros absehe.

Bei den Makros versuchst Du etwas mit "refresh" zu erreichen. Das passt aber nicht. "refresh" ist das Neueinlesen von Listenfeldern, nicht von Formularen.

Code: Alles auswählen

SUB FlagAnzeigen(oEvent AS OBJECT)
	DIM oForm AS OBJECT
	DIM oVerbindung AS OBJECT
	DIM oSQL_Anweisung AS OBJECT
	DIM Sql AS STRING
	oForm = oEvent.Source.Model.Parent
	oVerbindung = oForm.activeConnection()
	oSQL_Anweisung = oVerbindung.createStatement()
	Sql = " UPDATE ""Besucher"" SET ""Flag"" = true "
	oSQL_Anweisung.executeUpdate(Sql)
	oForm.reload
END SUB
Hier das erste Makro in Kurzfassung. Ich ermittle das Formular über den auslösenden Button (oEvent ist das Ereignis, Source.Model kommt zu den Eingenschaften des Buttons, Parent ist das das Formular, in dem der Button liegt). Dann erfolgt Dein SQL-Befehl und anschließend wird das Formular neu geladen.

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

Falke5179
Beiträge: 17
Registriert: Fr 17. Dez 2021, 18:25

Re: Filter mit Markierfeld (Alles An- bzw. Abwählen u. Einzelwahl)

Beitrag von Falke5179 » Sa 19. Mär 2022, 14:42

Hallo Robert,

danke für deine Hilfe.
ich habe in der Tabelle noch ein Ja/Nein (Boolean) Feld "Marker" eingefügt um nach An- bzw. Abgehakt suchen zu können.
Das Ja/Nein (Boolean) Feld "Flag" ist zum Aus- bzw. Abwählen der verschiedenen Datensätze.
Anschließend habe ich die Makros nach deiner Vorgabe aktualisiert.
Das An- bzw. Abwählen von "Flag" und "Marker" funktioniert für alle oder einzelne einwandfrei.
Die Ansicht wird in der Abfrage und in einer Tabelle welche ich mit "Ansicht aus Abfrage" erstellt habe nach dem ändern
der Felder "Flag" und "Marker" aktualisiert.
Die Tabelle aus der Abfrage ist aber nicht mehr editierbar.
Die Abfrage im Formular (Oranger Hintergrund) wird jedoch nicht aktualisiert. (Siehe Bild und Datenbank im Anhang)
Gibt es hierzu eventuell Beispiel Datenbanken , denn diese Art der Filterung wird ja in anderer Software häufig verwendet?
(Libre Calc , Excel , Access )

MfG Falke
FilterMarkierfeld.jpg
FilterMarkierfeld.jpg (228.65 KiB) 1550 mal betrachtet
Dateianhänge
FilterMarkierfeld.zip
(12.67 KiB) 81-mal heruntergeladen

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

Re: Filter mit Markierfeld (Alles An- bzw. Abwählen u. Einzelwahl)

Beitrag von RobertG » Sa 19. Mär 2022, 17:43

Hallo Falke,

zu der unteren, weißen Tabelle: Die Grundlage dazu ist keine Tabelle, sondern eine Ansicht der Datenbank. Ansichten sind in Base nie mit Daten neu beschreibbar, da das Abfragen sind, die von der Datenbank selbst ausgeführt werden.

Die obere Tabelle wird grundsätzlich komplett dargestellt, da es die Tabelle selbst ist und nicht die "Abfrage Besucher". Da bewirkt das Neueinlesen der Tabelle über reload nur, dass die Auswahl durch das Makro auch angezeigt wird.

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

Falke5179
Beiträge: 17
Registriert: Fr 17. Dez 2021, 18:25

Re: Filter mit Markierfeld (Alles An- bzw. Abwählen u. Einzelwahl)

Beitrag von Falke5179 » So 20. Mär 2022, 09:58

Hallo Robert,

nun funktioniert es auch bei mir.
Ich habe mich wohl zu sehr in die Makros verrannt und dabei das Grundlegende (Einstellung der Abfrage in den Formulareigenschaften des Tabellen-Steuerelements) nicht mehr beachtet.
Danke für deine geduldige Hilfe.
Gibt es eine Übersicht aller Makrobefehle ( Source , Model , getCount ....) und was sie bewirken.
Habe so etwas ähnliches von Andrew Pitonyak als PDF gefunden.

MfG Falke

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

Re: Filter mit Markierfeld (Alles An- bzw. Abwählen u. Einzelwahl)

Beitrag von RobertG » So 20. Mär 2022, 14:47

Hallo Falke,

die Grundlagen bei Andrew sind sicher prima. Auch das Makro-Buch von Thomas Krumbein.

Aber: Wenn Du speziell etwas für Base suchst, dann ist doch der schnellste Zugang über das Base-Handbuch. Da ist mehr als 130 Seiten über Makros zu Base beschrieben. Der größte Teil stammt aus solchen Foren wie diesem hier.

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

Falke5179
Beiträge: 17
Registriert: Fr 17. Dez 2021, 18:25

Re: Filter mit Markierfeld (Alles An- bzw. Abwählen u. Einzelwahl)

Beitrag von Falke5179 » Do 14. Apr 2022, 19:32

Hallo Robert,

ich habe dieses Filtersystem ( Siehe im Anhang ) nun auf eine eingebettete HSQLDB mit ca. 70000 Datensätzen angewendet.
Die Performance ist so schlecht das ein vernünftiges Arbeiten nicht möglich ist.
Nun habe ich dieses Filtersystem in einer eingebetteten Firebird DB mit ca. 70000 Datensätzen versucht.
Die Performancesteigerung ist von ca. Minute auf einige Wimpernschläge.
Danach habe ich ca. 35000 Datensätze in der Firebird DB gelöscht und gespeichert.
Die DB hatte immer noch die gleiche Grösse (6MB ) wie vor dem Löschen da die Datensätze nur nicht angezeigt werden
aber der Speicher nicht freigeben wird.
Nun meine Frage , gibt es eine Möglichkeit die Datenbank zurückzusetzen das nur mehr leere Tabellen vorhanden sind
aber sonst alles wie vorher für eine Neueingabe funktioniert. ( Gbak , Backup und Restore ? )
Grund:
Ich habe eine DB für Kochrezepte mit Bildern erstellt und beim Testen haben sich einige MBs angesammelt.
Da die DB nun funktioniert würde ich gerne eine leere Version mit einigen KB für die Erstellung realer Rezepte haben.
Danke im Voraus für Tips und Links zu Handbüchern.

MfG Falke
Dateianhänge
FilterMarkierfeld.zip
(21.83 KiB) 79-mal heruntergeladen

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

Re: Filter mit Markierfeld (Alles An- bzw. Abwählen u. Einzelwahl)

Beitrag von RobertG » Do 14. Apr 2022, 21:28

Hallo Falke,

den Geschwindigkeitsunterschied bei größeren Datenmengen, außerdem noch abhängig von der Java-Version, habe ich auch im Handbuch beschrieben. Das gilt genauso für JDBC-Verbindungen im Netz.

Die Größe bei einer Firebird-Datei lässt sich nicht so ohne weiteres anpassen. Da gibt es so etwas wie "Shutdown compact" aus der HSQLDB-Ecke nicht. Da müsstest Du schon mit der externen Firebird Datei arbeiten und dort dann ein Backup und Restore durchführen.

Lass es einfach. Die Datenbank wird den jetzt leer gewordenen Platz auch irgendwann wieder nutzen.

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

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