BITTE helfen Sie uns HEUTE mit einer SPENDE
Helfen Sie das LibreOffice Forum zu erhalten!

❤️ DANKE >><< DANKE ❤️

> KEINE WERBUNG FÜR REGISTRIERTE BENUTZER!<
Ihre Spende wird für die Deckung der laufenden Kosten sowie den Erhalt und Ausbau 🌱 des LibreOffice Forums verwendet.
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

Fehlermeldung bei Unterformular

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
Benutzeravatar
Chr_Alt
Beiträge: 16
Registriert: Di 25. Jan 2022, 11:14

Fehlermeldung bei Unterformular

Beitrag von Chr_Alt » Di 25. Jan 2022, 12:47

Hallo Zusammen,

ich habe hier seit geraumer Zeit ein Problem mit einem Unterformular

Ich verwalte meine Medien mit einer MariaDB (10.3.31-MariaDB-0+deb10u1] auf Debian 10. Selbiges läuft in einer Proxmox-VM auf einem Intel NUC6-igendwas. Ich bin im letzten Jahr von MySQL auf eben diese MariaDB umgestiegen, selbiges hat problemlos funktioniert, auch mit anderen Datenbanken.

Zur Datenbank "Musik"

Es gibt diverse Tabellen, die Haupttabellen sind "MUSIK" (die eigentlichen Alben), "TITEL", "MUSIKER", und "Tonträger"
Alle Tabellen, mit Ausnahme der Tabelle "MUSIK", haben jeweils einen eigenen Index ("ID") sowie ein Feld mit der Nummer des Albums ("LP-NR). Als Fremdschlüssel ist in diesen Tabellen "LP-NR" der Tabelle "MUSIK" eingetragen, darüber finde die Verknüpfung statt. Die Felder "LP-NR" haben in allen Tabellen den Typ "Integer [Int]" (Tabellenstatus "Bearbeiten" in Libreoffice). In der Tabelle "MUSIK" ist das Feld "LP-NR" der Index.

Es gibt ein Hauptformular mit dem jeweiligen Album sowie Unterformulare für Titel, das Cover, die beteiligten Musiker und den oder die Tonträger.in jeweils eigenen Tabellen.

Libreoffice läuft auf Verschiedenen Rechnern mit unterschiedlichen BS, der Fehler tritt immer auf und aus der Meldung kann man schließen das es an der Tabelleneigenschaf liegt, ich kann aber keinen Fehler in besagter Tabelle "Tonträger" finden.
Als Treiber nutze ich den in Libreoffice integrierten MySQL-Connector

Hier nun die Fehlermeldungen unter openSuse Leaf 15.2 mit Libreoffice 7.1.4.2:
Die Dateninhalte konnten nicht geladen werden. /home/abuild/rpmbuild/BUILD/libreoffice-7.1.4.2/connectivity/source/commontools/dbtools.cxx:751
Unknown column type when fetching result /home/abuild/rpmbuild/BUILD/libreoffice-7.1.4.2/connectivity/source/drivers/mysqlc/mysqlc_prepared_resultset.cxx:350

Leider habe ich keine Idee mehr und hoffe daher hier auf Unterstützung.

Gruß
Chr_Alt

RobertG
Beiträge: 2732
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Fehlermeldung bei Unterformular

Beitrag von RobertG » Di 25. Jan 2022, 16:18

Hallo Chr_Alt,

erst einmal: Das System, auf dem LibreOffice läuft, ist OpenSUSE, nicht Debian, oder? In sofern ist die Beschreibung für mich etwas verwirrend.

Die verknüpften Felder in dem Formular haben auf jeden Fall die gleichen Datentypen?

Ist vielleicht bei Deiner *.odb-Datei die Weitergabe von Parametern unterbunden? Schau dazu einmal im Handbuch Base 7.2 die entsprechenden Hinweise ab S. 102 nach.

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

Benutzeravatar
Chr_Alt
Beiträge: 16
Registriert: Di 25. Jan 2022, 11:14

Re: Fehlermeldung bei Unterformular

Beitrag von Chr_Alt » Do 27. Jan 2022, 16:16

Hallo Robert,


erst mal Danke, ich schau dann gleich mal da rein, jetzt erst mal um Diene Verwirrung aufzulösen:

Libreoffice läuft auf einem Rechner mit Debian (mittlerweile 11 - bullseye), auf einem anderen mit openSuse (noch Leaf 15.2) und in einer Proxmox-VM unter Windows. in allen Fällen gibt es die Fehlermeldung.

Und es gibt mehrere Unterformulare in dem Hauptformular alle mit der selben Verbindung, also über "LP-NR"

Wenn mich mein Gedächtnis nicht völlig täuscht hat bis zur LO V6.irgendwas alles funktioniert. Ich könnte natürlich probieren ob es mit einer V6. noch funktioniert, aber selbst wenn wäre das ja eher nur eine Hilfslösung.

Ich habe bisher einfach die Tabelle "Tonträger" über den Adminer (MyAdmin-Äquivalent), aber das ist auf Dauer die noch größere Krücke.

Ich habe heute mal mit einem Formular zum einpflegen (es gibt ein weiteres zum betrachten und ändern, das ist aber eine angepasste Kopie) eines neuen Albums, genau selbiges getan - mit folgendem Ergebnis:

Alle Unterformulare haben anstandslos funktioniert, also die Daten an die MariaAD weitergegeben.

Das Unterformular für den/die Tonträger hat die Daten also ebenfall durchgereicht und zwar so lange wie man selbiges nicht verlassen hat (also irgendwo anders in dem Hauptformular angeklickt hat). Wenn man es doch getan hat wurde der in "Tonträger" angelegt, und zwar mit dem bisher eingetragenen Inhalt - soweit so gut. Wenn man dann wieder auf das Unterformular geklickt hat wurde ein neuer Datensatz in der Tabelle "Tonträger" angelegt. wenn man das mehrfach macht gibt es die entsprechende Anzahl an Datensätzen.

Bis ich das kapiert hatte hat es schon ein bisschen gedauert.

Das kann ich natürlich unterbinden indem ich auf die Felder "LP-NR" und (Tonträger)"ID" einen eindeutigen Schlüssel anlege, das werde ich dann gleich mal tun

Wenn man also aufpasst funktioniert es bei der Neuanlage, aber bei späteren Ansichten/Änderungen war's das. :oops:

Gruß

Chr_Alt

RobertG
Beiträge: 2732
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Fehlermeldung bei Unterformular

Beitrag von RobertG » Do 27. Jan 2022, 16:50

Hallo Chr_Alt,

wenn andere Unterformulare funktionieren, dann hat es nichts mit der Parameter-Weitergabe zu tun. Das, was vom Hauptformular an das Unterformular weitergegeben werden soll, muss auf jeden Fall eindeutig sein. Sonst könnte es ja passieren, dass zu einem Hauptformular Einträge im Unterformular existieren, die damit gar nichts zu tun haben. Oder gibt es da Elemente im Unterformular, die grundsätzlich zu mehreren Elementen des Hauptformulars passen sollen?

Vielleicht postest Du einfach hier einmal Deine Base-Datei. Hätte ja keine Daten, nur die Struktur. Alternativ kannst Du mir die Datei auch per privater Mail zuschicken, damit ich sehe, wie die Formulare miteinander verbunden sind.

Zusätzlich wäre ein Screenshot von Extras → Beziehungen sinnvoll.

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

Benutzeravatar
Chr_Alt
Beiträge: 16
Registriert: Di 25. Jan 2022, 11:14

Re: Fehlermeldung bei Unterformular

Beitrag von Chr_Alt » Do 27. Jan 2022, 17:35

Hallo Robert,

schon mal vielen Dank! Ich schicke die Dateien jetzt mal mit, ich habe da keine Geheimnisse und vielleicht kann sich ja jemand anderes da was abgucken. Die Datenbank, bzw. deren Inhalt kann auch auf meiner Internetseite abgerufen werden.

Ich habe auch mal einen Abzug des Formulars gemacht, die drei ersten Formulare der DB haben dieselbe Basis aber unterschiedliche Aufgaben:

Musik: anschauen und ändern (dazu gehört auf das Ergänzen von Tonträgern bei existierenden Alben)
Musik - Bearbeitung Mehrfachalben: wie vor, aber nur für Mehrfachalben (wird kaum noch benötigt, aber wenn man es löscht braucht man es danach. Ist halt Murphys Gesetzt)
neues Album erfassen: wie der Name schon sagt

Das Formular
Formular.png
Formular.png (71.12 KiB) 1893 mal betrachtet
Die Datenbankstruktur:
Struktur_Musik-DB.png
Struktur_Musik-DB.png (80.3 KiB) 1893 mal betrachtet

In der Struktur gibt es noch eine Tabelle "Titel_org", diese habe ich angelegt um große Änderungen zu testen. Noch nicht gelöscht weil siehe oben. :)


Die DB-Datei musste ich packen da *.odb nicht als gültiger Datentyp zulässig ist - für ein LO-Forum schon merkwürdig. :o

Gruß

Chr_Alt
Dateianhänge
Musik.zip
(61.33 KiB) 88-mal heruntergeladen

RobertG
Beiträge: 2732
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Fehlermeldung bei Unterformular

Beitrag von RobertG » Do 27. Jan 2022, 20:21

Hallo Chr_Alt,

ich bin davon ausgegangen, dass sich Formulare auch ohne Datenbankverbindung zum Bearbeiten öffnen lassen. Leider sucht Base aber die Verbindung zur MySQL-Datenbank. So komme ich an das Formular nicht richtig ran.

Was mich bei der Übersicht der Tabellen wundert ist, dass die Ausnahme bei Dir eher die Regel ist: Nur zwei der Tabellen haben lediglich einen Primärschlüssel.

Und was ich nur bestätigen kann: Die Sache mit der Parameterweitergabe ist es auf keinen Fall. Der Eintrag ist nicht vorhanden.

Jetzt bräuchte ich also die Tabellenstruktur auf dem MySQL_Server. Dann könnte ich die Struktur hierhin übertragen und anschließend das Ganze weiter testen.

… und dass keine *.odb-Dateien hier angehängt werden können liegt einfach daran, dass der Anbieter sonst mit LibreOffice nichts zu tun hat.

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

Benutzeravatar
Chr_Alt
Beiträge: 16
Registriert: Di 25. Jan 2022, 11:14

Re: Fehlermeldung bei Unterformular

Beitrag von Chr_Alt » Fr 28. Jan 2022, 09:38

Hallo Robert,

ich habe die Struktur in eine neue DB kopiert - siehe Anhang - einschließlich Schreibfehler. :shock:


Ich hoffe das das richtig funktioniert hat.

Gruß

Chr_Alt

PS.: auch hier das "Problem" mit dem Dateityp, deshalb gepackt.
Dateianhänge
Musik_Strok.zip
(3.71 KiB) 85-mal heruntergeladen

RobertG
Beiträge: 2732
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Fehlermeldung bei Unterformular

Beitrag von RobertG » Fr 28. Jan 2022, 15:11

Hallo Chr_Alt,

die Verknüpfung in den Formularen gibt keinen Fehler her. Aber allein die Tabellen lassen einige Fragen offen:
Tabelle "Tonträger": Das Feld "ID" ist ein Auto-Increment-Feld. Das ist so also bereits einzigartig. Der zweite Primärschlüssel dort ist überflüssig.
Tabelle "Musik": Das Feld "ID" ist ein Auto-Increment-Feld. Hier sind sogar zwei zusätzliche Felder im Primärschlüssel. Das ist ebenso überflüssig.
Die Tabelle "Tonträger" hat eine frühere Tabelle "Tontraeger" mit gleichen Feldern dort liegen. Nur das Feld "LP_Nr" ist in der "Tontraeger"-Tabelle int(10) statt int(5). Macht mich misstrauisch, wenn ich höre, dass dazu Fehlermeldungen kommen.

Es scheint noch eine 2. Datenbank "Filme" zu geben, die Du gleichzeitig bedienst. Die Formulare öffnen so nur mit Fehlern.

Makros hast Du nicht in der Datenbankdatei selbst gespeichert. Was die machen sollen bleibt mir so verborgen. Anscheinend sind die nur mit den Buttons verbunden.

Im Moment erzeugst Du durch die Kombination von Primärschlüsseln die Möglichkeit, dass "Tonträger" zu unterschiedlichen Datensätzen von "Musik" gehören können. Schließlich bedeutet ein Auto-Increment-Feld noch nicht, dass der Inhalt nicht irgendwann auch doppelt vorkommen darf. Du kannst ja bewusst eine Zahl eingeben. Der Increment-Wert wird nur bei NULL gesetzt. Und da Du den Primärschlüssel in MUSIK aus 3 Feldern bildest Kann das so alle möglichen Kombinationen geben.

Ich würde erst einmal die Tabellen etwas "entrümpeln". Primärschlüssel müssen eindeutig sein. Wenn ein Feld zur Eindeutigkeit reicht, dann lass das bei einem Feld. Zwei Primärschlüssel hast Du in der Regel erst dann, wenn die Beziehung zwischen zwei Tabelle eine n:m-Beziehung sein soll. Dann wird da eine Tabelle für die entsprechende Beziehung zwischengeschaltet.

Ergänzung: Ich habe die Eingabe in dem ersten Formular "Musik" einmal versucht. In dem Formular sind die Pflichtfelder unklar. Dadurch komme ich immer wieder zum selben Fehler, dass eben Interpreten in der Tabelle "INTERPRETEN_GRUPPE" fehlen. Ist von den Beziehungen her logisch, vom Formularaufbau her aber merkwürdig. Das, was ich dafür im Formular vorfinde ist ein Textfeld, kein Listenfeld. Ich muss also zuerst die Tabelle "INTERPRETEN_GRUPPE" mit Daten befüllen, dann diese Tabelle geöffnet haben um anschließend genau den entsprechenden Text in das Formular einzubauen.

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

Benutzeravatar
Chr_Alt
Beiträge: 16
Registriert: Di 25. Jan 2022, 11:14

Re: Fehlermeldung bei Unterformular

Beitrag von Chr_Alt » Sa 29. Jan 2022, 15:33

Hallo Robert,
Die Tabelle "Tonträger" hat eine frühere Tabelle "Tontraeger" mit gleichen Feldern dort liegen. Nur das Feld "LP_Nr" ist in der "Tontraeger"-Tabelle int(10) statt int(5). Macht mich misstrauisch, wenn ich höre, dass dazu Fehlermeldungen kommen.
Die Tabelle "Tonträger" ist die Ursprungstabelle, ich habe sie in die Tabelle Tontraeger kopiert um zu prüfen ob der Umlaut "ä" für die Fehler verantwortlich ist - ist er aber offensichtlich nicht. Die Tabelle fliegt also irgendwann wieder heraus.

Tabelle "Tonträger": Das Feld "ID" ist ein Auto-Increment-Feld. Das ist so also bereits einzigartig. Der zweite Primärschlüssel dort ist überflüssig.
Tabelle "Musik": Das Feld "ID" ist ein Auto-Increment-Feld. Hier sind sogar zwei zusätzliche Felder im Primärschlüssel. Das ist ebenso überflüssig.
Ich hatte mir von den zusätzlichen Indexen schnellere Zugriffszeiten versprochen. Außerdem dachte ich das sie nicht schaden können, bei den anderen Unterformularen funktioniert ja auch alles (die Tabelle "Titel" hat ja sogar mehrere Indexe):
Indizes
PRIMARY LP-NR, ST-NR, TITEL
INDEX LP-NR, ST-NR
INDEX LP-NR
INDEX ST-NR
INDEX LP-NR, ST-NR, BONUS, DVD_nur
INDEX TITEL
Es gibt - natürlich - nur kein Auto-Increment-Feld da mir das zählen der Titel nicht sonderlich sinnvoll erscheint. Ist das der entscheidende Unterschied?

Es scheint noch eine 2. Datenbank "Filme" zu geben, die Du gleichzeitig bedienst. Die Formulare öffnen so nur mit Fehlern
Ja es gibt eine DB "Filme" auf demselben Server, aber getrennt von der Musik-DB - siehe Musik_Strok.
Wie/warum diese nun in Libreoffice der Musik-DB zugeordnet wird, ist mir völlig schleierhaft. Das hat aber bisher die Funktionen der Musik-DB nicht gestört.

Im Moment erzeugst Du durch die Kombination von Primärschlüsseln die Möglichkeit, dass "Tonträger" zu unterschiedlichen Datensätzen von "Musik" gehören können.
Das darf natürlich nicht sein, es darf zu jedem Datensatz in "Musik" unbegrenzt viele Datensätze in "Tonträger" geben, aber natürlich immer zu einem Datensatz in "Tonträger" einen passenden in "Musik" geben

Schließlich bedeutet ein Auto-Increment-Feld noch nicht, dass der Inhalt nicht irgendwann auch doppelt vorkommen darf. Du kannst ja bewusst eine Zahl eingeben. Der Increment-Wert wird nur bei NULL gesetzt. Und da Du den Primärschlüssel in MUSIK aus 3 Feldern bildest Kann das so alle möglichen Kombinationen geben.
Das heißt wenn ich den INDEX "LP-NR" lösche passiert das nicht mehr?
Indizes
PRIMARY ID, LP-NR
INDEX LP-NR
Makros hast Du nicht in der Datenbankdatei selbst gespeichert. Was die machen sollen bleibt mir so verborgen. Anscheinend sind die nur mit den Buttons verbunden.
Es gibt auch keine Makros, nur die beiden Schaltflächen sollen eigentlich das tun was drauf steht. Diese Makros/Funktionen sind auch irgendwann abhanden gekommen, das . will ich lösen wenn das Problem mit dem Unterformular gelöst ist. Eins nach dem Anderen und immer schön nach Wichtigkeit.

Ergänzung: Ich habe die Eingabe in dem ersten Formular "Musik" einmal versucht. In dem Formular ...
Das ist von mir gewollt, so werde ich gezwungen ggf zusätzliche Infos oder Internetadressen des jeweiligen Interpreten einzupflegen. Die in der Tabelle "Interpreten_Gruppen" hinterlegten URLs werden auf meiner Internetseite dann mit ausgegeben so das man direkt zu selbigem weitergehen kann.
... dann diese Tabelle geöffnet haben um anschließend genau den entsprechenden Text in das Formular einzubauen.
Die Tabelle muß nicht geöffnet sein, der Interpret muß aber in der Tabelle gespeichert sein. Beim eintippen des Interpreten wird dann der passende Vorschlag angezeigt sobald man genügend Zeichen eingegeben hat.



Gruß

Chralt

RobertG
Beiträge: 2732
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Fehlermeldung bei Unterformular

Beitrag von RobertG » Sa 29. Jan 2022, 16:04

Hallo Chralt,

nur kurz 2 Anmerkungen:

Gegen zusätzliche Indexe ist nichts einzuwenden. Wenn die Datenbank riesig ist (mehrere zehntausend Datensätze) dann macht das Sinn. Es geht aber um die Primärschlüssel. In der Tonträger-Tabelle sollte der Primärschlüssel allein "ID" sein. "LP-Nr" kann ruhig einen Index haben. In der Tabelle "MUSIK" ist dann "LP-NR" der Primärschlüssel. alle anderen Felder dürfen ohne weiteres einen Index haben, sollten aber nicht als Primärschlüssel auftauchen. In dem, was Du da zeigst, steht "PRIMARY" für diesen Primärschlüssel.
Diese Tabellen hast Du offensichtlich nicht mit Base sondern mit einem anderen Tools erstellt. In Base kommen die meisten Leute gar nicht dahinter, dass es auch mehrere Primärschlüssel für eine Tabelle geben kann.

Dass irgendwo im Hintergrund die Datenbank "Filme" auftaucht, wenn ich z.B. das Formular "Musik" öffne macht mich wieder misstrauisch. Ich werde mir das Formular daraufhin noch einmal anschauen. Irgendwo muss schließlich die Datenbank bei der Öffnung des Formulars erfolglos abgerufen werden …

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 nutzen:


Bitte beteiligen Sie sich mit 7 Euro pro Monat und helfen uns bei unserem Budget für das Jahr 2024.
Einfach per Kreditkarte oder PayPal.
Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet.

❤️ Vielen lieben Dank für Ihre Unterstützung ❤️

Antworten