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

Mehrseitiges / expandierendes Formular / 1 Datensatz, mehrere Formulare?

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
Antworten
Dru Drury
Beiträge: 6
Registriert: Fr 7. Okt 2016, 02:08

Mehrseitiges / expandierendes Formular / 1 Datensatz, mehrere Formulare?

Beitrag von Dru Drury » Fr 24. Mär 2023, 01:34

Liebe Forenteilnehmer,

ich habe folgendes Problem, bei dem ich Euch um Hilfe bzw. Rat bitte. Ich habe jahrelang mit einer in Base erstellten Datenbank gearbeitet, die jedoch aufgrund geänderter Anforderungen nun nicht mehr ihren Zweck erfüllt und leider auch nicht sozusagen von innen heraus verbessert werden kann, da zu viele Strukturen geändert werden müssen. Das soll heißen, daß mir die Grundlagen der Benutzung von LO Base vertraut sind. Mit Makros habe ich mich allerdings bislang nur am Rande befaßt, es erfordert für mich meist einfach zu viel Zeit, so daß ich das möglichst vermieden habe (mit kleinen Ausnahmen, aber ich kann nicht sagen, daß mir die Dinger leicht von der Hand gehen).

Das Problem der neu aufzusetzenden Datenbank ist folgendes: Die Kerntabelle, in die Daten mittels Formular eingepflegt werden müssen, hat - leider unveränderbar - eine relativ hohe Anzahl von Spalten, das Formular die dementsprechend große Anzahl Felder, die - was erschwerend hinzukommt - teils recht groß aufgezogen werden müssen, da sie umfangreichere Informationen (zumeist individuelle, daher nicht auslagerbare Texte) aufnehmen/anzeigen müssen. Soll heißen: Der Platz im Formular ist knapp und eigentlich überhaupt nicht ausreichend.

Die Lösungsansätze, die mir einfallen, sind von mir nicht alle unmittelbar umsetzbar, ich müßte da relativ lange fummeln, bis ich sehe, ob einer geht, überhaupt in Frage kommt oder nicht, daher hier selbige für Euch mal geschildert, in der Hoffnung, daß ihr den einen oder anderen ausschließen könnt, weil LO/Base das nicht hergibt, ein (techno)logisches Problem sich dahinter verbirgt, daß mir nicht offensichtlich ist oder oder oder. Bzw. ihr mir im besten Fall eine Richtung geben könntet, wie das funktionieren kann. Letzteres am besten natürlich mit Bordmitteln oder ggf. eher einfacher Makroarbeit, also sogenannter Mikro-Makros ;-)

Los geht's:

1. mehrseitiges Formular in Druckansicht (statt der standardmäßigen Webansicht). Mag vielen unpraktikabel erscheinen, für mich wäre das völlig ok und die zweitbeste Wahl. Jedoch unangenehmes Problem: Formular in "Druckansicht" läßt sich offenbar nicht mittels Assistent erstellen, sondern müßte Feld für Feld gestaltet werden, verstehe ich das richtig? Wenn der Assistent jedoch auch die "Druckansicht" unterstützt, wo ist diese auswählbar? Ein Erstellen in Webansicht und Rückübersetzen in "Druckansicht" scheint mir nicht möglich, da das entsprechende Feld im Menü ausgegraut wird... Ich kann das in Druckansicht natürlich auch Feld für Feld basteln, finde das aber äußerst fehleranfällig angesichts der Menge an Feldern und fürchte dementsprechend die Fehlersuche...mal von der aufzuwendenden Zeit abgesehen...


2. Das Formular dynamisieren, indem Bereiche ausgeklappt bzw. angezeigt werden können. Vergleichbar z.B. den heute oft verwendeten FAQ-Seiten im Netz, in denen die Fragen untereinander stehen und die Ansicht auf Unterfragen und Antworten per mouseclick expandiert werden kann. Ist so etwas mit Bordmitteln und Mini-Makros überhaupt möglich? Oder brauch es da die große Kavallerie mit CSS und Giga-Makros?


3. Am geeignetsten und von der Bedienbarkeit her 1. Wahl erschiene mir jedoch, daß die Datensätze der Haupttabelle über mehrere Formulare, die jeweils nur Teilbereiche des jeweiligen Datensatzes bearbeiten, befüllt werden. Im Prinzip scheint das möglich (hab es mit einer ganz rudimentären Tabelle und zwei Formularen, die jeweils die Hälfte ihrer Felder befüllen, probiert, und LO hat nicht gemeckert, auch Einpflege und Speichern der Daten bei gleichzeitig geöffneten Formularen war möglich). Hierbei stellen sich mir aber dennoch ein paar Fragen bezüglich der Umsetzung, daher kurz wie ich mir den Ablauf der Dateneingabe vorstelle:

3.1. Es gäbe ein Hauptformular, daß aus der besagten Tabelle nur die ID des Datensatzes sowie zwei-drei Felder anzeigte/bearbeiten ließe, die dem eingebenden Bearbeiter dazu dienten, den Datensatz, in dem er sich gerade befindet, zu identifizieren - vergleichbar mit einer Kundendatei, in der der Kundenname als grundlegende Orientierung dient.

3.2. Unter der Anzeige dieser Rudimentärdaten fände sich eine Anzahl Buttons, mit denen Formulare aufgerufen würden, durch die weitere Felder des Datensatzes befüllt werden könnten. (Jedes Formular befüllte Felder des Datensatzes exklusiv, Dopplungen wären natürlich auszuschließen).

3.4. Diese Formulare könnten im Prinzip auch hierarchisch aufeinanderfolgen (also daß der Aufruf eines dieser Formulare jeweils nur aus dem vorhergehenden Formular möglich wäre, das ist für mich völlig ok. Dann stünde im Hauptformular nur der Button 1 zur Verfügung, im folgenden Formular der Button 2 etc., im letzten wäre dann ein Button X nötig, mit dem in das Hauptformular zurückgesprungen würde und alle vorhergehenden geschlossen und gleichzeitig alle Eingaben abgespeichert würden - was letzeres ggf. auch bei jedem einzelnen Button bereits angesagt wäre).

3.5. Wie gesagt, das scheint im Prinzip zu funktionieren, aber wenn nun aus dem Hauptformular qua Button ein anderes Formular aufgerufen wird, so startet dieses standardmäßig beim ersten Datensatz, nicht bei dem, der im Hauptformular gerade aktiv ist. Zwar könnte man wohl immer zum letzten Datensatz springen, aber das dürfte in der Praxis sehr fehleranfällig sein, z.B. wenn der Arbeitsablauf unterbrochen wird. Ganz praktisch heißt ein Teil der Frage also, wie der aktuelle Datensatz von einem Formular an das andere übergeben werden könnte. Wäre so etwas ein Mikro-Makro oder ein Giga-Makro?

3.6. Bei so einer Konstruktion, also daß ein/mehrere Formulare geöffnet bleiben, während in einem anderen der gleiche Datensatz bearbeitet wird (auch wenn Dopplungen der Felder unter den Formularen ausgeschlossen sind), meldet sich bei mir natürlich der ganz allgemeine IT-Zweifel, ob sich da nicht noch diverse andere Probleme in den Weg legen könnten, z.B. bei den gewünschten Speichervorgängen beim Übergang von einem Formular zum nächsten. Aber dazu habe ich zu wenig Verständnis von den Innereien von LO/Base.

Würde mich sehr freuen, wenn ihr/Sie mir hier konstruktiven Input geben könntet!

Beste Grüße & Dank,
Dru Drury

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

Re: Mehrseitiges / expandierendes Formular / 1 Datensatz, mehrere Formulare?

Beitrag von RobertG » Fr 24. Mär 2023, 08:00

Der Wert für den Primärschlüssel aus dem Hauptformular muss irgendwo separat abgespeichert werden. Im Handbuch findest Du so etwas über den Einsatz von Filtertabellen.
Alle anderen Formulare beschicken ja die gleiche Tabelle, aber unterschiedliche Abschnitte. Diese Formulare basieren auf einer Abfrage, die nur den Datensatz aus Deiner "Datentabelle" holt, der mit dem Primärschlüssel "ID" übereinstimmt. In den anderen Formularen stellst Du von vornherein ein, dass nur Daten geändert werden dürfen, keine neuen Daten eingegeben werden dürfen usw.

Also:
Tabelle "tbl_Filter" mit den Feldern "ID" (Ja/Nein, Primärschlüssel) und "Key" (Integer)
Tabelle "tbl_Daten" mit "ID" (Integer, Primärschlüssel) und vielen anderen Feldern.
Abfrage:

Code: Alles auswählen

SELECT * FROM "tbl_Daten" WHERE "ID" = (SELECT "Key" FROM "tbl_Filter" WHERE "ID" = True)
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

F3K Total
Beiträge: 2409
Registriert: So 10. Apr 2011, 10:10

Re: Mehrseitiges / expandierendes Formular / 1 Datensatz, mehrere Formulare?

Beitrag von F3K Total » Fr 24. Mär 2023, 14:27

Moin,
ich habe mal eine Beispieldatei gebaut, einfach öffnen, Makros zulassen, dann das Hauptformular öffnen und wie in folgendem Bild dargestellt durchgehen.
MF.png
MF.png (56.75 KiB) 547 mal betrachtet
Im Makro findest du Erklärungen:

Code: Alles auswählen

Sub S_Next_Form(Event)
    oButton = Event.Source.Model                                                 'Objekt Schaltfläche
    oForm = oButton.Parent                                                           'strukturelles Formular, auf dem sich die Schaltfläche befindet
    oFormFilter = oForm.Parent                                                      'übergordnetes Filterformular
    sNextForm = oButton.Tag                                                         'Name des zu öffnenden Formulardokumentes, eingetragen in der Zusatzinformation der Schaltfäche
    nID = oForm.Columns.ID.getint                                                'Aktuelle ID auslesen
    oFormFilter.Columns.F_ID.Updateint(nID)                              'Aktuelle ID in das Feld F_ID der Tabelle Filter eintragen
    oFormFilter.updaterow                                                             'Speichern der Zeile in Tabelle Filter
    ThisDatabasedocument.Formdocuments.getbyname(sNextForm).open'Öffnen des Folgeformulares
End Sub
Gruß R
Dateianhänge
MULTIFORMS.zip
nur entpacken
(77.62 KiB) 42-mal heruntergeladen
Windows 10: AOO, LO Linux Mint: AOO, LO

Dru Drury
Beiträge: 6
Registriert: Fr 7. Okt 2016, 02:08

Re: Mehrseitiges / expandierendes Formular / 1 Datensatz, mehrere Formulare?

Beitrag von Dru Drury » Fr 24. Mär 2023, 15:15

Ihr Lieben, das ging ja außerordentlich fix! Danke vor allem für die Mühe mit der Beispieldatei, da werde ich mich über das Wochenende gleich drüber her machen und das Resultat vermelden. Auf die Idee mit dem Filter bin ich nicht gekommen, obwohl das Handbuch natürlich sonst oft konsultiert wird. Also ganz herzlichen Danke erstmal!

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