🙏 Helfen Sie jetzt mit, unser LibreOffice Forum zu erhalten! 🙏
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱
🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀
>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗
Umstieg von Bento auf LO Base
Umstieg von Bento auf LO Base
Hallo,
ich benutze seit vielen Jahren Bento, weil mir Base und Access immer zu kompliziert waren. Ich schätze besonders die Bezugsdatenfelder in Bento, die leicht zu erstellen waren und sehr nützlich. Da Bento nicht mehr weiterentwickelt wird, bin ich gezwungen, eine neue Datenbank zu benützen.
Das Problem ist dabei, dass sowohl Filemaker als auch - meines Wissens - LO Base die Bezugsdatenfelder nicht unterstützen. Ich suche daher nach einem geeigneten Workaround. Da ich ansonsten ein Fan von LibreOffice bin und es von Anfang an benutze, möchte ich auch gerne dabei bleiben.
Zu meiner Datenbank:
Ich habe eine Veranstaltungstabelle, der ich aus einer Musiktiteltabelle jeweils ein eigenes Programm aus Musiktiteln zuweisen möchte. Zur Programmrecherche benutzte ich eine einfache Suche in Bento. Jede Veranstaltung hat eine eigene Programmfolge. Des weiteren sollte es möglich sein, bei jedem Musiktitel festzustellen, in welcher Veranstaltung er verwendet wurde.
Gibt es hierfür eine Lösung in LO und wie könnte diese aussehen?
Vielen Dank schonmal für die Hilfe!
ich benutze seit vielen Jahren Bento, weil mir Base und Access immer zu kompliziert waren. Ich schätze besonders die Bezugsdatenfelder in Bento, die leicht zu erstellen waren und sehr nützlich. Da Bento nicht mehr weiterentwickelt wird, bin ich gezwungen, eine neue Datenbank zu benützen.
Das Problem ist dabei, dass sowohl Filemaker als auch - meines Wissens - LO Base die Bezugsdatenfelder nicht unterstützen. Ich suche daher nach einem geeigneten Workaround. Da ich ansonsten ein Fan von LibreOffice bin und es von Anfang an benutze, möchte ich auch gerne dabei bleiben.
Zu meiner Datenbank:
Ich habe eine Veranstaltungstabelle, der ich aus einer Musiktiteltabelle jeweils ein eigenes Programm aus Musiktiteln zuweisen möchte. Zur Programmrecherche benutzte ich eine einfache Suche in Bento. Jede Veranstaltung hat eine eigene Programmfolge. Des weiteren sollte es möglich sein, bei jedem Musiktitel festzustellen, in welcher Veranstaltung er verwendet wurde.
Gibt es hierfür eine Lösung in LO und wie könnte diese aussehen?
Vielen Dank schonmal für die Hilfe!
Re: Umstieg von Bento auf LO Base
Hallo Hubato,
ich habe mir eben eine Beschreibung zu Bento heruntergeladen, weil ich nachsehen wollte, was denn "Bezugsdatenfelder" sind. Das scheint mir nichts anderes zu sein als das, was in relationalen Datenbanken mit Primärschlüssel und Fremdschlüssel definiert wird. Solche Bezüge kannst Du also in Base unter Extras → Beziehungen herstellen.
Vermutlich hast Du ja bereits einen entsprechenden Datenbestand. Die einfachste Variante, um diesen nach Base zu transportieren, geht über das Einlesen der Tabellen in Calc. Beim Import nach Base benötigst Du für jeden Datensatz ein unverwechselbares Feld, den Primärschlüssel. Das Feld ist vielleicht schon vorhanden, da Du Bezugsdatenfelder benutzt hast. Ansonsten müsstest Du so ein Feld erst erstellen.
Du möchtest einer Veranstaltung natürlich mehrere Musiktitel zuweisen. Dies geht über ein Zusammenführen der Primärschlüssel aus der Tabelle Veranstaltung und der Tabelle Musiktitel in eine weiteren Tabelle. Diese Tabelle enthält von der Voreinstellung her nur die Fremdschlüssel der Tabelle "Veranstaltung" und "Musiktitel". Beide zusammen bilden den Primärschlüssel in der Verbindungstabelle, die ich einfach einmal "rel_Veranstaltung_Musik" nenne. Mit diesen 3 Tabellen hast Du jetzt das, was mit "Bezugsdatenfeldern" gemeint ist.
In Deinem späteren Hauptformular steht die Tabelle "Veranstaltung", in Deinem Unterformular die Tabelle "rel_Veranstaltung_Musik". Das Unterformular besteht aus einem Tabellenkontrollfeld, in dem nur der Primärschlüssel des jeweiligen Musiktitels eingegeben werden muss. Dies wird über ein Listenfeld in dem Tabellenkontrollfeld gelöst. Damit bekommst Du den Titel angezeigt und brauchst Dich um einen Schlüsselwert nicht mehr zu kümmern.
Soweit die grobe Richtung.
In dem LO-Base-Handbuch für die Version 4.3 habe ich im Kapitel "Einführung in Base" genau so eine Konstruktion in kleinen Schritten mit Screenshots versehen stehen. Die momentane Arbeitsversion des Handbuches bekommst Du hier: http://robert.familiegrosskopf.de/lo_hb_dev - dort nach Base_Gesamtband_einseitig_V43.pdf suchen. Ich schreibe hier nicht den direkten Link hin, weil das Verzeichnis sehr wohl länger bestehen bleibt, aber der Inhalt eben laufend wechselt.
Gruß
Robert
ich habe mir eben eine Beschreibung zu Bento heruntergeladen, weil ich nachsehen wollte, was denn "Bezugsdatenfelder" sind. Das scheint mir nichts anderes zu sein als das, was in relationalen Datenbanken mit Primärschlüssel und Fremdschlüssel definiert wird. Solche Bezüge kannst Du also in Base unter Extras → Beziehungen herstellen.
Vermutlich hast Du ja bereits einen entsprechenden Datenbestand. Die einfachste Variante, um diesen nach Base zu transportieren, geht über das Einlesen der Tabellen in Calc. Beim Import nach Base benötigst Du für jeden Datensatz ein unverwechselbares Feld, den Primärschlüssel. Das Feld ist vielleicht schon vorhanden, da Du Bezugsdatenfelder benutzt hast. Ansonsten müsstest Du so ein Feld erst erstellen.
Du möchtest einer Veranstaltung natürlich mehrere Musiktitel zuweisen. Dies geht über ein Zusammenführen der Primärschlüssel aus der Tabelle Veranstaltung und der Tabelle Musiktitel in eine weiteren Tabelle. Diese Tabelle enthält von der Voreinstellung her nur die Fremdschlüssel der Tabelle "Veranstaltung" und "Musiktitel". Beide zusammen bilden den Primärschlüssel in der Verbindungstabelle, die ich einfach einmal "rel_Veranstaltung_Musik" nenne. Mit diesen 3 Tabellen hast Du jetzt das, was mit "Bezugsdatenfeldern" gemeint ist.
In Deinem späteren Hauptformular steht die Tabelle "Veranstaltung", in Deinem Unterformular die Tabelle "rel_Veranstaltung_Musik". Das Unterformular besteht aus einem Tabellenkontrollfeld, in dem nur der Primärschlüssel des jeweiligen Musiktitels eingegeben werden muss. Dies wird über ein Listenfeld in dem Tabellenkontrollfeld gelöst. Damit bekommst Du den Titel angezeigt und brauchst Dich um einen Schlüsselwert nicht mehr zu kümmern.
Soweit die grobe Richtung.
In dem LO-Base-Handbuch für die Version 4.3 habe ich im Kapitel "Einführung in Base" genau so eine Konstruktion in kleinen Schritten mit Screenshots versehen stehen. Die momentane Arbeitsversion des Handbuches bekommst Du hier: http://robert.familiegrosskopf.de/lo_hb_dev - dort nach Base_Gesamtband_einseitig_V43.pdf suchen. Ich schreibe hier nicht den direkten Link hin, weil das Verzeichnis sehr wohl länger bestehen bleibt, aber der Inhalt eben laufend wechselt.
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
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare
Re: Umstieg von Bento auf LO Base
Hallo Robert,
vielen Dank für die Mühe, die du Dir machst mit Forum, Handbuch und Beispieldatenbanken. Das ist wirklich eine Riesenhilfe.
Ich habe jetzt gemäß dem Handbuch eine Datenbank aufgebaut, bin auf S 38. Jetzt bekomme ich leider eine Fehlermeldung beim Aufruf des Formulars "Teilnehmer":
"SQL-Status: S0022 Fehler-Code: -28 Column not found: 2" und "Der Inhalt eines Kombinations- oder Listenfeldes konnte nicht ermittelt werden.
Die Einstellungen sind mit der Anleitung identisch, ich habe die Beziehungen und die Tabelle daraufhin gelöscht und nochmals neu aufgebaut - mit demselben Ergebnis.
Hier im Forum und bei Google gab es keinen Hinweis mit diesen Fehlermeldungen.
Was habe ich falsch gemacht, und wie kann ich das Problem lösen?
vielen Dank für die Mühe, die du Dir machst mit Forum, Handbuch und Beispieldatenbanken. Das ist wirklich eine Riesenhilfe.
Ich habe jetzt gemäß dem Handbuch eine Datenbank aufgebaut, bin auf S 38. Jetzt bekomme ich leider eine Fehlermeldung beim Aufruf des Formulars "Teilnehmer":
"SQL-Status: S0022 Fehler-Code: -28 Column not found: 2" und "Der Inhalt eines Kombinations- oder Listenfeldes konnte nicht ermittelt werden.
Die Einstellungen sind mit der Anleitung identisch, ich habe die Beziehungen und die Tabelle daraufhin gelöscht und nochmals neu aufgebaut - mit demselben Ergebnis.
Hier im Forum und bei Google gab es keinen Hinweis mit diesen Fehlermeldungen.
Was habe ich falsch gemacht, und wie kann ich das Problem lösen?
Re: Umstieg von Bento auf LO Base
Hallo Hubato,
da wird die Spalte 2 nicht gefunden. Hast Du bei dem Listenfeld als "gebundenes Feld" die Ziffer "2" eingegeben? Die Zählung beim Listenfeld beginnt bei "0", falls Du die 2. Spalte auswerten willst, ist demnach die richtige Angabe "1".
Wenn das nicht ist die Ursache ist, lade doch eine (verfremdete) Beispiel-DB hier hoch. Dann kann man nach dem Fehler schauen.
Gruß
acco
da wird die Spalte 2 nicht gefunden. Hast Du bei dem Listenfeld als "gebundenes Feld" die Ziffer "2" eingegeben? Die Zählung beim Listenfeld beginnt bei "0", falls Du die 2. Spalte auswerten willst, ist demnach die richtige Angabe "1".
Wenn das nicht ist die Ursache ist, lade doch eine (verfremdete) Beispiel-DB hier hoch. Dann kann man nach dem Fehler schauen.
Gruß
acco
openSUSE Tumbleweed - LibreOffice 24.8.2.1
Re: Umstieg von Bento auf LO Base
Das hab ich gemacht, jetzt sucht er die Spalte 3. Anbei die Datenbank
Re: Umstieg von Bento auf LO Base
Hallo Hubato,
beim SQL-String des Listenfeldes fehlt die Angabe der "ID"-Spalte. Es muß heißen:
und das gebundene Feld muß "1" statt "2" sein, dann funktioniert es. "0" = "Sportart" und "1" = "ID".
"2" (also eine dritte Spalte) ist nicht in der Abfrage vorhanden, deshalb die Fehlermeldung.
Gruß
acco
beim SQL-String des Listenfeldes fehlt die Angabe der "ID"-Spalte. Es muß heißen:
Code: Alles auswählen
SELECT "Sportart", "ID" FROM "Sportarten"
"2" (also eine dritte Spalte) ist nicht in der Abfrage vorhanden, deshalb die Fehlermeldung.
Gruß
acco
- Dateianhänge
-
- Übungsdatenbank1_a.odb.zip
- (10.47 KiB) 332-mal heruntergeladen
openSUSE Tumbleweed - LibreOffice 24.8.2.1
Re: Umstieg von Bento auf LO Base
Aha! Das scheint mir aber ein Bug in LO Base zu sein, ich habe alles genau wie beschrieben ausgeführt, die grafische Oberfläche fügt wohl das "ID" nicht ein. Dankeschön!
----
Nächste Frage: Ich habe eine Tabelle mit vielen Komponisten, die jeweils einige Werke geschrieben haben. Die Komponisten will ich nun in eine neue Tabelle auslagern. Gibt es eine Möglichkeit, sie in eine andere Tabelle zu übertragen ohne alle neu eintippen zu müssen (sind doch mehrere Hunderte).
Viele Grüße
Hubert
----
Nächste Frage: Ich habe eine Tabelle mit vielen Komponisten, die jeweils einige Werke geschrieben haben. Die Komponisten will ich nun in eine neue Tabelle auslagern. Gibt es eine Möglichkeit, sie in eine andere Tabelle zu übertragen ohne alle neu eintippen zu müssen (sind doch mehrere Hunderte).
Viele Grüße
Hubert
Re: Umstieg von Bento auf LO Base
Hallo Hubato,
Zu Deiner Frage:
Wenn in der betreffenden Tabelle der Komponist jeweils nur eine Zeile belegt: (Komponist, Werk1, Werk2, Werk3 ...):
Im Datenbankfenster "Tabellen" die zu kopierende Tabelle markieren, rechte Maustaste "kopieren" klicken. Wieder rechte Maustaste "einfügen" klicken. Im aufspringenden Fenster alles lassen wie es ist, "Fertigstellen" klicken.
Tabellen bearbeiten:
In der Ausgangstabelle die Spalte mit den Namen löschen. In der kopierten Tabelle alle überflüssigen Spalten löschen.
In einer Abfrage (Entwurfsmodus) die beiden Tabellen hinzufügen, die Spalten mit der "ID" miteinander verbinden. (Das macht man üblicherweise unter "Extras" - "Beziehungen", hier habe ich es nur in der Abfrage gemacht.) Wenn die Abfrage auch zur Datenbearbeitung genutzt wird, müssen beide "ID"-Spalten in der Abfrage vorhanden sein.
Beipiel-DB im Anhang
Da war Tabelle "TabKomponist" die Ausgangstabelle. Die habe ich 2x kopiert damit die Ursprungstabelle erhalten bleibt. Einmal als "TabKomponist2" und einmal als "TabWerke". Anschlließend in "TabKomponist2" die Spalte "Werke" gelöscht und in "TabWerke" Spalte "Namen".
In "Abfrage1" findet dann die Zusammenführung statt. Vergleiche Inhalt "TabKomponist" (Ursprung) mit "Abfrage1". Die "ID" bereiten keine Schwierigkeiten, weil ein Komponist nur eine Zeile in der Tabelle belegt = nur eine "ID" hat.
Wenn der selbe Komponist mehrere Zeilen der Tabelle belegt, hat er auch mehrere "ID".
(
ID1, Komponist1, Werk1
ID2, Komponist1, Werk2
ID3, Komponist1, Werk3
)
Dann wird es komplizierter. Wie sehr, hängt von der Datenstruktur der vorhandenen Tabelle ab (Name und Vorname in getrennten Spalten, oder in einer. Unterschiedliche Schreibweisen des selben Komponisten, mögliche Schreibfehler usw.) Da sind dann mehr Infos von Deiner Seite erforderlich. Am Besten wieder als Beispiel-DB.
Gruß
acco
Den Bug kann ich nicht bestätigen, das funktioniert bei mir einwandfrei.Hubato hat geschrieben:Aha! Das scheint mir aber ein Bug in LO Base zu sein ...
Zu Deiner Frage:
Wenn in der betreffenden Tabelle der Komponist jeweils nur eine Zeile belegt: (Komponist, Werk1, Werk2, Werk3 ...):
Im Datenbankfenster "Tabellen" die zu kopierende Tabelle markieren, rechte Maustaste "kopieren" klicken. Wieder rechte Maustaste "einfügen" klicken. Im aufspringenden Fenster alles lassen wie es ist, "Fertigstellen" klicken.
Tabellen bearbeiten:
In der Ausgangstabelle die Spalte mit den Namen löschen. In der kopierten Tabelle alle überflüssigen Spalten löschen.
In einer Abfrage (Entwurfsmodus) die beiden Tabellen hinzufügen, die Spalten mit der "ID" miteinander verbinden. (Das macht man üblicherweise unter "Extras" - "Beziehungen", hier habe ich es nur in der Abfrage gemacht.) Wenn die Abfrage auch zur Datenbearbeitung genutzt wird, müssen beide "ID"-Spalten in der Abfrage vorhanden sein.
Beipiel-DB im Anhang
Da war Tabelle "TabKomponist" die Ausgangstabelle. Die habe ich 2x kopiert damit die Ursprungstabelle erhalten bleibt. Einmal als "TabKomponist2" und einmal als "TabWerke". Anschlließend in "TabKomponist2" die Spalte "Werke" gelöscht und in "TabWerke" Spalte "Namen".
In "Abfrage1" findet dann die Zusammenführung statt. Vergleiche Inhalt "TabKomponist" (Ursprung) mit "Abfrage1". Die "ID" bereiten keine Schwierigkeiten, weil ein Komponist nur eine Zeile in der Tabelle belegt = nur eine "ID" hat.
Wenn der selbe Komponist mehrere Zeilen der Tabelle belegt, hat er auch mehrere "ID".
(
ID1, Komponist1, Werk1
ID2, Komponist1, Werk2
ID3, Komponist1, Werk3
)
Dann wird es komplizierter. Wie sehr, hängt von der Datenstruktur der vorhandenen Tabelle ab (Name und Vorname in getrennten Spalten, oder in einer. Unterschiedliche Schreibweisen des selben Komponisten, mögliche Schreibfehler usw.) Da sind dann mehr Infos von Deiner Seite erforderlich. Am Besten wieder als Beispiel-DB.
Gruß
acco
- Dateianhänge
-
- Übungsdatenbank1_b.odb.zip
- (11.67 KiB) 313-mal heruntergeladen
openSUSE Tumbleweed - LibreOffice 24.8.2.1
Re: Umstieg von Bento auf LO Base
Hallo *,
bei dem grafischen Abfrageeditor ist in der Tat seit einiger Zeit etwas faul. Wenn Du in einem Feld etwas auswählst und daraufhin nicht noch einmal neben das Feld klickst, dann wird die Einstellung nicht übernommen. Öffne ich den Editor, wähle eine Tabelle, gehe dann auf "Feld" und suche ein Feld aus, gehe dann auf "Abfrage ausführen" so kommt eine Fehlermeldung "Es fehlt eine Selektion". Gehe ich nicht direkt nach "Abfrage ausführen", sondern erst einmal in die zweite Spalte mit "Feld", dann wird die Auswahl angenommen und später auch angezeigt.
Irgendwo gibt es dazu auch eine Bugmeldung.
Gruß
Robert
bei dem grafischen Abfrageeditor ist in der Tat seit einiger Zeit etwas faul. Wenn Du in einem Feld etwas auswählst und daraufhin nicht noch einmal neben das Feld klickst, dann wird die Einstellung nicht übernommen. Öffne ich den Editor, wähle eine Tabelle, gehe dann auf "Feld" und suche ein Feld aus, gehe dann auf "Abfrage ausführen" so kommt eine Fehlermeldung "Es fehlt eine Selektion". Gehe ich nicht direkt nach "Abfrage ausführen", sondern erst einmal in die zweite Spalte mit "Feld", dann wird die Auswahl angenommen und später auch angezeigt.
Irgendwo gibt es dazu auch eine Bugmeldung.
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
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare
Re: Umstieg von Bento auf LO Base
Hallo *,
das ist beinahe lustig mit dem Bug. Jetzt kann ich ihn auch nachvollziehen, mit der beschriebenen Vorgehensweise. Allerdings mache ich das nicht so, weil bei mir im jeweiligen Feld erst die Auswahl lesbar ist, wenn ich das Feld wieder verlassen habe.
Ein Feld das den Cursor besitzt, ist hier einfach nur eine weiße Fläche. Also ein anderer Bug, an den ich mich aber so gewöhnt habe, das er mir nicht mehr auffällt. Im Zusammenhang mit dem Anderen ist es ja beinahe ein "Feature".
Gruß
acco
PS: Beim einfügen eines Feldes per Doppelklick funktioniert alles einwandfrei, das Feld ist lesbar und auch in der Auswertung enthalten.
das ist beinahe lustig mit dem Bug. Jetzt kann ich ihn auch nachvollziehen, mit der beschriebenen Vorgehensweise. Allerdings mache ich das nicht so, weil bei mir im jeweiligen Feld erst die Auswahl lesbar ist, wenn ich das Feld wieder verlassen habe.
Ein Feld das den Cursor besitzt, ist hier einfach nur eine weiße Fläche. Also ein anderer Bug, an den ich mich aber so gewöhnt habe, das er mir nicht mehr auffällt. Im Zusammenhang mit dem Anderen ist es ja beinahe ein "Feature".
Gruß
acco
PS: Beim einfügen eines Feldes per Doppelklick funktioniert alles einwandfrei, das Feld ist lesbar und auch in der Auswertung enthalten.
openSUSE Tumbleweed - LibreOffice 24.8.2.1
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.