🙏 Helfen Sie mit, unser LibreOffice Forum zu erhalten! 🙏
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱

🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀

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

Daten werden ungewollt im nächsten Datensatz übernommen.

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
Antworten
Jean-Francois_de
! Supporter - Spende !
Beiträge: 4
Registriert: Mo 23. Okt 2023, 11:29

Daten werden ungewollt im nächsten Datensatz übernommen.

Beitrag von Jean-Francois_de » Mo 23. Okt 2023, 12:07

Hallo,

ich habe seit Jahren ein Problem mit LibreOffice Base.

Ich versuche die Lage zu beschreiben:
zwei Tabellen:
- Tabelle „Schueler“ mit SchuelerID, Name, Vorname…
- Tabelle „Noten“ mit SchuelerID, Note_Mathe, Note_Deutsch...

Ich Erstelle eine Abfrage wo beide Tabelle mit dem SchuelerID verbunden sind und kann somit die Note in Deutsch für Schüler A, Schüler B... eintragen.

Soweit so gut.

Das Problem: bei LibreOffice, wird die Eingabe (z.B. die Note) ins nächste Feld ungewollt übertragen. Siehe Video anbei. (habe ich als .ZIP angehängt, weil eine MP4-Datei ließ sich nicht hochladen). Dies passiert auch in Formulare.

Das Problem gibt es NICHT bei OpenOffice (gleiche Datenbanken, gleiche Abfrage…).
Das Problem habe ich seit Jahren so, weshalb ich parallel immer sowohl LibreOffice als auch Openoffice hatte. Dies tritt bei Windows sowie bei Linux (Ubuntu) auf. Alle Versuche mit verschiedenen Connectoren und Javas waren erfolglos.

Hat Jemand eine Idee woran es liegt?
Das Arbeiten mit LibreOffice ist für mich derzeit für meine Datenbank nicht möglich. Leider sieht OpenOffice auf Linux recht bescheiden aus…

Das Problem tritt NICHT auf wenn ich alle Daten in einer einzigen Tabelle habe (also alle Schülerdaten + Noten). Leider ist es keine Lösung, da ich pro Jahr sehr viele Spalten habe: Mathe mündlich, Mathe schriftlich, Mathe Endnote… und das für Herbst, Ostern, 1. Halbjahr, 2. Halbjahr, Prüfungen… und das mehrere Jahre hintereinander. Es Ergäbe eine Datenbank mit mehrere Tausend „Columns“. Also ist die Lösung mit mehreren Tabellen deutlich besser.

Ich hoffe Jemand kennt das Problem bzw. kennt eine Lösung. Ich habe schon mehrere Stunden in Internet gesucht aber nichts gefunden.

Mysql Datenbank, Verbindung über JDBC oder Mysql(JDBC), TreiberKlasse Mysql oder Maria. Vieles ausprobiert.
Wenn ihr mehr Infos braucht, nur zu…

Danke.
Jean-Francois
Dateianhänge
LibreOfficeBase.zip
(243.83 KiB) 127-mal heruntergeladen

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

Re: Daten werden ungewollt im nächsten Datensatz übernommen.

Beitrag von RobertG » Mo 23. Okt 2023, 17:51

Ich habe das getestet und nachstellen können.

Wäre schön gewesen, wenn Du das früher gemeldet hättest. Ich habe das jetzt eben gemacht: https://bugs.documentfoundation.org/sho ... ?id=157898.

Bei meinen Test hat sich ergeben, dass die mit der Pfeiltaste mitlaufende Zahl nicht gespeichert wird. Selbst wenn ich einen Return dabei ansetze. Es stimmt einfach etwas mit dem Refresh nicht.

Was mich gewundert hat: Bei der Abfrage steigt die direkte Verbindung sofort aus der Eingabemöglichkeit aus. Die Abfrage ist dort schreibgeschützt.

Welche Startparameter gibst Du denn über JDBC weiter? Ich habe hier als Parameter erst einmal nur ?permitMysqlScheme .
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

Jean-Francois_de
! Supporter - Spende !
Beiträge: 4
Registriert: Mo 23. Okt 2023, 11:29

Re: Daten werden ungewollt im nächsten Datensatz übernommen.

Beitrag von Jean-Francois_de » Mo 23. Okt 2023, 18:31

Hallo,

danke für die schnelle Antwort und die BUg-Meldung.
Wäre schön gewesen, wenn Du das früher gemeldet hättest.
Sorry. Das ist sehr lange her. Ich war (und bin noch) blutiger Anfänger in mysql und hatte mich irgendwie durchgekämpft (trial and error) um das Ding überhaupt zum Laufen zu kriegen. Eine Lösung zu diesem Problem hatte ich im Internet nicht gefunden und das auf eine falsche Konfiguration meinerseits geschoben und mit der Lösung (LibreOffice für Alltag + OpenOffice für Datenbank) gelebt.
Welche Startparameter gibst Du denn über JDBC weiter?
Bin mir nicht sicher was Du meinst.
Ich habe folgende beide Möglichkeiten probiert:
- MySQL(JDBC) -> Name der MySQL/Maria-Datenbank eingeben -> Benutzername eingeben -> localhost /3306 -> Treiberklasse: com.mysql.jdbc.Driver -> Zeichensatz: System -> Fertigstellen

- JDBC -> jdbc:mysql://localhost/zeugnisse_2024?useUnicode=true&useJDBCCompliantTimezoneShift=True&useLegacyDatetimeCode=false&serverTimezone=UTC -> Benuztername eingeben -> JDBC-Treiberklasse: com.mysql.jdbc.Driver oder org.maria.jdbc.driver -> Fertigstellen

Wie gesagt, mit OpenOffice kein Problem. Das war schon vor Jahren so. Da ich davon im Internet überhaupt nichts lesen konnte, habe ich angenommen das Problem gibt es nur bei mir und ist auf eine falsche Einstellung zurückzuführen. Wie kann es sein, dass niemand das Problem schon gehabt hat??

Bei einer einzigen Tabelle passiert das nicht. Nur wenn zwei Tabellen zusammengeführt werden...
Was mich gewundert hat: Bei der Abfrage steigt die direkte Verbindung sofort aus der Eingabemöglichkeit aus. Die Abfrage ist dort schreibgeschützt.
Sorry, ich verstehe nicht was gemeint ist. Was ist "direct connection"?

Grüße,


Jean-Francois

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

Re: Daten werden ungewollt im nächsten Datensatz übernommen.

Beitrag von RobertG » Mi 25. Okt 2023, 09:06

Hallo Jean-Francois,

direkte Verbindung: In LibreOffice ist ein Treiber enthalten, der auch ohne JDBC oder ODBC (der 2. Variante, eine Allroundverbindung hin zu bekommen) funktioniert. Ist in den meisten Fällen deutlich schneller und auch deutlich einfacher in der Installation. Wenn Du mit OpenOffice arbeitest ist der früher als Extension zu haben gewesen. Da weiß ich aber nicht, ob der noch funktioniert.

Aber, wie beschrieben: Aus irgend einem Grunde mach der direkte Treiber bei der Verbindung der Tabellen zu einer 1:1-Verbindung direkt dicht und lässt kein Schreiben mehr zu. Ich schaue mir auch das einmal an und melde das gegebenenfalls als Bug.

Wenn Du da Noten eingibst: Warum benutzt Du die MariaDB?

Wenn Du eine 1:1-Verbindung hast: Wie erstellst Du denn jedes Mal bei neuer Noteneingabe die Primärschlüssel? Schreibst Du die erst einmal in die Tabelle? Machst Du das zu jedem neuen Datum per SQL? Dann würde sich ja anbieten, die Kombination aus Datum und Schlüsselwert für SchülerInnen gemeinsam zu einem Schlüsselfeld zu machen.

Die ganze Abfrage über 2 Tabellen mit direkter Verbindung kannst Du Dir auch sparen, wenn Du so etwas konstruierst:

Code: Alles auswählen

SELECT `a`.*, 
(SELECT `Forename` FROM `libretest`.`Person` WHERE `ID` = `a`.`PersonID`) AS `Person` 
FROM `libretest`.`Zensuren` AS `a`
Du fragst in einer äußeren Abfrage die Zensurenliste ab und setzt über eine innere Abfrage dann die Personen mit ihren Namen dazu. Über den Tabellenalias weiß die innere Abfrage, welchen Namen sie zu den äußeren ID-Werten zuordnen muss.

Dies funktioniert mit dem direkten Treiber problemlos und auch ohne dass irgendwelche kopierten Werte (scheinbar) mitgezogen werden.

Und noch ein Hinweis: Das, was Du da für die 1:1 entdeckt hast, ist kein spezifischer MySQL/MariaDB-Bug. Das passiert mit der internen Datenbankdatei genauso. Ich habe das nachstellen können, den alten Bug geschlossen und einen neuen aufgemacht: https://bugs.documentfoundation.org/sho ... ?id=157913


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

Jean-Francois_de
! Supporter - Spende !
Beiträge: 4
Registriert: Mo 23. Okt 2023, 11:29

Re: Daten werden ungewollt im nächsten Datensatz übernommen.

Beitrag von Jean-Francois_de » Fr 27. Okt 2023, 17:36

Hallo Robert,

vielen Dank für deinen Einsatz.
Verzeihe bitte die späte Rückmeldung. Ich war drei Tage mit meiner Familie unterwegs.

Ich bin mit dem Ganzen intellektuell leider etwas überfordert, versuche aber das alles zu verstehen. Dazu habe ich auch deine Test-Datei "Refreshbug1to1" heruntergeladen und "studiert". Das hat sehr geholfen.
Der einzige unterschied zwischen 1to1 und 1toN ist, dass bei 1toN nicht beide Primärschlüssel verknüpft werden (du hast also eine neue Spalte hinzugefügt) oder ist da mehr?
Wie erstellst Du denn jedes Mal bei neuer Noteneingabe die Primärschlüssel?
Ich habe die Datenbank "Schueler" mit Tabelle "Schueler": SchuelerID, Name, Vorname...
und die Datenbank Noten_2023 mit Tabelle "Noten_1HJ": NotenID, Note_Mathe, Note_Deutsch...
In Beiden Datenbanken sind "ID" die Primärschlüssel und ich gebe sie am Anfang des Jahres per Hand ein. (also wenn wir 25 neue Schüler haben, dann füge ich in beiden Datenbanken 25 neue IDs hinzu).

Ich gehe für die Zeugnisse folgendermaßen vor:
zwei Woche vor den Zeugnisse aktiviere ich den Zeugnis-Server wieder ein. Dazu werden einige Clients aufgebaut.
Die Lehrkräfte melden sich an den Clients an, wählen ihre Klasse sowie Fach aus und geben die Noten ein (siehe Bild 1 anbei).
Dann

Die Abfrage sieht (gekürzt) so aus:
SELECT `schueler`.`schueler`.`SchuelerID`, `schueler`.`schueler`.`Name`, `schueler`.`schueler`.`Vorname`, `zeugnisse_psd_2023`.`noten_1hj`.`NotenID`,, `zeugnisse_psd_2023`.`noten_1hj`.`Deutsch_1HJ`, ...
FROM `zeugnisse_psd_2023`.`noten_1hj`, `schueler`.`schueler` WHERE `zeugnisse_psd_2023`.`noten_1hj`.`NotenID` = `schueler`.`schueler`.`SchuelerID`

Für die Notenkonferenz habe ich einen Formular womit wir jeden Schüler besprechen können. (Siehe Bild 2).

Daraus mache ich dann mit Serienbriefe Notenliste sowie Zeugnisse.
Die ganze Abfrage über 2 Tabellen mit direkter Verbindung kannst Du Dir auch sparen, wenn Du so etwas konstruierst:
Ich habe versucht es zu verstehen (Misslungen) und an deine Test-Datenbank anzupassen:

SELECT "a".*, ( SELECT "name" FROM "RefreshBug1to1"."tbl_Person" WHERE "ID" = "a"."PersonID" ) AS "Person" FROM "RefreshBug1to1"."tbl_Grade_2" AS "a"

Das funktioniert nicht. Wo ist mein Denkfehler?



viele Grüße,

Jean-Francois
Dateianhänge
Bild2.png
Bild2.png (132.9 KiB) 5313 mal betrachtet
Bild1.png
Bild1.png (163.05 KiB) 5313 mal betrachtet

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

Re: Daten werden ungewollt im nächsten Datensatz übernommen.

Beitrag von RobertG » Fr 27. Okt 2023, 19:49

Hallo Jean-Francois,

mich wundert natürlich zuerst, mit was für einfachen Mitteln ihr in der Schule strickt. Ich war Lehrer an einer Gesamtschule in NRW. Da war die Datenbank zentral vorgegeben vom Land …

Code: Alles auswählen

SELECT `a`.`NotenID`, 
(SELECT CONCAT(`Name`, ', ', `Vorname`) FROM `schueler`.`schueler` WHERE `SchuelerID` = `a`.`NotenID`) AS `Schueler`, 
`a`.`Deutsch_1HJ`, ...
FROM `zeugnisse_psd_2023`.`noten_1hj` AS `a`
Wenn ich nicht irgendwo einen Bock drin habe und Name sowie Vorname nie leer sind, dann dürfte das Passen. Du kannst natürlich auch Name und Vorname in einzelnen Unterabfragen trennen.
Die `NotenID` ist ja gleich der `SchuelerID`, so dass ich bei dieser Konstruktion auf dem Primärschlüssel der Schülertabelle verzichtet habe. Die Abfrage der Schüler ist eine komplett separate Abfrage. Der äußeren Tabelle habe ich ein Alias zugewiesen (`a`). Dadurch kann ich auf den äußeren Wert für `NotenID` zugreifen. Deswegen stellt die innere Abfrage nur diesen Wert dar.

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

Jean-Francois_de
! Supporter - Spende !
Beiträge: 4
Registriert: Mo 23. Okt 2023, 11:29

Re: Daten werden ungewollt im nächsten Datensatz übernommen.

Beitrag von Jean-Francois_de » Sa 28. Okt 2023, 17:51

Hallo Robert,
mich wundert natürlich zuerst, mit was für einfachen Mitteln ihr in der Schule strickt.
Das kann ich verstehen. Ich arbeite an einer kleinen Privatschule. Privatschulen dürfen in Schleswig-Holstein kein Zugang zum Ministerium haben und müssen daher für alles ihre eigene Lösungen finden.
Wir haben damals die Noten über unsere Schulverwaltungssoftware (Scola) eingegeben. Als wir Gemeinschaftsschule wurden, habe ich diese Aufgabe übernommen und mache seitdem alles über MySQL und LibreOffice/OpenOffice. Vielleicht nicht das modernste und schönste, aber kostengünstig und sehr flexibel!

In die (staatliche) Grundschule meines Sohnes werden die Noten per Hand in einer Word-Datei eingegeben!
Da bin ich mit meiner Datenbank vergleichsweise modern!! :shock: :D

Ich danke Dir vielmals für deinen CODE.
Ich habe es ausprobiert, angepasst und dann mein ganzes System damit umprogrammiert.
Das ist jetzt sauber und schnell. Auch kann ich auf OpenOffice verzichten, da das Problem mit den "Geisternoten" nun umgangen wurde.

Ich danke dir vielmals und werde das Forum durch eine Spende unterstützen!

Liebe Grüße,

Jean-Francois


PS: ich hatte noch ein Fehler "Parameter index out of range (1 > number of parameters, which is 0)".
Auch da hast du mir geholfen. Eine kurze Suche in Internet ergab die Lösung:
https://bugs.documentfoundation.org/sho ... 118112#c24


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