Date: prev next · Thread: first prev next last
2019 Archives by date, by thread · List index


Nachtrag: Siehe auch
https://www.postgresql.org/docs/9.6/libpq-connect.html

Am 15.11.19 um 11:50 schrieb Ulrich Goebel:
Hallo,

danke erstmal für die wertvollen Tips!

Inzwischen bin ich auch noch auf einen Lösungsansatz gestoßen. Man kann tatsächlich in dem Connection-String folgendes ergänzen:

options=-csearch_path=tagung_2022,public

Beachte: keine Leerzeichen und Anführungszeichen.

Der beispielhaft angegebene search_path sorgt dafür, dass Tabellen erst in dem Schema tagung_2022 und dann in Schema public gesucht werden.

Die Sache hat aber einen Haken: Das funktioniert für Listenfelder u.ä., wo der Listeninhalt direkt über eine SQL-Abfrage erzeugt wird. Dort kann also sowas stehen wie

select ... from tbl_person

Aber es funktioniert nicht für die Tabellen, die Datengrundlage für Formulare und Unterformulare sind. Dort muss nach wie vor die Tabelle aus einer Liste von Tabellen ausgewählt werden - und diese Liste enthält nur qualifizierte Namen, das heißt incl. Schema. Löscht man hier per Hand das Schema vor dem Tabellenname, so findet LO die Tabelle nicht mehr.

Ob das alles auch über Views oder Abfragen funktioniert, habe ich noch nicht ausprobiert. Ich bin aber misstrauisch, denn mit dem Formular möchte ich ja Daten auch ändern und hinzufügen. Das geht aber in der Regel nicht über Views oder Abfragen. Oder etwa doch?

Beste Grüße
Ulrich

Am 14.11.19 um 22:52 schrieb Ulrich Goebel:
Hallo,

ich verwende LO Base als Frontend für eine PostgreSQL Datenbank. Dabei liegen die Tabellen in verschiedenen Schemas.


Das Setting:
------------

Ich arbeite in den Formularen viel mit Unterformularen und mit Listenfeldern. Dort muss ich entsprechend qualifizierte Tabellennamen für die Datenquellen usw. angeben, also etwa

schema.tabelle

Soweit, so gut. Aber die Datenbank dient als Personendatenbank für Tagungen, die jährlich stattfinden. Entsprechend heißt es z.B.

tagung_2019.tbl_person

oder

tagung_2020.tbl_person

Bestimmte Daten vererben sich von Jahr zu Jahr, die liegen im Schema public, d.h. es heißt für solche Fälle etwa

public.tbl_laender


Das Problem:
------------

Beim Aufsetzen der DB für das jeweils nächste Jahr müssen nun in allen Formularen und allen Listenfeldern die Schemen-Angaben ersetzt werden. Das ist extrem nervig und vor allem fehleranfällig.


Ein Lösungsansatz:
------------------

In PostgreSQL gibt es für eine Connection den Befehl

set search_path to tagung_2019, public;

Dann werden unqualifizierte Tabellen-Referenzen, also etwa tbl_person erst in tagung_2022, dann in public gesucht.


Meine Frage:
------------

Nun endlich die Frage: Kann man beim Aufrufen der LO-DB dafür sorgen, dass irgendwie der search_path gesetzt wird? Dann könnte ich sämtliche Tabellen-Namen unqualifiziert lassen und müsste für das nächste Jahr nur an dieser einen Stelle den Search-Pfad ändern...

Hat jemand eine Idee?

Ich arbeite mit LO 5.1.6.2 unter Linux mit dem DB Konnektor (PostgreSQL Driver) aus dem Paket libreoffice-sdbc-postgresql. Bei den Datenbankeigenschafte gebe ich bei den erweiterten Einstellungen eine Zeile der Art

host=myserver.xxx port=## dbname=mydb user=myuser

an. Wäre vielleicht an dieser Stelle eine Angabe des Search-Pfad möglich?

Beste Grüße
Ulrich



--
Ulrich Goebel
Am Büchel 57, 53173 Bonn

--
Liste abmelden mit E-Mail an: users+unsubscribe@de.libreoffice.org
Probleme? https://de.libreoffice.org/hilfe-kontakt/mailing-listen/abmeldung-liste/
Tipps zu Listenmails: https://wiki.documentfoundation.org/Netiquette/de
Listenarchiv: https://listarchives.libreoffice.org/de/users/
Datenschutzerklärung: https://www.documentfoundation.org/privacy

Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.