❤️ 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. 🤗

Formular - Änderung Primärschlüssel

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
Antworten
malt14
Beiträge: 125
Registriert: Fr 7. Nov 2014, 06:21

Formular - Änderung Primärschlüssel

Beitrag von malt14 » Di 1. Mär 2016, 17:37

Guten Tag,

zunächst großen Dank an die Mitarbeiter von Base_Gesamtband_einseitig_V50 und besonders an F3K Total für das 05 OpenOffice Base: Ein Formular mit Suchfunktion erstellen Video, alles sehr hilfreich.

Die Datensätze meiner "Medien" Datenbank bestehen mehrheitlich aus Fremdschlüsseln. Die anderen Tabellen stehen alle in 1:n Beziehungen zu "Medien". Die meisten dieser Fremdschlüssel in "Medien" muss ich gelegentlich ändern. Mit Listenfeldern und einem auf die Tabelle zugreifenden Formular geht das, allerdings benötige ich bei den vielen Datensätzen eine gute Suche. Editierbare Abfragen lassen keine Änderungen der Primärschlüssel zu, eine Filtertabelle hilft nicht.

Ein Formular bezieht sich auf eine Abfrage, welche nach Autorennamen und Titeln filtert sowie die gewünschten Spalten einschließt. Ein Unterformular, welches sich auf die Tabelle "Medien" bezieht, verknüpft die Autoren ID der beiden Formulare, weist das Ergebnis der Suche aus, und ermöglicht das komfortable Bearbeiten der Primärschlüssel mittels Listenfelder.
Die Verknüpfung der Autoren ID bewirkt, dass nur der erste Autor der Abfrage angezeigt wird, sofern verschiedene Autoren gefiltert werden. Das Abfrageergebnis wird gegebenenfalls nicht vollständig im Tabellenformular angezeigt. Lassen sich die beiden Formulare so verknüpfen, dass im Unterformular sämtliche Datensätze des Hauptformular angezeigt werden, gegebenenfalls auch bei unterschiedlichen IDs in weiteren verknüpften Spalten?

In "Medien" will ich neben AutorenID in einer weiteren Spalte ÜbersetzerID erfassen. Kann ich die Tabelle "Autoren" zugleich mit AutorenID und ÜbersetzerID in "Medien" in einer Abfrage verknüpfen? Oder führt die Benutzung von mehreren Fremdschlüsseln in einer Tabelle, welche sich auf nur eine andere Tabelle (1:n) beziehen zu Problemen?

Grüße
Malt

LibreOffice
Version: 4.4.7.2
Gebietsschema: de_DE
Microsoft Windows 10 Home x64

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

Re: Formular - Änderung Primärschlüssel

Beitrag von RobertG » Di 1. Mär 2016, 19:09

Hallo Malt,

an manchen Stellen habe ich Probleme, das zu verstehen, was Du machen willst. Deshalb nur so viel:

Bei Datensatzfilterung musst Du darauf achten, dass tatsächlich alle zusammenhängenden Daten in einer Ansicht erhalten sind. Bei mehreren Autoren kannst Du dann den Filter so nutzen, dass Du, wie vermutlich schon im Formular, die Autoren in einem Unterformular der Ansicht erscheinen lässt. Die sind schließlich über das Fremdschlüsselfeld aus der Medientabelle erreichbar.

Eine Tabelle kann ohne Probleme zwei Fremdschlüssel des gleichen anderen Tabelle erhalten. So könnten z.B. zwei Autoren grundsätzlich nebeneinander in einer Tabelle über Fremdschlüsselfelder enthalten sein. Ob die Fremdschlüssel nun Autor_ID oder Übersetzer_ID heißen ist dabei nicht von Bedeutung.

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

malt14
Beiträge: 125
Registriert: Fr 7. Nov 2014, 06:21

Re: Formular - Änderung Primärschlüssel

Beitrag von malt14 » Mi 2. Mär 2016, 15:22

Hallo Robert,

Dank für Deine Antwort.

Ich möchte aus meiner "Medien" Tabelle bestimmte Datensätze filtern, und in diesen gefilterten Datensätzen dann Fremdschlüssel ändern.

Das Filtern übernimmt das Formular, welches auf die Abfrage zugreift. Ein Unterformular greift auf die Tabelle zu - notwendig um Fremdschlüssel zu ändern - und verknüpft mit dem Formular, damit nur die gefilterten Datensätze angezeigt werden.

SQL in der Abfrage:
AND ( LOWER ( "author"."name" ) LIKE '%' || LOWER ( :name ) || '%' OR :name IS NULL ) AND ( LOWER ( "title"."title" ) LIKE '%' || LOWER ( :title ) || '%' OR :title IS NULL )
Eigenschaften Unterformular:
1.PNG
1.PNG (29.58 KiB) 2874 mal betrachtet
Ergebnis einer Abfrage mit einem Teil von einem Autorennamen. Das untere Formular, welches auf die Tabelle zugreift und mit der Abfrage verknüpft, zeigt nur den Autor 48 an, während die Abfrage verschiedene Autoren filtert, entsprechend dem unvollständigen Namen.
Das Abfrageformular zeigt den neuesten Datensatz in der Tabelle nicht an "3796", jedoch das Tabellenformular.
2.PNG
2.PNG (17.03 KiB) 2874 mal betrachtet
Verknüpfe ich AutorID und TitelID und suche mit einem Teil von einem Autorennamen und Titel, zeigt das Unterformular nur noch einen von drei Datensätzen an:
3.PNG
3.PNG (7.39 KiB) 2874 mal betrachtet
Woran liegt es, dass bei der Verknüpfung von IDs im Unterformular nur ein ID genommen wird und nicht alle IDs aus der Abfrage, so dass die beiden Formulare keine identischen Datensätze zeigen?

Grüße
Malt

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

Re: Formular - Änderung Primärschlüssel

Beitrag von RobertG » Mi 2. Mär 2016, 19:49

Hallo Malt,

hat die Tabelle "media" bereits "authorID" gespeichert? Dann gibt es ja nur einen Autor pro Medium.
Was soll die "titleID"? Hast Du einen Datenbank, in der neben dem eigentlichen Titel eines Mediums auch Untertitel (Kapitel) aufgeführt werden?

Wenn Du "authorID" mit "authorID" des Unterformulars verbindest, dann zeigt das Unterformular natürlich nur den einen Autor an. Gleiches gilt für "titleID". Und beide zusammen grenzen das Ganze natürlich besonders ein - wobei Nullwerte vermutlich gar nicht angezeigt werden.

Nur mit Screenshots lässt sich da recht wenig anfangen. Stelle doch die Datenbank einmal (ohne Daten oder nur mit ein paar Dummydaten) hier zur Verfügung.

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

malt14
Beiträge: 125
Registriert: Fr 7. Nov 2014, 06:21

Re: Formular - Änderung Primärschlüssel

Beitrag von malt14 » Mi 2. Mär 2016, 22:50

Hallo Robert,
Das Abfrageformular zeigt den neuesten Datensatz in der Tabelle nicht an "3796", jedoch das Tabellenformular.
Mein Fehler; die Abfrage benutzt "innerer Verbund". Ich trug in eine der verbundenen Spalten keinen Wert ein, deshalb filterte die Abfrage diesen nicht.

Die Titel Tabelle benutze ich, weil öfters identische Titel vorkommen; die Datensätze unterscheiden sich jedoch in anderen Spalten.

Wenn Du "authorID" mit "authorID" des Unterformulars verbindest, dann zeigt das Unterformular natürlich nur den einen Autor an.
Das Abfrageformular filtert verschiedene "authorID", das über "authorID" verknüpfte Unterformular übernimmt nur eine "authorID", die "authorID" aus der ersten Zeile des Abfrageformulars. Besser für mich wäre, dass alle "authorID" aus dem Abfrageformular im Unterformular erscheinen. Ich hätte dann ein Abfrageergebnis in einer Tabelle, wo ich Fremdschlüssel ändern könnte. Das scheint aber nicht erreichbar.

Grüße

Malt


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