data_source.ods (26.8 KB)
SheetDB.odb (2.4 KB)
Und hier eine Lösung, die einer integrierten Office-Suite würdig wäre (ohne Makros):
- Lege beide Dateien im selben Verzeichnis ab, rufe Extras>Optionen>Base>Datenbanken auf und registriere die Datenbank-Datei unter dem Namen “SheetDB”.
- Ignoriere vorerst die Datenbankdatei und öffne das Calc-Dokument.
Auf dem ersten Tabellenblatt “DUPES” ist ein Datenbankbereich, ein paar Zeilen Dokumentation und triviale Formeln. Die letzten 4 Datensätze sind Duplikate. Die rote Linie markiert die erste Zeile unterhalb des Datenbankbereichs. Ich habe die Tabelle von den anderen Inhalten abgegrenzt, indem ich einen Datenbankbereich “Data” definiert habe (siehe Daten->Bereich festlegen…)
Auf dem zweiten Blatt “NO_DUPES” ist ein Datenbankbereich “Import1”, ein paar Zeilen Dokumentation und Formeln. Dieser Datenbankbereich ist mit einer Datenbankabfrage verknüpft und liefert den Inhalt der ersten Tabelle ohne Duplikate und absteigend nach Datum sortiert.
- Editiere die erste Tabelle, speichere das Dokument, klicke irgendeine Zelle in “Import1” und Daten->Bereich aktualisieren… Wenn sich dabei die Größe des Datenbankbereiches ändert weil mehr oder weniger Duplikate im Quellbereich sind, wird auch die Größe der angrenzenden Formelspalte “Diff” mit angepasst.
Der folgende Makro-Code würde das weiter automatisieren, z.B. beim Aktivieren des Blattes:
ThisComponent.DatabaseRanges.getByName("Import1").refresh()
.
Warum hast Du das Datenbankdokument registriert?
- Drücke Strg+Umsch+F4 für das Datenquellenfenster. Dort findest Du das registrierte Dokument mit seinen Tabellen und Abfragen. Diese Daten stehen für alle Writer- und Calc-Dokumente zur Verfügung. Ich habe hier einfach nur das Icon der Abfrage “No Dupes” auf das zweite Tabellenblatt gezogen.
- Wegen einer Fehlkonfiguration der Standardwerte musste ich dann noch den autmatisch erzeugten Datenbankbereich “Import1” verändern: Daten->Bereich festlegen, Import1 wählen und unter “Optionen” die Optionen “Einfügen und Löschen” und “Formatierung behalten” aktivieren.
So, und nun wenden wir uns dem Datenbankdokument zu:
Es entält kein Formular und keinen Bericht weil das off topic und zu viel Arbeit wäre.
Warum enthält es 4 Tabellen?
“DUPES” und “NO_DUPES” sind autmatisch erzeugt. Hier wird einfach nur der gesamte Blatt-Inhalt als Tabelle interpretiert. Das ergibt keinen Sinn, weil außer Tabellen-Rechtecke alles mögliche auf so einem Blatt sein kann. Diese Tabellen zeigen zusammen mit den eigentlichen Tabellendaten die Formelergebnisse darunter an und die Dokumentationstexte.
Die anderen beiden Tabellen beziehen sich auf die explizit definierten Datenbankbereiche mit Kopfzeile und datenbankählichen Feldern gleichen Typs.
Unter Extras>Tabellenfilter kann man die beiden irrelevanten Tabellen ausblenden.
Abgesehen von den 4 “Tabellen” enthält die Datenbank eine Abfrage. Eine Abfrage ist eine “Formel”, die eine Menge von Datensätzen zurückgibt. Beim Öffnen werden die Datensätze angezeigt, Rechtsklick>Bearbeiten öffnet eine Art Formeleditor, Rechtsklick>SQL-Ansicht öffnet die eigentliche Formel. Sie ist selbsterklärend:
SELECT * FROM "Data" ORDER BY "Datum" DESC
Das * steht für “alle Spalten”, DESC wie descending (absteigend).
Durch das Ziehen dieser Abfrage aus dem Datenquellenfenster in ein Calc-Dokument habe ich also einen verknüpften Datenbankbereich erzeugt, der die Datensätze dieser Abfrage anzeigt. Das Setzen der Extraoption “Zellen einfügen und löschen” sorgt dafür, dass beim Aktualisieren die Größe des Bereichs stets angepasst wird, ohne dass andere Daten überschrieben werden oder im freien Raum hängen bleiben. Diese Option sollte eigentlich gar nicht existieren, sondern grundsätzlich gesetzt sein.
Wichtig zum Verständnis:
Base konvertiert die Tabellenkalkulation nicht in eine Datenbank, sondern versucht, rechteckige Bereiche der Tabellenkalkulation als Sammlung von Datenbanktabellen zu interpretieren. Die Daten bleiben in der Calc-Datei und können auch nur mit einer Tabellenkalkulation bearbeitet werden. Über Bearbeiten->Datenbank>Eigenschaften… legst Du die Verbindung von Calc nach Base fest. Die Datenbankregistrierung ermöglicht Verbindungen von der Base nach Writer und Calc.
Ein Base-Dokument kann mit einer vielzahl von echten Datenbanken verbunden werden. Diese Verbindungen erlauben dann fast alles, was die jeweilige Datenbank hergibt einschließlich Mehrbenutzerbetrieb. Formulare erlauben das gleichzeitige Bearbeiten miteinander verknüpfter Datensätze aus verschiedenen Datenbanktabellen.
Als Sonderfall kann ein Base-Dokument auch über eine eingebettete Datenbank verfügen. Allerdings ist das wirklich nur für Entwürfe und Schulungsdemos wirklich geeignet.