❤️ 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; Daten ändern, Abfrage mit Relationen

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
Antworten
tfuhl
Beiträge: 2
Registriert: Do 27. Jul 2017, 13:43

Formular; Daten ändern, Abfrage mit Relationen

Beitrag von tfuhl » Do 27. Jul 2017, 13:57

Hallo zusammen,

ich hab große Probleme mit der Lösung dieses Themas.

Ich habe eine Datenbankstruktur entwickelt, die, wie so eine SQL-DB nun mal funktioniert, Relationen von und zu verschiedenen Tabellen besitzt.

Eine normale Abfrage dieser Daten stellt kein Problem dar und das Erstellen eines Formulars ist ebenfalls realisierbar meinerseits.

Beim ändern von Datensätzen via eines Formulars habe ich eine Abfrage auf eine Tabelle (A) gemacht und die zurück gelieferten IDs via Listenfeld und SQL Abfrage als entsprechend dazugehörenden Text angezeigt. (ModellID wird im Formular Feld also als "SUN T5120" angezeigt).
Das musste ich also ohne Relationen in der Abfrage realisieren, da es mir das System sonst nicht erlaubt, Daten via Listenfeld im Formular zu ändern.

Jetzt muss ich jedoch Datensätze in diesem Formular anzeigen, welche über eine Tabelle weit relationiert ist. (Änderungen in der Tabelle A, anzuzeigende Daten jedoch in Tabelle C, welche Relation auf Tabelle B hat, welche eine Relation zu A besitzt)
Baue ich nun also eine Abfrage, die diese Datensätze mit einbezieht, verhindert das System, via der Listenfelder im Formular die Daten in Tabelle A zu ändern, da Daten der Tabelle C angezeigt werden.

Gibt es da eine andere Herangehensweise?


Vielen vielen Dank im vorraus

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

Re: Formular; Daten ändern, Abfrage mit Relationen

Beitrag von RobertG » Do 27. Jul 2017, 16:36

Hallo tfuhl,
tfuhl hat geschrieben:
Do 27. Jul 2017, 13:57
Beim ändern von Datensätzen via eines Formulars habe ich eine Abfrage auf eine Tabelle (A) gemacht und die zurück gelieferten IDs via Listenfeld und SQL Abfrage als entsprechend dazugehörenden Text angezeigt. (ModellID wird im Formular Feld also als "SUN T5120" angezeigt).
Das musste ich also ohne Relationen in der Abfrage realisieren, da es mir das System sonst nicht erlaubt, Daten via Listenfeld im Formular zu ändern.
Bereits hier habe ich Problem zu verstehen, was Du damit meinst. Die Realtion stellst Du doch mit Hilfe des Listenfeldes her.
tfuhl hat geschrieben:
Do 27. Jul 2017, 13:57
Jetzt muss ich jedoch Datensätze in diesem Formular anzeigen, welche über eine Tabelle weit relationiert ist. (Änderungen in der Tabelle A, anzuzeigende Daten jedoch in Tabelle C, welche Relation auf Tabelle B hat, welche eine Relation zu A besitzt)
Das hört sich nach einer n:m-Beziehung an. So etwas wie: 1 Formular, dazu ein Unterformular und in diesem Unterformular dann ein Tabellenkontrollfeld mit einem Listenfeld.
tfuhl hat geschrieben:
Do 27. Jul 2017, 13:57
Baue ich nun also eine Abfrage, die diese Datensätze mit einbezieht, verhindert das System, via der Listenfelder im Formular die Daten in Tabelle A zu ändern, da Daten der Tabelle C angezeigt werden.
... und hier bin ich ohne eine Beispieldatenbank raus. Ich versehe schlicht nicht mehr, was genau das Problem nun sein soll.

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

tfuhl
Beiträge: 2
Registriert: Do 27. Jul 2017, 13:43

Re: Formular; Daten ändern, Abfrage mit Relationen

Beitrag von tfuhl » Fr 28. Jul 2017, 11:43

Ich denke ich weiß jetzt, worauf ich hinaus will.

Stell dir vor, ich habe eine DB mit 3 Tabellen. tbl_host ist meine "Haupttabelle" und tbl_modell und tbl_factory meine "Hilfstabelle".

Ich habe kein Problem damit mir diese Variablen in einer Abfrage anzeigen zu lassen, auch wenn diese über drei Tabellen verteilt sind. So weit so gut.

Aber wenn es ans editieren von diesen Variablen bin kann ich das nur tun, wenn ich eine Abfrage von tbl_host ohne tbl_model und tbl_factory erstelle.
Denn dort kann ich dann die IDs bearbeiten.
Daraufhin erstelle ich ein Formular, in dem ich ein Listenfeld mit einem SELECT Befehl auf tbl_model / tbl_factory auf Basis der in tbl_host gespeicherten ID mache, welche in der Abfrage ja bereits angezeigt wird.
http://imgur.com/JHIYYhI
http://imgur.com/yRZ91XX

Aber ich muss Variablen von der Tabelle factory anzeigen UND die Möglichkeit haben, die Variablen in tbl_host zu bearbeiten.

Was ich bis jetzt gelernt habe:
Wenn ich eine Abfrage auf tbl_host erstelle und in dieser dann die ID von tbl_model hinzufüge, kann ich alle Variablen AUSSER die FK_model bearbeiten. (Vermutlich, weil er gerade versucht, eine ID zu verändern, während diese noch an anderer Stelle angezeigt wird.)

Jedoch ist das genau das, was ich tun muss.

Ich brauche eine Abfrage auf der ich dann ein Formular erstelle in der ich Variablen von allen Tabellen sehe UND die HOST Variablen ändern kann.

Ich hoffe, das macht halbwegs sinn.

Grüße

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

Re: Formular; Daten ändern, Abfrage mit Relationen

Beitrag von RobertG » Fr 28. Jul 2017, 16:37

Hallo tfuhl,

wenn Du direkt in eine Abfrage schreiben willst, dann muss die Abfrage die Primärschlüssel aller enthaltenen Tabellen ebenfalls enthalten. Es ist dann zur Zeit nicht möglich, ein Feld zu ändern, das Fremdschlüsselfeld in einer anderen Tabelle ist. Das geht nur in einer einzelnen Tabelle, und dort dann am besten, indem ein Formular erstellt wird und der Fremdschlüssel durch ein Listenfeld bestückt wird.
Es ist (merkwürdigerweise) möglich, den Inhalt einer verknüpften Tabelle zu ändern, sofern es sich nicht um ein Fremschlüssel-Schlüsselpaar handelt. So eine Änderung macht sich dann ja häufig nicht nur bei einem Datensatz, sondern gleich bei mehreren Datensätzen bemerkbar.

Was nach der Beziehungsdefinition Deiner Datenbank die einfachste Konstruktion wäre:
Formular mit einem Unterfromular, das wieder ein Unterformular hat. tbl_factory als Tabellenkontrollfeld im Hauptformular, tbl_model im Unterformular und tbl_host im UnterUnterformular.

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


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