von RobertG » Fr, 08.06.2012 19:58
Hallo Miami,
miamit hat geschrieben:
Welche Gründe gibt es dafür, dass Datensätze in einer Abfrage nicht editierbar sind?
Ich hoffe, dass das jetzt nicht den Rahmen sprengt: LO-Base-Handbuch, Kapitel Eingabemöglichkeit in Abfragen:
Eingabemöglichkeit in Abfragen
Code: Alles auswählen
Um Eingaben in Abfragen zu tätigen muss der Primärschlüssel für die jeweils zugrundeliegende Tabelle in der Abfrage enthalten sein. Dies geht auch bei einer Abfrage, die mehrere Tabellen miteinander verknüpft.
Bei der Ausleihe von Medien ist es z.B. nicht sinnvoll, für einen Leser auch die Medien noch anzeigen zu lassen, die längst zurückgegeben wurden.
SELECT "ID", "LeserID", "MedienID", "Ausleihdatum" FROM "Ausleihe" WHERE "Rückgabedatum" IS NULL;
So lässt sich im Formular innerhalb eines Tabellenkontrollfeldes all das anzeigen, was ein bestimmter Leser zur Zeit entliehen hat. Auch hier ist die Abfrage über entsprechende Formularkonstruktion (Leser im Hauptformular, Abfrage im Unterformular) zu filtern, so dass nur die tatsächlich entliehenen Medien angezeigt werden. Die Abfrage ist zur Eingabe geeignet, da der Primärschlüssel in der Abfrage enthalten ist.
Die Abfrage wird dann nicht mehr editierbar, wenn sie aus mehreren Tabellen besteht und die Tabellen über einen Alias-Namen angesprochen werden. Dabei ist es unerheblich, ob die Primärschlüssel in der Abfrage enthalten sind.
SELECT "Medien"."ID", "Medien"."Titel", "Kategorie"."Kategorie", "Kategorie"."ID" AS "katID" FROM "Medien", "Kategorie" WHERE "Medien"."Kategorie_ID" = "Kategorie"."ID";
Diese Abfrage bleibt editierbar, da beide Primärschlüssel enthalten sind und auf die Tabellen nicht mit einem Alias zugegriffen wird.
SELECT "m"."ID", "m"."Titel", "Kategorie"."Kategorie", "Kategorie"."ID" AS "katID" FROM "Medien" AS "m", "Kategorie" WHERE "m"."Kategorie_ID" = "Kategorie"."ID";
In dieser Abfrage wird auf die Tabelle "Medien" mit einem Alias zugegriffen. Sie wird jetzt nicht editierbar sein.
In dem obigen Beispiel ist das leicht vermeidbar. Wenn aber eine Korrelierte Unterabfrage gestellt wird, so muss mit einem Tabellenalias gearbeitet werden. So eine Abfrage kann nur dann editierbar bleiben, wenn sie lediglich eine Tabelle in der Hauptabfrage enthält.
Das Handbuch findest Du hier:
http://de.libreoffice.org/hilfe-kontakt/handbuecher/ - dort etwas nach unten scrollen. Der obige Text stammt aus dem Kapitel 5 - Abfragen.
Gruß
Robert
Hallo Miami,
[quote="miamit"]
Welche Gründe gibt es dafür, dass Datensätze in einer Abfrage nicht editierbar sind?[/quote]
Ich hoffe, dass das jetzt nicht den Rahmen sprengt: LO-Base-Handbuch, Kapitel Eingabemöglichkeit in Abfragen:
[b]Eingabemöglichkeit in Abfragen[/b]
[code]
Um Eingaben in Abfragen zu tätigen muss der Primärschlüssel für die jeweils zugrundeliegende Tabelle in der Abfrage enthalten sein. Dies geht auch bei einer Abfrage, die mehrere Tabellen miteinander verknüpft.
Bei der Ausleihe von Medien ist es z.B. nicht sinnvoll, für einen Leser auch die Medien noch anzeigen zu lassen, die längst zurückgegeben wurden.
SELECT "ID", "LeserID", "MedienID", "Ausleihdatum" FROM "Ausleihe" WHERE "Rückgabedatum" IS NULL;
So lässt sich im Formular innerhalb eines Tabellenkontrollfeldes all das anzeigen, was ein bestimmter Leser zur Zeit entliehen hat. Auch hier ist die Abfrage über entsprechende Formularkonstruktion (Leser im Hauptformular, Abfrage im Unterformular) zu filtern, so dass nur die tatsächlich entliehenen Medien angezeigt werden. Die Abfrage ist zur Eingabe geeignet, da der Primärschlüssel in der Abfrage enthalten ist.
Die Abfrage wird dann nicht mehr editierbar, wenn sie aus mehreren Tabellen besteht und die Tabellen über einen Alias-Namen angesprochen werden. Dabei ist es unerheblich, ob die Primärschlüssel in der Abfrage enthalten sind.
SELECT "Medien"."ID", "Medien"."Titel", "Kategorie"."Kategorie", "Kategorie"."ID" AS "katID" FROM "Medien", "Kategorie" WHERE "Medien"."Kategorie_ID" = "Kategorie"."ID";
Diese Abfrage bleibt editierbar, da beide Primärschlüssel enthalten sind und auf die Tabellen nicht mit einem Alias zugegriffen wird.
SELECT "m"."ID", "m"."Titel", "Kategorie"."Kategorie", "Kategorie"."ID" AS "katID" FROM "Medien" AS "m", "Kategorie" WHERE "m"."Kategorie_ID" = "Kategorie"."ID";
In dieser Abfrage wird auf die Tabelle "Medien" mit einem Alias zugegriffen. Sie wird jetzt nicht editierbar sein.
In dem obigen Beispiel ist das leicht vermeidbar. Wenn aber eine Korrelierte Unterabfrage gestellt wird, so muss mit einem Tabellenalias gearbeitet werden. So eine Abfrage kann nur dann editierbar bleiben, wenn sie lediglich eine Tabelle in der Hauptabfrage enthält.[/code]
Das Handbuch findest Du hier:[url]http://de.libreoffice.org/hilfe-kontakt/handbuecher/[/url] - dort etwas nach unten scrollen. Der obige Text stammt aus dem Kapitel 5 - Abfragen.
Gruß
Robert