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

Abfrage mit Parametereingabe funktioniert mit MySql-Datenbank nicht

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
Antworten
schneiderherbie
Beiträge: 3
Registriert: Do 18. Feb 2021, 09:35

Abfrage mit Parametereingabe funktioniert mit MySql-Datenbank nicht

Beitrag von schneiderherbie » Do 18. Feb 2021, 09:56

Ich verwende Base als Frontend für meine MySql-Datenbank. Als Betriebssystem habe ich Ubuntu. Mit der Ubuntu-Aktualisierung auf die Version 20.04 funktionieren die Abfragen mit einer Parametereingabe nicht mehr. Es erscheint folgende Fehlermeldung:

Code: Alles auswählen

Fehlercode: 1064

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ':Beitragsjahr ORDER BY "jahr" ASC, "name" ASC, "vorname" ASC' at line 1
Als SQL-Statement wird ausgegeben:

Code: Alles auswählen

Das SQL-Kommando, welches zu diesem Fehler führte, ist:

SELECT "jahr", "name", "vorname", "alter", "beitrag", "zahlung", "differenz" FROM "mec"."v_beitrag_differenz" AS "v_beitrag_differenz" WHERE "jahr" = :Beitragsjahr ORDER BY "jahr" ASC, "name" ASC, "vorname" ASC
Mit der Ubuntu-Version funktionierten die Abfragen noch einwandfrei.
Vermutlich wurde
:Beitragsjahr
nicht durch den eingegeben Wert ersetzt. Mit diesem dargestellten SQL-Statement kann der MySql-Server nun wirklich nichts anfangen!
Als Folge dieses Fehlers funktionieren auch alle Formulare nicht mehr, die Unterformulare enthalten.
Gibt es eine Möglichkeit, diesen Fehler zu beheben?

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

Re: Abfrage mit Parametereingabe funktioniert mit MySql-Datenbank nicht

Beitrag von gogo » Do 18. Feb 2021, 15:16

Wenn der Treiber die Base-Syntax nicht (mehr) übersetzt, bleibt Dir nur einen anderen Treiber zu verwenden, der's kann. MySQL kann man verschieden anbinden.
Ansonsten musst Du irgendwie den Wert ":Beitragsjahr" für die Abfrage bereitstellen - also Parameterabfrage selbst programmieren (ist vermutlich das Einfachste), temporäre Variablen setzen oder mit einer Referenztabelle. Was da am praktischsten ist, musst Du da selbst rausfinden - kommt dann auf die Benutzbarkeit an.
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: 2732
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Abfrage mit Parametereingabe funktioniert mit MySql-Datenbank nicht

Beitrag von RobertG » Fr 19. Feb 2021, 08:00

Vielleicht die gleiche Ursache wie für die Unterformulare. Da hat sich in der Umstellung von LO 6.0 und 6.1 ein Fehler eingeschlichen, der Durch Editieren der context.xml behoben werden kann. Aus dem Handbuch:
Der nicht funktionierende Code:

Code: Alles auswählen

<db:driver-settings db:system-driver-settings="" db:base-dn=""
db:parameter-name-substitution="false"/>
Wird dieser Code geändert auf

Code: Alles auswählen

<db:driver-settings db:system-driver-settings="" db:base-dn=""/>
so funktionieren die Unterformulare wieder mit der *.odb-Datei.
Alternativ kann auch das folgende Makro von der migrierten Base-Datei aus gestartet werden:

Code: Alles auswählen

SUB FB_Parameter
DIM oSettings AS OBJECT
oSettings = ThisComponent.DataSource.Settings
oSettings.ParameterNameSubstitution = True
END SUB
Nach einmaligem Start des Makros ist der Eintrag in der Base-Datei komplett verschwunden, sofern die Base-Datei einmal abgespeichert wurde.
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

schneiderherbie
Beiträge: 3
Registriert: Do 18. Feb 2021, 09:35

Re: Abfrage mit Parametereingabe funktioniert mit MySql-Datenbank nicht

Beitrag von schneiderherbie » Fr 19. Feb 2021, 09:25

Hallo Robert, danke für den Hinweis. Kannst Du mir bitte noch mitteilen, wo ich die "context.xml" finde. Kann man in dieser auch "false" durch "true" ersetzen?

schneiderherbie
Beiträge: 3
Registriert: Do 18. Feb 2021, 09:35

Re: Abfrage mit Parametereingabe funktioniert mit MySql-Datenbank nicht

Beitrag von schneiderherbie » Fr 19. Feb 2021, 09:43

Ich hab die Datei gefunden. Es handelt sich um die
content.xml
die sich in der Base-Datei befindet.
Ich habe die Base-Datei mit der Archiv-Verwaltung geöffnet, die content.xml extrahiert. Anschließend habe ich mit einem Editor nach
"parameter-name-substitution" gesucht und hier "false" durch "true" ersetzt
Die geänderte Datei habe ich anschließend in das noch geöffnete Archiv übertragen. Nun funktionieren die Abfragen mit Parameter-Abfrage.
Vielen Dank für die Unterstützung.

Wanderer
Beiträge: 895
Registriert: Di 11. Feb 2014, 20:03
Wohnort: Berlin

Re: Abfrage mit Parametereingabe funktioniert mit MySql-Datenbank nicht

Beitrag von Wanderer » Fr 19. Feb 2021, 09:44

Die .odb-Dateien sind spezielle .zip-Archive in denen xml-Dateien und anderes stecken.

Wenn Du die Datei (bitte backup vorher erstellen) auf .zip umbenennst kann man den Inhalt wie einen Ordner betreten und findet darin auch die content.xml

Mfg, Jörn

PS: Gilt analog auch für die anderen Dateitypen von Open-Office.
LO 6.0.7 (32Bit) Win8.1 Pro 32 Bit/ LO 6.3.2 Win10 64Bit / LO 6.0.7 Win7 Pro 64 Bit

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