Probleme mit DB-Update aus Makro nach Konvertierung in eine MySQL-DB

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
gogo
Beiträge: 839
Registriert: Sa 5. Feb 2011, 19:07

Re: Probleme mit DB-Update aus Makro nach Konvertierung in eine MySQL-DB

Beitrag von gogo » Fr 5. Jul 2019, 17:02

Ad Bild#1:
in Deinem SQL-String ist die "ID" NULL (da nicht definiert - oder gibt's irgendwo eine globale Variable die ID heißt?) Durch die Konstruktion

Code: Alles auswählen

" = '" + ID + "' "
lautet Deine Where-Klausel:

Code: Alles auswählen

Where "ID" = ''
... da Du vermutlich nirgendwo eine leere ID hast ('') wird auch kein Datensatz aktualisiert, und es kommt auch keine Fehlermeldung.
Schreib mal ganz oben im Basic-Code (also an den Dateianfang) "Option Explicit" - dann kannst Du nur definierte Variablen verwenden und so etwas wie ID=NULL gibt's nicht. Ein msgbox(sqlStr) würde Dir das Statement anzeigen und Du könntest solche Fehler leichter erkennen. Mit einer print-Anweisung kannst Du dann auch gleich den Code unterbrechen...

Das Escapen von Zahlen mittels Hochkomma kann von Treiber(version) zu Treiber(version) unterschiedliche Effekte haben - prinzipiell habe ich mit MySQL nie ein String<>Integer Problem gehabt wenn der Integer in Hochkommas steht oder nicht, und das sollte bei Dir auch nicht der Fall sein.
Es ist also relativ egal ob Du Selmon = 2 oder Selmon = '2' schreibst.

Den letzten Fehler kann ich nicht nachvollziehen...

Mit

Code: Alles auswählen

was macht denn Dein Code, wenn Du den entsprechenden Teil (aus der Messagebox) kopierst und über Extras > SQL laufen lässt?
ist gemeint, dass Du das SQL-Statement in einem Base-Dialog zum direkten Ausführen von SQL-Statements eintippst. Diesen Base-Dialog erreichst Du wenn Du im Hauptfenster von Base (nicht BASIC!) im Menü "Extras" auf "SQL..." klickst...
g
2008 LucidL./MaverickM./WinXP LibreOffice 3.3.2 > 02/13 LinuxMint13/Xubuntu > 09/13 Debian Wheezy+LO3.5.4.2 > 01/15 Debian Jessie KDE+LO4.3.3.2/Mint17 openbox auf USB+LO4.2.8.2 > 03/16 ArchLin & LO5.1+ff > 02/18 Kubuntu

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

Re: Probleme mit DB-Update aus Makro nach Konvertierung in eine MySQL-DB

Beitrag von RobertG » Fr 5. Jul 2019, 17:35

Ich habe das Ganze jetzt auch noch mit dem JDBC-Treiber 8.0.16 von MySQL-Versucht. Da musste ich erst einmal bei der Timezone Einstellungen machen, die das vielleicht auch beeinflussen.

Auch dort verhält sich alles so wie mit den anderen JDBC-Verbindungen: Ohne Maskierung und mit einer `-Maskierung funktioniert das Makro. Mit einber Maskierung über doppelten Anführungszeichen kommt die Fehlermeldung.

Das Verhalten innerhalb der Makros und unter Extras > SQL ist bei mir hier übrigens identisch. Auch unter Extras > SQL funktioniert die Maskierung mit doppelten Anführungszeichen nicht, die beiden anderen Varianten sehr wohl.

Wo stammt der JDBC-Treiber her und wie ist er eingebunden. Das ist hier wohl entscheidend.

Übrigens: Auch bei Abfragen (in der Abfrage-GUI, nicht als Makro getestet) funktioniert hier nur der Code mit der Maskierung ` oder ohne Maskierung einwandfrei. Schreibe ich den Code mit einer Maskierung mit doppelten Anführungszeichen, so kann ich nicht mehr auf die direkte SQL-Ausführung gehen. Da wird dann ein Fehler in der Abfrage, genauer bei der Tabellendefinition gemeldet. Fasse ich bei direktem SQL die Feldbezeichnungen in doppelte Anführungszeichen, so wird das noch abenteuerlicher: Die Feldbezeichnung erscheint auch als Inhalt der Felder.

Wenn Du die LO-Versionen von LibreOffice, nicht von Deiner Distribution, nutzt, dann kann der Fehler nur noch in der JDBC-Verbindung liegen. Schau einmal unter Bearbeiten > Datenbank nach, was da an Einstellungen zutage tritt. Meines Wissens ist da allerdings nichts, was dieses Vorgehen beeinflusst.

Gruß

Robert

jh56
Beiträge: 16
Registriert: Fr 16. Mär 2018, 11:17

Re: Probleme mit DB-Update aus Makro nach Konvertierung in eine MySQL-DB

Beitrag von jh56 » Mo 8. Jul 2019, 10:48

Hallo Robert,

Die Timezone ist es nicht. Es ist viel verrückter: Ich setze die Datenmanipulation in eine Bibliothek außerhalb meiner Libre-DB und der SQL-Update läuft ohne jegliche Anführungszeichen und Hochkommas, auch wenn ich die Funktion dann aus meiner DB heraus aufrufe. Innerhalb der DB läuft nichts. :lol:
Für mich ist da irgendwo was nicht sauber innerhalb von Libre.
Eventuell liegt es daran, dass ich im MySQL-Server zwei identisch aufgebaute Datenbanken habe (Sandbox und spätere Produktive DB).

Der Libresupport ist mit den Informationen betraut.

Gruß Jürgen

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

Re: Probleme mit DB-Update aus Makro nach Konvertierung in eine MySQL-DB

Beitrag von RobertG » Mo 8. Jul 2019, 12:11

Hallo Jürgen,

noch einmal: Woher stammt die Libreoffice-Version: Von Deiner Distribution oder von Libreoffice direkt.
jh56 hat geschrieben:
Mo 8. Jul 2019, 10:48
Eventuell liegt es daran, dass ich im MySQL-Server zwei identisch aufgebaute Datenbanken habe (Sandbox und spätere Produktive DB).
Die haben doch wohl unterschiedliche Namen, oder?
jh56 hat geschrieben:
Mo 8. Jul 2019, 10:48
Der Libresupport ist mit den Informationen betraut.
Welchen "Libresupport" meinst Du?

Gruß

Robert

jh56
Beiträge: 16
Registriert: Fr 16. Mär 2018, 11:17

Re: Probleme mit DB-Update aus Makro nach Konvertierung in eine MySQL-DB

Beitrag von jh56 » Mo 8. Jul 2019, 16:21

Hallo Robert,
1ich hole meine Libreversionen von der offiziellen Seite: https://de.libreoffice.org/

Wenn Du auf der Seite nach professioneller Hilfe schaust, findest Du für Deutschland eine Münchener Adresse.

meine Versionen:
Version: 6.1.5.2
Build-ID: 90f8dcf33c87b3705e78202e3df5142b201bd805
CPU-Threads: 4; BS: Linux 4.15; UI-Render: Standard; VCL: gtk2;
Gebietsschema: de-DE (de_DE.UTF-8); Calc: group threaded

und
Version: 6.2.4.2
Build-ID: 2412653d852ce75f65fbfa83fb7e7b669a126d64
CPU-Threads: 4; BS: Linux 4.15; UI-Render: Standard; VCL: gtk3;
Gebietsschema: de-DE (de_DE.UTF-8); UI-Sprache: de-DE
Calc: threaded

DBProduktversion 5.7.26-Ubuntu0.18.04.1
Treiber: MySQL Connector/J
Version mysql-connector-java-8.0.15 (Revision: 79a4336f140499bd22dd07f02b708e163844e3d5)

Gruß Jürgen

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

Re: Probleme mit DB-Update aus Makro nach Konvertierung in eine MySQL-DB

Beitrag von RobertG » Mo 8. Jul 2019, 17:51

Hallo Jürgen,

ich will Dir nicht die Hoffnung nehmen, dass Du da fündig werden kannst. Ich kenne allerdings nur wenige Entwickler, die etwas mit Datenbanken zu tun haben. Deswegen schleppen wir auch Bugs über mehrere Jahre bei LO in diesem Bereich mit, bei denen sich nichts tut.

Das, was bei den Bugbeschreibungen als erstes kommt: Lässt sich das Verhalten Deiner Konstruktion irgendwo nachvollziehen. Und schon da wird es Probleme geben. Das Normalverhalten von Base zusammen mit MySQL und MariaDB habe ich Dir beschrieben. Etwas anderes kann ich auf meinem System nicht nachstellen. Ich müsste jetzt auf einem anderen Rechner mit Ubuntu versuchen, genau das aufzubauen, was bei Dir läuft.

Deswegen kommt als nächste Anweisung: Hast Du schon einmal versucht, das Benutzerverzeichnis von LO zurückzusetzen (Umbenennnen von /.config/libreoffice/4) Dann werden die Benutzereinstellungen neu erstellt.

Was für mich schon einmal wichtig ist: Du arbeitest mit den Originalversion von LibreOffice, so dass der Fehler nicht durch eine Ubuntu-spezifische Version verursacht wird. Dort wird nämlich so paketiert, dass Base standardmäßig nur recht beschnitten läuft.

Gruß

Robert

jh56
Beiträge: 16
Registriert: Fr 16. Mär 2018, 11:17

Re: Probleme mit DB-Update aus Makro nach Konvertierung in eine MySQL-DB

Beitrag von jh56 » Di 9. Jul 2019, 10:45

Hallo Robert, ohne spezifische Fehlerbeschreibung kann so etwas nicht behoben werden.
Da habe ich mein Bestes getan.
Mal sehen, ob die Entwickler ran gehen. davon hängt dann mein nächster Beitrag für eine neue Version ab.
Das wahrscheinlichste ist aber, dass die Entwickler schlich nicht mit mehreren ähnlich aufgebauten Datenbanken gerechnet haben.
Durch meine Umgehung, in dem Ich im SQL der DB-unabhängigen Makrobibliothek die DB auch explizite ansprechen kann, gibt mir ja die Möglichkeit, Funktionen zum Update, und Lesen jeder beliebigen DB-Tabelle zu nutzen (die laufen schon).
Das Problem ist also noch nicht gelöst, kann aber umsteuert werden.

Lassen wir hier also die Diskussion zum Thema gut sein.

Wenn ich eine Nachricht/ Lösung von den Professionals habe, poste ich dies.

Gruß Jürgen

gogo
Beiträge: 839
Registriert: Sa 5. Feb 2011, 19:07

Re: Probleme mit DB-Update aus Makro nach Konvertierung in eine MySQL-DB

Beitrag von gogo » Mi 10. Jul 2019, 09:00

letzter Versuch:
kannst Du direkt vor "SQL_Anweisung.execute(sqlStr)" ein "msgbox(sqlStr)" reinschreiben und einen Screenshot von der Message posten?

Code: Alles auswählen

...
msgbox(sqlStr)
SQL_Anweisung.execute(sqlStr)
g
2008 LucidL./MaverickM./WinXP LibreOffice 3.3.2 > 02/13 LinuxMint13/Xubuntu > 09/13 Debian Wheezy+LO3.5.4.2 > 01/15 Debian Jessie KDE+LO4.3.3.2/Mint17 openbox auf USB+LO4.2.8.2 > 03/16 ArchLin & LO5.1+ff > 02/18 Kubuntu

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

Re: Probleme mit DB-Update aus Makro nach Konvertierung in eine MySQL-DB

Beitrag von RobertG » Fr 12. Jul 2019, 20:14

So, ich habe jetzt auch auf einem älteren Rechner das Originalsystem aus diesem Posting halbwegs nachgestellt:
Ubuntu 18.04.2 LTS (passt zwar nicht genau - müsste aber doch ähnlich sein)
LO 6.2.5.2 aus den Quellen von LO direkt
... alles 64bit.
MySQL aus den Ubuntu-Quellen
mysql-connector-java-8.0.16.jar direkt von MySQL

Das Verhalten ist bei mir exakt genau so wie unter OpenSUSE mit der MariaDB. Das Update über Makro funktioniert mit `. Ebenso die Abfragen.
Das Update funktioniert nicht mit einer "-Maskierung → Fehlermeldung direkt von MySQL, dass ich mir doch einmal die Syntax genau ansehen soll.
Die Abfragen funktionieren mit einer "-Maskierung nur im GUI-Modus, nicht wenn ich auf direktes SQL umschalte. Ebenfalls eine Errormeldung.

Ein fehlerhaftes Verhalten von LO kann ich hier nicht feststellen und einen Bug, sofern er aufgegeben würde, könnte ich auch nicht bestätigen.

Da ich die Leute für die professionelle Hilfe über die Mailinglisten, die Community und die Qualitätsanalyse kenne gehe ich davon aus, dass die nichts anderes feststellen können und damit auch nicht weiter reagieren.

Gruß

Robert

Antworten