❤️ Helfen Sie noch heute, unser LibreOffice Forum zu erhalten! ❤️
Unterstützen Sie das LibreOffice-Forum und helfen Sie uns, unser Ziel für 2025 zu erreichen!

🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱


❤️ DANKE >> << DANKE ❤️

>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

Über 1 Formular 2 Tabellen ändern mit Kombinationsfeld

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
Antworten
OfficeUser
Beiträge: 12
Registriert: Sa 28. Nov 2015, 06:29

Über 1 Formular 2 Tabellen ändern mit Kombinationsfeld

Beitrag von OfficeUser » So 29. Nov 2015, 08:09

Hallo liebe Forengemeinde

ein neuer Tag und wieder ein neues Problem. :lol:

In meine Datenbank gibt es eine Tabelle mit Personen, welche 7 Felder hat (ID, Nachname, Vorname, Strasse, HsNr, Plz und Ort-ID). Da es schon mal vorkommt, dass mehrere Personen im gleichen Ort wohnen, habe ich die Orte in einer weiteren Tabelle abgelegt. Die Tabelle Orte besitzt nur 2 Felder (ID und Ortsname).

Nun habe ich mir ein Formular gebastelt zum erfassen neuer Personen. Das Problem stellt sich hier beim erfassen neuer Orte. Für die Orte habe ich ein Kombinationsfeld gewählt. Ist ein Ort vorhanden soll dieser ausgewählt werden (Listenfeldfunktion), was soweit auch kein Problem ist. Gibt es aber den Ort noch nicht, soll ein neuer Ortsname eingegeben werden und genau dort liegt das Problem.

FRAGE: Wie bekomme ich es hin, dass ich direkt aus dem Formular (NeuePerson) mit Datengrundlage (Tabelle: Person) einen neuen Ort in die Tabelle Orte bekomme und die neue Ort-ID dann in der Tabelle Person mit gespeichert wird?

Folgende Lösungswege habe ich probiert:
  1. Das Kombinationsfeld im Hauptformular (kein Zugriff auf Tabelle Orte)
  2. Das Kombinationsfeld in einem Unterformular (Feld deaktiviert und Liste wird nicht befüllt)
Ich vermute, dass ich dafür Makros nutzen muss, weil Base diese Funktion so nicht vorsieht. Vielleicht kann mir ja von euch jemand eine Lösungsweg nennen und evtl. eine Quelle wo ich Informationen zur Umsetzung finde.


Danke und Gruß
Klaus

RobertG
* LO-Experte *
Beiträge: 2888
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Über 1 Formular 2 Tabellen ändern mit Kombinationsfeld

Beitrag von RobertG » So 29. Nov 2015, 09:43

Hallo Klaus,

so ein Makro steht im Handbuch. Ist auch in der Beispieldatenbank "Beispiel_Combobox_Listfeld" enthalten, die entsprechend heruntergeladen werden kann. Das Makro ist für Dein Beispiel etwas überdimensioniert (verknüpfte Felder wie "Postleitzahl"||' '||"Ort" sind auch möglich), müsste aber problemlos für Deinen Fall laufen.

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

F3K Total
* LO-Experte *
Beiträge: 2501
Registriert: So 10. Apr 2011, 10:10

Re: Über 1 Formular 2 Tabellen ändern mit Kombinationsfeld

Beitrag von F3K Total » So 29. Nov 2015, 09:51

Hi,
kenne deine DB aus diesem Thread.
Die Tabellen Orte und Strassen halte ich für unnötig.
Wenn du in der Tabelle Personen die Orte und Strassen als Text-Spalte verwenden würdest, könntest du mit einem Kombinationsfeld auch ohne Makro erreichen, was du möchtest:
Wie bekomme ich es hin, dass ich direkt aus dem Formular (NeuePerson) mit Datengrundlage (Tabelle: Person) einen neuen Ort in die Tabelle ...
Also bereits bestehende Werte auswählen können. Aber auch neue eintippen. Der Trick liegt darin, das die Vorschlagsliste des Kombinationsfeldes per SQL-Befehl aus den Einträgen der Tabelle gebildet wird, in die auch geschrieben wird, hier die Tabelle Personen.
Anbei habe ich deine DB um- und ein Formular "NeuePerson" eingebaut.
Gruß R
Dateianhänge
Muster_Kombi.zip
(24.93 KiB) 188-mal heruntergeladen
Windows 11: AOO, LO Linux Mint: AOO, LO

OfficeUser
Beiträge: 12
Registriert: Sa 28. Nov 2015, 06:29

Re: Über 1 Formular 2 Tabellen ändern mit Kombinationsfeld

Beitrag von OfficeUser » So 29. Nov 2015, 12:21

Hallo Robert und R

Ich danke euch beiden erstmal für die Lösungsvorschläge, werde mich aber wohl für Roberts Makro entscheiden.

Dafür gibt es folgende Gründe:
  1. Arbeite ich später nicht selbst mit der Datenbank, sondern ein Freund von mir. Von daher muss die Bedienung so einfach und Pannensicher wie möglich sein.
  2. Die Muster-Datenbank ist abstrakt und sehr klein gehalten. Im Echt-Betrieb werden nachher deutlich über 2500 Personen und ca. 4000 Geräte (geschätzt) erfasst werden. Der Personenkreis ist Regional stark eingeschränkt, weshalb es auch nur wenige Orte (etwa 20-25) geben wird. Somit wäre eine Speicherung der Orte in der Personentabelle aus meiner Sicht unverhältnismäßig (Stichworte: Redundanz und Normalisierung). Trotzdem soll es möglich sein, mit einer neuen Person auch gleich den neuen Ort zu erfassen und dafür nicht erst ein extra Formular (Stichwort: Listenfeld bei Personerfassung), oder gar auf die Tabelle zurück zu greifen.


Zu meinem Hintergrund:
Mir ist grundsätzlich klar wie man mit einer Datenbank arbeitet und was diese zu leisten vermag. Was für mich halt neu ist, ist die Anwendung (Base) selbst. Programmiererfahrung und technisches Verständnis sollten genug vorhanden sein. Base kam für diesen Fall als Lösungsmöglichkeit in Betracht, da es im Gegensatz zu Access kostenlos und Plattformunabhängig ist. ;)


Lieben Gruß
Klaus

F3K Total
* LO-Experte *
Beiträge: 2501
Registriert: So 10. Apr 2011, 10:10

Re: Über 1 Formular 2 Tabellen ändern mit Kombinationsfeld

Beitrag von F3K Total » So 29. Nov 2015, 19:01

Hallo Klaus,
wenn ich lese "2500 Personen und ca. 4000 Geräte", gehe ich davon aus, dass die Datenbank für deinen Freund wichtig und wertvoll ist.

Ich möchte dich darauf hinweisen, dass es mit Base Dateien, die die eingebettete HSQL-Datenbank verwenden, immer wieder zur vollständigen Zerstörung der Datei und so zum vollständigen Verlust aller Daten kommt. Ich bin kein Informatiker, es liegt vermutlich daran, das die eingebette HSQLDB bei jedem Start aus dem gezippten .odb-Container entpackt, beim Schließen der Datei wiederum gezippt und verpackt werden muss.
Es gibt Abhilfe: Des Trennen in Frondend und Backend.
Am wenigsten Aufwand macht es, die HSQL-DB aus der .odb Datei herauszulösen und separat laufen zu lassen. Für den Geübten, dauert dies etwa 5 Minuten. Makros sind nicht betroffen.

Der Benutzer merkt den Unterschied überhaupt nicht, alles verhält sich genau so, wie mit der eingebetteten Variante.

Das Trennen hat allerdings einen Nachteil.
Die Tabellen und Ansichten sind danach nicht mehr vollständig mit der grafischen Benutzeroberfläche editierbar. Zum Beispiel läßt sich das Umbenennen einer Tabelle oder Tabellenspalte dann nur noch mit dem korrekten SQL-Befehl über Menü Extras/SQL... machen.
Daher empfehle ich dir, die DB so wie sie ist zu entwickeln, während dieser Phase jedoch möglichst häufig Sicherheitskopien anzulegen.
Wenn sie stabil läuft und zur Zufriedenheit aller funktioniert, würde ich sie in Frontend und Backend trennen. Wie das geht, ist im Basehandbuch beschrieben und wird in einem meiner Videotutorials, siehe Signatur, gezeigt.

Ein Freund von mir benutzt so eine getrennte HSQL-Datenbank seit Sommer 2012 in seiner Werkstatt.
Die Datenbank hielt nach 3 Jahren bereits 21000 Datensätze in 3 Tabellen.
Es ist seit dem Trennen noch nie zu Datenverlusten gekommen.
Vorher schon nach etwa zwei Monaten. Nur mit Glück konnten wir die Daten damals retten!

Gruß und weiter viel Erfolg
R
Windows 11: AOO, LO Linux Mint: AOO, LO

OfficeUser
Beiträge: 12
Registriert: Sa 28. Nov 2015, 06:29

Re: Über 1 Formular 2 Tabellen ändern mit Kombinationsfeld

Beitrag von OfficeUser » So 29. Nov 2015, 19:47

Hallo R

das mit dem Trennen in Front- und Backend hatte ich sowieso vorgehabt. Das Video dazu hatte ich mir auch schon mal angeschaut. Was ich bis dato nicht wusste, sind die Nachteile in der späteren Editierung und das eine Base-Anwendung so Fehleranfällig ist.

Zu den Personen und Geräten kommt noch eine dritte Tabelle mit einem relativ großen Textfeld für eine Tätigkeitsbeschreibung. Diese Beschreibungen sollen später aus einzelnen Datensätzen in Writer übernommen werden. In dieser Tabelle könnten leicht mehr als 20.000 Datensätze reinkommen.

FRAGE: Meinst du es wäre besser nach einer anderen Lösung zu suchen, oder läuft Base nach der Trennung stabil genug für eine solche Anforderung?

Es muss einfach eine andere (neue) Lösung her. Derzeit sind die Personen alle im E-Mail Programm gespeichert und alle Informationen zu den Geräten unter Notizen. Das verursacht doppelten Aufwand, weil die auf die Notizen nicht direkt zugegriffen werden kann und so Daten doppelt und dreifach händisch verarbeitet werden müssen.


Lieben Gruß
Klaus

F3K Total
* LO-Experte *
Beiträge: 2501
Registriert: So 10. Apr 2011, 10:10

Re: Über 1 Formular 2 Tabellen ändern mit Kombinationsfeld

Beitrag von F3K Total » So 29. Nov 2015, 20:13

Hallo Klaus,
OfficeUser hat geschrieben:FRAGE: Meinst du es wäre besser nach einer anderen Lösung zu suchen, oder läuft Base nach der Trennung stabil genug für eine solche Anforderung?
Ich kann mich nur wiederholen:
F3K Total hat geschrieben:Ein Freund von mir benutzt so eine getrennte HSQL-Datenbank seit Sommer 2012 in seiner Werkstatt.
Die Datenbank hielt nach 3 Jahren bereits 21000 Datensätze in 3 Tabellen.
Es ist seit dem Trennen noch nie zu Datenverlusten gekommen.
Ja, das läuft stabil!
Auch ich habe eine getrennte HSQL-Datenbank, seit über 5 Jahren, problemlos im Einsatz.
Sollte es wegen großer Datenmengen zu Problemen kommen, kann man die Speicherverwaltung der HSQLDB anpassen. Standardmäßig wird nur 64MB Java-Heap-Space verwendet, dies soll für über 50.000 Datensätze reichen. Er kann mit einem Parameter sofort auf 256, 512, 1024MB erhöht werden.
Ich habe testweise eine DB mit 1 Million Datensätzen erzeugt, ging problemlos.
Zur Info, die getrennte HSQLDB beinhaltet immer auch ein Backup des zuletzt lauffähigen Datenstandes, das man, sollte es zu Problemen kommen, zurückholen kann. War bei mir allerdings noch nie notwendig.
Gruß R
Windows 11: AOO, LO Linux Mint: AOO, LO


An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:


Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.



Antworten