Base - Formular - keine Änderungen an Daten möglich

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Base - Formular - keine Änderungen an Daten möglich

Re: Base - Formular - keine Änderungen an Daten möglich

von beat4u » Fr, 06.07.2012 16:04

miamit hat geschrieben:Hallo Robert, habe gerade die Verson AO 3.4.0 heruntergeladen, denn die 3.3.0 gab es im Archiv nicht mehr, nur maximal 3.2.1.
OO 3.3.0 kriegt man problemlos: Startseite deutsches OpenOffice/Download aktuelle Version/Legacy Version

Dort ist unter dem grünen Banner das OO3.3.0 zu downloaden.

Es wird empfohlen, frühere Versionen vorher zu entfernen.

Gruss
Beat

Re: Base - Formular - keine Änderungen an Daten möglich

von RobertG » Fr, 15.06.2012 18:17

Eigentlich kann es nicht sein, dass alle möglichen Versionen so fehlerhaft auf einem System laufen. Da muss noch eine andere Variante mitspielen.
Folgende Elemente sind zu beachten:
Die sicherste Installation einer neuen Version von Libre- oder OpenOffice erfolgt so, dass nicht ein vorhergehendes Benutzerverzeichnis verwendet wird. Gegebenenfalls also das alte Benutzerverzeichnis umbenennen.
Eine sichere Datenbankfunktion kann nur mit einer passenden Java-Laufzeitumgebung gewährleistet werden. So ist z.B. unter OpenSuSE von Sun nur die Version 6_u22 von der Geschwindigkeit her passabel. alle anderen Versionen danach sind gähnend langsam. Unter Windows gab es, soweit ich weiß, Probleme mit der 7er-Version, die noch nicht so lange raus ist.
Wenn ein Office-Programm allerdings neu gestartet werden muss, damit ein Primärschlüssel übernommen wird, dann kann genau an diesem Punkt etwas faul sein.

Das einzige Element, was innerhalb von Base für meine Begriffe tatsächlich recht instabil ist, ist der Reportgenerator. Instabil ist dieser aber nur beim Erstellen des Reports - also laufend abspeichern und hoffen. Wenn die Berichte erst einmal erstellt wurden, läuft auch dieses Element absturzfrei.

Gruß

Robert

Re: Base - Formular - keine Änderungen an Daten möglich

von RobertG » Fr, 15.06.2012 16:37

Hallo Miamit,
miamit hat geschrieben: Gibt es eine Möglichkeit, mit Aliasen zu rechnen?
Die einzige Möglichkeit, mit einem Alias aus einer Feldbezeichnung etwas anzufangen, ist die Verwendung in einem anderen Bereich als gerade dem der Feldbezeichnungen. Wenn Du z.B. eine Addition von zwei Feldern durchführst und die an anderer Stelle noch einmal benötigst, so kannst Du den berechneten Wert nicht aus dem vorhergehenden Feld (über ein Alias) ziehen.

Gruß

Robert

Re: Base - Formular - keine Änderungen an Daten möglich

von RobertG » So, 10.06.2012 19:26

Dass eine der Abfragen einen Fehler auswirft liegt daran, dass ich einen Abfragenamen anschließend geändert habe. Ich lade jetzt die Datei noch einmal hoch - mit korrigierter Abfrage.
Die Abfragen funktionieren unter OOo 3.3, LO 3.3.4 und LO 3.5.4
Deine Fehlermeldungen liegen für mich eindeutig an der Version 3.2.1

Welche Version ich empfehlen würde? In der Schule machen wir gerade für die Schülerrechner ein Update von OOo 3.1.1 auf LO 3.3.4. Das sind alles Windows-Rechner. Mit LO 3.3.4 arbeite ich hier sehr zufriedenstellend in allen Bereichen. Die Version LO 3.4.* habe ich kurz einmal auf einem Rechner gehabt. Da wurden Formulare plötzlich im Drucklayout (mit Rand) dargestellt, so dass bei großer Breite die Formularfelder übereinander lagen. Sofort wieder runter und LO 3.3.4 installiert. Das gleiche Problem soll, wenn ich das richtig verstanden haben, bei der neuen AOO 3.4 auftreten. Also auch keine Wahl für eine Datenbank mit Formularen. OOo 3.3 habe ich noch drauf, weil die LO-Versionen in den Berichten keine senkrechten und waagerechten Linien darstellen. Das habe ich mittlerweile mit Grafiken wie Rechtecken wesentlich einfacher umgangen. Dafür stellt dann OOo 3.3 keine Diagramme in Berichten dar.
Du merkst, ich betrachte das alles aus der Datenbanksicht, weil ich eben viel mit Datenbanken arbeite.
Die 3.5.4 hat ein paar Bugfixes bezüglich fehlerhafter Abfragendarstellung erhalten. Sie läuft in der aktuellen 3.5.4.2 auch recht ordentlich - nur fehlen wieder die Diagramme in den Berichten.

Also: Wenn Du unbedingt bei OpenOffice bleiben willst: OOo 3.3.0 wird es machen. Diese Version wird bei mir wohl auch noch länger zum Testen liegen - bis vielleicht eine der Office-Versionen endlich die betagte interne HSQLDB 1.8 durch die Version 2.2 ersetzt. Dann ist auf jeden Fall ein Update erforderlich, dann sind die damit einmal bearbeiteten Datenbanken nicht mehr abwärtskompatibel.

Gruß

Robert
Dateianhänge
Editierbarkeit_Abfragen.odb
Korrektur der ersten Abfrage ...
(25.93 KiB) 139-mal heruntergeladen

Re: Base - Formular - keine Änderungen an Daten möglich

von RobertG » So, 10.06.2012 07:43

Hallo Miamit,

ich habe mir die Datenbank und die Abfragen angesehen. Ich kann keine Besonderheiten entdecken.
miamit hat geschrieben:

Code: Alles auswählen

SELECT "Artikelgesamtliste"."Artikelnummer", "Artikelgesamtliste"."VK brutto" FROM "Artikelgesamtliste", "Lieferanten" WHERE "Artikelgesamtliste"."Lieferant" = "Lieferanten"."Lieferant"
Liefert eine editierbare Abfrage mit den Feldern Artikelnummer und VK brutto.
Diese Abfrage erscheint bei mir nicht editierbar - in OOo 3.3.0 und LO 3.3.4.
miamit hat geschrieben: Dann bringe ich, wie du sagst, den Primärschlüssel der Tabelle Lieferanten, also Lieferant ein:

Code: Alles auswählen

SELECT "Artikelgesamtliste"."Artikelnummer", "Artikelgesamtliste"."VK brutto", "Lieferanten"."Lieferant" FROM "Artikelgesamtliste", "Lieferanten" WHERE "Artikelgesamtliste"."Lieferant" = "Lieferanten"."Lieferant"
Das liefert mir die Fehlermeldung:
Invalid Argument in JDBC Call: Parameter Index out of range: 2.
Diese Abfrage erscheint bei mir editierbar - keine Fehlermeldung.
miamit hat geschrieben:

Code: Alles auswählen

SELECT "Artikelgesamtliste"."Artikelnummer", "Artikelgesamtliste"."VK brutto", "Lieferanten"."Lieferant", "Artikelgesamtliste"."Lieferant" FROM "Artikelgesamtliste", "Lieferanten" WHERE "Artikelgesamtliste"."Lieferant" = "Lieferanten"."Lieferant"
Erhalte ich wieder eine uneditierbare Abfrage mit allen Daten und zwei SPalten, in der der Lieferant eines Artikels angezeigt wird, was logisch ist.
Auch diese Abfrage erscheint bei mir editierbar.
Was mir noch auffällt:
  • - Du benutzt die Namen der Lieferanten als Primärschlüssel. Was machst Du bei gleichen Namen? Gleiches gilt für die Mitarbeiter.
    - Du hast die Beziehungen Deiner Datenbank unter Extras → Beziehungen nicht definiert. So eine Definition schützt vor Fehleingaben. Würde ich dringend machen.
    - Du hast noch nicht Deine Office-Version benannt.
Gruß

Robert

Re: Base - Formular - keine Änderungen an Daten möglich

von RobertG » So, 10.06.2012 07:25

Hallo Miamit,
miamit hat geschrieben: Ich habe die mal die DB geelert, vereinfacht und hochgeladen.
Die 3 Situationen können in den 3 Abfragen nachvollzogen werden.
Ich habe gerade eine einfache Datenbank mit 4 verschiedenen Abfragen bestückt und hochgeladen, damit wenigstens klar wird, wann eine Abfrage editierbar ist. Jetzt werde ich mir Deine Datenbank ansehen.

Gruß

Robert
Dateianhänge
Editierbarkeit_Abfragen.odb
(25.99 KiB) 104-mal heruntergeladen

Re: Base - Formular - keine Änderungen an Daten möglich

von RobertG » Sa, 09.06.2012 22:29

Hallo Miamit,

mir scheint, dass Du hier im Code nicht den Originalinhalt Deiner Abfragen postest. Amnders kann ich mir das nicht erklären,
miamit hat geschrieben:

Code: Alles auswählen

SELECT "Artikelgesamtliste"."Artikelnummer", "Artikelgesamtliste"."VK brutto" FROM "Artikelgesamtliste", "Lieferanten" WHERE "Artikelgesamtliste"."Lieferant" = "Lieferanten"."Lieferant"
Liefert eine editierbare Abfrage mit den Feldern Artikelnummer und VK brutto.
Es besteht ein innerer Verbund zwischen Artikelgesamtliste.Lieferant und Lieferanten.Lieferant.
Wenn ich so zwei Tabellen miteinander verbinde und von der zweiten Tabelle nicht das Schlüsselfeld in der Abfrage als Feld vorhanden ist, ist die Tabelle bei mir nicht editierbar. Das teste ich hier mit OOo 3.3, LO 3.3.4 und LO 3.5.4 mit gleichem Ergebnis.
miamit hat geschrieben: Dann bringe ich, wie du sagst, den Primärschlüssel der Tabelle Lieferanten, also Lieferant ein:

Code: Alles auswählen

SELECT "Artikelgesamtliste"."Artikelnummer", "Artikelgesamtliste"."VK brutto", "Lieferanten"."Lieferant" FROM "Artikelgesamtliste", "Lieferanten" WHERE "Artikelgesamtliste"."Lieferant" = "Lieferanten"."Lieferant"
Das liefert mir die Fehlermeldung:
Invalid Argument in JDBC Call: Parameter Index out of range: 2.
Da komme ich nicht mehr mit. Das Feld hast Du vorher auch schon in Deiner Abfrage über die Beziehung drin.
Ohne genauere Informationen zur Datenbank (Beziehungsdefinition unter Extras → Beziehungen) oder die Datenbank selber kann ich Dir da nicht helfen. Die obige Abfrage müsste die editierbare Abfrage sein, wenn "Lieferanten"."Lieferant" der Primärschlüssel von "Lieferanten" und "Artikelgesamtliste"."Artikelnummer" der Primärschlüssel von "Artikelgesamtliste" ist und die Fremdschlüssel zu den Primärschlüsseln passen.
Hast Du überhaupt eine richtige Beziehungsdefinition erstellt?
Mit welcher Office-Version arbeitest Du?

Gruß

Robert

Re: Base - Formular - keine Änderungen an Daten möglich

von RobertG » Sa, 09.06.2012 16:00

Hallo Miamit,
miamit hat geschrieben:

Code: Alles auswählen

SELECT "Artikelgesamtliste"."Artikelnummer", "Artikelgesamtliste"."Lieferant" FROM "Artikelgesamtliste", "Lieferanten" WHERE "Artikelgesamtliste"."Lieferant" = "Lieferanten"."Lieferant"
Diese Abfrage zeigt mir alle meine Artikel und die zugehörigen Lieferanten an.
So, wie die Abfrage da steht, ist sie bereits nicht editierbar. Es fehlt der Primärschlüssel der Tabelle "Lieferanten". Das Gleiche gilt für die folgenden Abfragen:
miamit hat geschrieben:

Code: Alles auswählen

SELECT "Artikelgesamtliste"."Artikelnummer", "Artikelgesamtliste"."Lieferant", "Artikelgesamtliste"."VK brutto" FROM "Artikelgesamtliste", "Lieferanten" WHERE "Artikelgesamtliste"."Lieferant" = "Lieferanten"."Lieferant"

Code: Alles auswählen

SELECT "Artikelgesamtliste"."Artikelnummer", "Artikelgesamtliste"."Lieferant", "Artikelgesamtliste"."VK brutto", "VK brutto" / 1.19 AS "VK netto" FROM "Artikelgesamtliste", "Lieferanten" WHERE "Artikelgesamtliste"."Lieferant" = "Lieferanten"."Lieferant"
In den ersten Abfragen, die Du hier gepostest hast, war einfach noch das Feld "Lieferanten"."Lieferant" drin - "Artikelgesamtliste"."Lieferant" zeigt zwar den gleichen Inhalt, ist aber nur der Fremdschlüssel.

Gruß

Robert

Re: Base - Formular - keine Änderungen an Daten möglich

von RobertG » Sa, 09.06.2012 12:25

Wenn Du als Erfolg siehst: "Abfrage editierbar", dann musst Du einfach die Abfrage, die Du in eine andere Abfrage reinpackst, rausnehmen.
Ansonsten verstehe ich nicht, wo Du "Erfolg" sehen willst.
Oder meinst Du "Erfolg", dass die Datensätze beim zweiten Mitarbeiter nicht plötzlich auf die doppelte Zahl ansteigen?

Gruß

Robert

Re: Base - Formular - keine Änderungen an Daten möglich

von RobertG » Sa, 09.06.2012 09:33

Hallo Miamit,
miamit hat geschrieben: Außerdem wird für jeden Mitarbeiter auf Basis der Werte Stundenlohn und Arbeitsgeschwindigkeit (in Lohnkosten enthalten) in der Abfrage Lohnkosten die Kosten pro Stück berechnet.
Diese Kosten pro Stück fließen dann mit in die Berechnungen ein.
Wenn ich "Kosten pro Stück" lese gehe ich jetzt davon aus, dass Deine Abfrage nur einen Datensatz enthält. Solange das der Fall ist hast Du natürlich keine Verdoppelungen bei der Konstruktion zu befürchten. Vielleicht hast Du ja auch bisher nur einen Mitarbeiter in Deiner Testdatenbank?
Noch einmal: Die folgende Konstruktion erzeugt erst einmal nicht zusammenhängende Datensätze:

Code: Alles auswählen

FROM "Artikelgesamtliste", 
"Lieferanten",
"Abfrage_Lohnkosten", 
"Lohnkosten" 

WHERE 
"Artikelgesamtliste"."Lieferant" = "Lieferanten"."Lieferant" 
AND 
"Abfrage_Lohnkosten"."Mitarbeiter" = "Lohnkosten"."Mitarbeiter" 
"Mitarbeiter" hängt nicht mit "Lieferant" zusammen. Wenn Du z.B. in der Tabelle "Lieferanten" jedem "Lieferant" einen bestimmten "Mitarbeiter" zuordnen würdest, dann könntest Du eine entsprechende Bezihung definieren:

Code: Alles auswählen

WHERE 
"Artikelgesamtliste"."Lieferant" = "Lieferanten"."Lieferant" 
AND 
"Abfrage_Lohnkosten"."Mitarbeiter" = "Lohnkosten"."Mitarbeiter" 
AND 
"Lohnkosten"."Mitarbeiter" = "Lieferanten"."Mitarbeiter" 
Damit wären dann alle Tabellen eindeutig verbunden. Natürlich kannst Du auch einen "Mitarbeiter" in der "Artikelgesamtliste" haben.
Diese folgenden Felder finde ich allerdings in Deiner Abfrage:

Code: Alles auswählen

SELECT 
"Artikelgesamtliste"."Artikelnummer", 
"Abfrage_Lohnkosten"."Lohnkosten pro Artikel", 
"Lohnkosten"."Mitarbeiter", 
"Lieferanten"."Lieferant",
...
Dass eine bestimmte Artikelnummer einen bestimmten Lieferanten hat ist definiert. Dass aber ein bestimmter Mitarbeiter nur für eine bestimmte Artikelnummer zuständig ist, das ist nirgendwo beschrieben. Sobald Du zwei Mitarbeiter hast wird in Deiner Abfrage die Artikelnummer doppelt dargestellt - mit dem ersten und dem zweiten Mitarbeiter.

Gruß

Robert

Re: Base - Formular - keine Änderungen an Daten möglich

von RobertG » Fr, 08.06.2012 21:10

Hallo Miamit,
miamit hat geschrieben: Ich habe die Abfrage nach dem WHERE wie folgt geändert,
sodass die Beziehung zwischen Abfrage_Lohnkosten und Lohnkosten nun auch definiert ist, richtig?

Code: Alles auswählen

WHERE 
"Artikelgesamtliste"."Lieferant" = "Lieferanten"."Lieferant" 
AND 
"Abfrage_Lohnkosten"."Mitarbeiter" = "Lohnkosten"."Mitarbeiter" 
ORDER BY 
"Artikelgesamtliste"."Artikelnummer" 
ASC
In der Designansicht ist neben der Verbindungslinie zwischen Lieferant und Lieferant
demnach auch eine Verbindungslinie (innerer Verbund) zwischen
Mitarbeiter und Mitarbeiter zu sehen.
Das Problem wird weiter die Verwendung einer Abfrage in einer Abfrage sein. Aber was anderes fällt mir immer noch auf: "Artikelgesamtliste" ist mit "Lieferanten" verbunden. Auch eine zweite Verbindung von "Abfrage_Lohnkosten" zu "Lohnkosten" hast Du drin. Aber wie hängen "Lieferanten" und "Lohnkosten" zusammen?
Wenn Du zwei Tabellen nebeneinander darstellst, ohne die Beziehung zu definieren, dann erscheinen so viele Datensätze, wie es Kombinationen zwischen beiden Tabellen gibt. Nimm einmal an, dass die eine Tabelle aus 3 Datensätze, die andere aus 4 Datensätzen besteht. Dann werden bei
SELECT "Tabelle1".*, "Tabelle2".* FROM "Tabelle1", "Tabelle2"
insgesamt 3*4=12 Datensätze angezeigt. Dadurch, dass Du 2 Paare definierst, erzeugst Du das gleiche Verhalten. Du multiplizierst die Datensatzanzahl des ersten Paares mit der des zweiten Paares.

Gruß

Robert

Re: Base - Formular - keine Änderungen an Daten möglich

von RobertG » Fr, 08.06.2012 21:02

Hallo Miamit,

es wird an der Abfrage liegen. Versuche einfach einmal eine Abfrage zu erstellen, die nur auf diese Abfrage zugreift. Sie ist nicht editierbar. Du musst die Abfrage irgendwie direkt aus den Tabellen in Deine Gesamtabfrage bekommen.

Gruß

Robert

Re: Base - Formular - keine Änderungen an Daten möglich

von RobertG » Fr, 08.06.2012 20:38

Was sind bei Dir die Primärschlüssel? Du hast da vom Prinzip her 4 Tabellen drin (eins davon eine Abfrage - die ist hoffentlich editierbar ...) aber nur die Beziehung zwischen zwei Tabellen geklärt: Die Beziehungen zu
"Abfrage_Lohnkosten" und "Lohnkosten" bleiben ungeklärt.
Ich habe gerade einmal einen kurzen Test gemacht:
Erstelle eine Abfrage einer Tabelle - Abfrage1.
Erstelle eine weitere Abfrage, die nur auf diese (editierbare) Abfrage zugreift. Zumindest LO macht daraus eine nicht editierbare Abfrage, da es die Abfrage ähnlich behandelt wie eine Ansicht, die direkt aus einer Datenbank kommt. Es kann also schon allein an der "Abfrage_Lohnkosten" liegen.

Gruß

Robert

Re: Base - Formular - keine Änderungen an Daten möglich

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

Re: Base - Formular - keine Änderungen an Daten möglich

von RobertG » Fr, 08.06.2012 19:38

Mach es doch einfach folgendermaßen:
Poste die Abfrage aus der SQL-Ansicht hier im Forum. Oder, noch besser, mach eine Kopie Deiner Datenbank, leere sie und fülle sie mit ein paar Dummy-Daten. Lade sie hier hoch. Dann sehen wir weiter.
Welche Berechnungen hast Du denn durchgeführt?

Gruß

Robert

Nach oben