❤️ Helfen Sie noch heute, unser LibreOffice Forum zu erhalten! ❤️
>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗
Datenbank für Genealogie
Datenbank für Genealogie
Hallo,
LibreOffice verwende ich schon lange. Jetzt habe ich mal eine eigene Datenbank in Base erstellt (ohne Makros). Die Datenbank soll als Familienchronik für einen ganzen Ort bzw. für eine Pfarrei verwendet werden können. Mit dem Ergebnis bin ich zufrieden. Nur die Bedienbarkeit möchte ich noch verbessern. Hier ein Beispiel aus der Gesamtliste (Bericht), die mit einer Parameterabfrage versehen ist, sodass man einzelne Elternpaare auswählen kann:
Gibt man keine Nr. ein, erhält man die Gesamtliste. Durch den Seitenumbruch werden im (Gesamt-)Bericht Familien manchmal auseinandergerissen. Wenn ich es richtig gelesen habe, kann man den Seitenumbruch nicht beeinflussen. Stimmt das?
Die Datengrundlage ist eine Abfrage, die chronologisch sortiert ist. Für dieselben Daten habe ich eine Abfrage, die nach dem Familiennamen sortiert ist. Meinem Bericht kann ich also auch die alphabetische Abfrage zugrundelegen, weil die Felder übereinstimmen. Ich möchte aber den Berichtsentwurf kopieren, sodass ich den beiden Abfragen jeweils einen eigenen Bericht zuweisen kann. Sonst müsste ich bei jedem Wechsel der Suche die Datengrundlage im Berichtsnavigator austauschen. Wie kann ich einen Berichtsentwurf kopieren?
Gruß und schon mal Danke!
GenOtto
LibreOffice verwende ich schon lange. Jetzt habe ich mal eine eigene Datenbank in Base erstellt (ohne Makros). Die Datenbank soll als Familienchronik für einen ganzen Ort bzw. für eine Pfarrei verwendet werden können. Mit dem Ergebnis bin ich zufrieden. Nur die Bedienbarkeit möchte ich noch verbessern. Hier ein Beispiel aus der Gesamtliste (Bericht), die mit einer Parameterabfrage versehen ist, sodass man einzelne Elternpaare auswählen kann:
Gibt man keine Nr. ein, erhält man die Gesamtliste. Durch den Seitenumbruch werden im (Gesamt-)Bericht Familien manchmal auseinandergerissen. Wenn ich es richtig gelesen habe, kann man den Seitenumbruch nicht beeinflussen. Stimmt das?
Die Datengrundlage ist eine Abfrage, die chronologisch sortiert ist. Für dieselben Daten habe ich eine Abfrage, die nach dem Familiennamen sortiert ist. Meinem Bericht kann ich also auch die alphabetische Abfrage zugrundelegen, weil die Felder übereinstimmen. Ich möchte aber den Berichtsentwurf kopieren, sodass ich den beiden Abfragen jeweils einen eigenen Bericht zuweisen kann. Sonst müsste ich bei jedem Wechsel der Suche die Datengrundlage im Berichtsnavigator austauschen. Wie kann ich einen Berichtsentwurf kopieren?
Gruß und schon mal Danke!
GenOtto
Re: Datenbank für Genealogie
Die Inhalte in eine Gruppe packen und den Dateil-Bereich nicht nutzen. Der kann nichts zusammenhalten.
Bei der "Sortierung und Gruppierung" dann für die Gruppe der Familie den Zusammenhalt der gesamten Gruppe definieren.
Die Sortierung wird übrigens nicht durch die Abfrage definiert sondern durch die Gruppierung.
Bei der "Sortierung und Gruppierung" dann für die Gruppe der Familie den Zusammenhalt der gesamten Gruppe definieren.
Die Sortierung wird übrigens nicht durch die Abfrage definiert sondern durch die Gruppierung.
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: Datenbank für Genealogie
Danke für die Tipps!
Die Sortierung des Berichts nach dem Familiennamen klappte direkt. Ich musste bei der Gruppierung nur den "Familiennamen" an die erste Position schieben.
Das Zusammenhalten einer Familie beim Seitenumbruch geht nur eingeschränkt. Werden alle Daten in eine Gruppe gepackt, erscheint im Bericht jeweils nur die erste Ehefrau und das erste Kind einer Familie. Ich brauche also 3 Gruppen: Familie/Vater, Mutter, Kinder. Es gibt damit nur noch zwei mögliche Trennungen innerhalb einer Familie. Immerhin sind die Kinder jetzt eine eigene Gruppe und werden beim Seitenumbruch zusammengehalten.
Dann habe ich noch eine weitere Frage. Für einen schnellen Überblick habe ich denselben Datenbestand summarisch zusammengefasst, mit GROUP BY-Klausel und COUNT-Anweisung:
Hatte eine Familie nur ein Kind, ist das Geburtsjahr sowohl MIN("Jahr") als auch MAX("Jahr"). Es erscheint dann z.B. geboren "1658 - 1658" Wie bekomme ich es hin, dass in einem solchen Fall das Geburtsjahr nur einmal ausgegeben wird? Mit CASE WHEN ging es nicht wegen der Aggregatfunktion.
Die Sortierung des Berichts nach dem Familiennamen klappte direkt. Ich musste bei der Gruppierung nur den "Familiennamen" an die erste Position schieben.
Das Zusammenhalten einer Familie beim Seitenumbruch geht nur eingeschränkt. Werden alle Daten in eine Gruppe gepackt, erscheint im Bericht jeweils nur die erste Ehefrau und das erste Kind einer Familie. Ich brauche also 3 Gruppen: Familie/Vater, Mutter, Kinder. Es gibt damit nur noch zwei mögliche Trennungen innerhalb einer Familie. Immerhin sind die Kinder jetzt eine eigene Gruppe und werden beim Seitenumbruch zusammengehalten.
Dann habe ich noch eine weitere Frage. Für einen schnellen Überblick habe ich denselben Datenbestand summarisch zusammengefasst, mit GROUP BY-Klausel und COUNT-Anweisung:
Hatte eine Familie nur ein Kind, ist das Geburtsjahr sowohl MIN("Jahr") als auch MAX("Jahr"). Es erscheint dann z.B. geboren "1658 - 1658" Wie bekomme ich es hin, dass in einem solchen Fall das Geburtsjahr nur einmal ausgegeben wird? Mit CASE WHEN ging es nicht wegen der Aggregatfunktion.
Re: Datenbank für Genealogie
Die doppelte Jahreszahl bei Eltern mit 1 Kind bekomme ich nur weg, wenn sich die MAX-Funktion (=jüngstes Kind) auf ein anderes Tabellenfeld bezieht als die MIN-Funktion (=erstes Kind).
Ich verwende also ein zusätzliches Feld "Jüngstes", in das ich bei Eltern mit 1 Kind eine 1 eingebe, und bei Eltern mit mehreren Kindern kommt nur beim Datensatz mit dem jüngsten Kind ein # in das neue Feld.
Mit dem SQL-Befehl UPDATE ändere ich danach die 1 in ein Leerzeichen, und # wird zu ' - '||"Taufe"."Jahr"||' ' geändert. Damit lässt sich MIN("Taufe"."Jahr")||MAX("Taufe"."Jüngstes") so verbinden, dass die doppelte Jahreszahl nicht mehr erscheint.
Ohne dieses separate Feld und einen Eintrag je Familie wird es wohl nicht gehen.
Ich verwende also ein zusätzliches Feld "Jüngstes", in das ich bei Eltern mit 1 Kind eine 1 eingebe, und bei Eltern mit mehreren Kindern kommt nur beim Datensatz mit dem jüngsten Kind ein # in das neue Feld.
Mit dem SQL-Befehl UPDATE ändere ich danach die 1 in ein Leerzeichen, und # wird zu ' - '||"Taufe"."Jahr"||' ' geändert. Damit lässt sich MIN("Taufe"."Jahr")||MAX("Taufe"."Jüngstes") so verbinden, dass die doppelte Jahreszahl nicht mehr erscheint.
Ohne dieses separate Feld und einen Eintrag je Familie wird es wohl nicht gehen.
Re: Datenbank für Genealogie
Hallo zusammen,
Jetzt habe ich noch ein paar Fragen zu meinem Eingabeformular, das hauptsächlich aus 5 Tabellensteuerelementen besteht mit jeweils 5 Spalten. Also keine Unterformulare. Die erste Spalte ist stets die ID. Die Spalten „Vorname“ und „Nachname“ enthalten Pflichteingaben. Hier ein Ausschnitt mit „gridVater“ und „gridMutter“: Von einem Tabellensteuerelement ins nächste springe ich mit
„Strg“+TAB, „Pos1“, „nach rechts“
und bin dann in der Spalte „Vorname“.
Die vielen interessanten Beiträge hier im Forum haben mich motiviert, eine Automatisierung dieses Vorgangs zu versuchen, obwohl Makros für mich Neuland sind. Ich habe dazu die letzte Spalte von „gridVater“ ("Vater Anmerkungen") mit folgendem Makro „bei Fokusverlust“ versehen:
Das klappt auch – fast. Denn der Datensatzzeiger (Cursor) springt zunächst eine Zeile runter und speichert dabei den aktuellen Datensatz, bevor er in die aktuelle Zeile zurückspringt. Das führt wegen den noch ausstehenden Pflichteingaben zu einer Fehlermeldung.
Das Problem konnte ich umgehen, indem ich eine eigentlich unnötige 6. Spalte angefügt habe (Dateninhalt = „ID“, wie Spalte 1). Jetzt hängt das Makro an der vorletzten Spalte, wodurch der Cursor beim Runterspringen im gleichen Datensatz bleibt.
Ich stelle mir als Makro-Anfänger die Frage, ob es nicht möglich ist, den Zeiger aus der letzten Spalte springen zu lassen ohne einen Ausrutscher in die nächste Zeile.
Weil ich für dieses Weiterspringen mehrere gleichartige Makros benötige, verwende ich diese Kurzfassung:
Gibt es eine Möglichkeit, für diese Sprünge ein gemeinsames Makro zu erstellen, dass also nicht „oGrid3“ usw. als Sprungziel angegeben wird, sondern allgemein „das nächste Tabellensteuerelement“?
Jetzt habe ich noch ein paar Fragen zu meinem Eingabeformular, das hauptsächlich aus 5 Tabellensteuerelementen besteht mit jeweils 5 Spalten. Also keine Unterformulare. Die erste Spalte ist stets die ID. Die Spalten „Vorname“ und „Nachname“ enthalten Pflichteingaben. Hier ein Ausschnitt mit „gridVater“ und „gridMutter“: Von einem Tabellensteuerelement ins nächste springe ich mit
„Strg“+TAB, „Pos1“, „nach rechts“
und bin dann in der Spalte „Vorname“.
Die vielen interessanten Beiträge hier im Forum haben mich motiviert, eine Automatisierung dieses Vorgangs zu versuchen, obwohl Makros für mich Neuland sind. Ich habe dazu die letzte Spalte von „gridVater“ ("Vater Anmerkungen") mit folgendem Makro „bei Fokusverlust“ versehen:
Code: Alles auswählen
SUB NachGridMutterSpringen
DIM oDoc AS OBJECT
DIM oDrawpage AS OBJECT
DIM oForm AS OBJECT
DIM oGrid3 AS OBJECT
DIM oControl AS OBJECT
oDoc = thisComponent
oDrawpage = oDoc.Drawpage
oForm = oDrawpage.forms.getByName("MainForm")
oGrid3 = oForm.getByName("gridMutter")
oControl = oDoc.CurrentController.GetControl(oGrid3)
oControl.SetFocus
oControl.SetCurrentColumnPosition(1)
END SUBDas Problem konnte ich umgehen, indem ich eine eigentlich unnötige 6. Spalte angefügt habe (Dateninhalt = „ID“, wie Spalte 1). Jetzt hängt das Makro an der vorletzten Spalte, wodurch der Cursor beim Runterspringen im gleichen Datensatz bleibt.
Ich stelle mir als Makro-Anfänger die Frage, ob es nicht möglich ist, den Zeiger aus der letzten Spalte springen zu lassen ohne einen Ausrutscher in die nächste Zeile.
Weil ich für dieses Weiterspringen mehrere gleichartige Makros benötige, verwende ich diese Kurzfassung:
Code: Alles auswählen
SUB NachGridMutterSpringen
oGrid3 = thisComponent.Drawpage.forms.MainForm.gridMutter
oControl = thisComponent.CurrentController.GetControl(oGrid3)
oControl.SetFocus
oControl.SetCurrentColumnPosition(1)
END SUBRe: Datenbank für Genealogie
Ich sehe das doch richtig, dass sich das Ganze innerhalb eines Formulars ohne Unterformulare abspielt, oder? Dann kannst Du natürlich nicht bei der Arbeit mit dem Tabulator an den Fokusverlust des letzten Feldes ein Makro packen, das zum nächsten Tabellensteuerelement hüpfen soll. Der Fokusverlust löst ja auf jeden Fall erst einmal den Sprung zum nächsten Datensatz aus. Ginge also am einfachsten wirklich darüber, eine leere Dummyspalte einzubauen.
Du kannst in dem Feld, von dem Aus Du das Makro auslöst, angeben, welches Tabellenkontrollfeld Du anspringen möchtest. Dafür sind die Zusatzinformationen da.
Dann beginnt Dein Code mit
Also aus den Zusatzinformationen den Namen des Tabellenkontrollfeldes auslesen und dann dort hin springen.
Du kannst in dem Feld, von dem Aus Du das Makro auslöst, angeben, welches Tabellenkontrollfeld Du anspringen möchtest. Dafür sind die Zusatzinformationen da.
Dann beginnt Dein Code mit
Code: Alles auswählen
SUB NachGridSpringen(oEvent AS OBJECT)
stGrid = oEvent.Source.Model.Tag
oGrid = thisComponent.Drawpage.forms.MainForm.getByName(stGrid)
…
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
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.