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

Laufzeitfehler mit MYSQL

Alles zur Programmierung im LibreOffice.
Antworten
ulihueck
Beiträge: 9
Registriert: Sa 11. Jun 2011, 10:30

Laufzeitfehler mit MYSQL

Beitrag von ulihueck » So 1. Jan 2023, 21:12

Hallo und noch ein gutes und gesundes neues Jahr.
Beim Absetzen eines SQL-Befehls bekomme ich neuerdings einen Laufzeitfehler (siehe Anhang).
Leider finde ich in der Dokumentation und bei Google keine Antwort oder Erklärung.
Hat jemand eine Idee, warum der Fehler verursacht wird?
Setze ich den SQL-Befehl im SQL-Editor ab, gibt es keine Fehlermeldung.
Schon jetzt danke für Eure Hilfe.
Viele Grüße,
Uli
Dateianhänge
Basic-Laufzeitfehler.png
Basic-Laufzeitfehler.png (10.88 KiB) 857 mal betrachtet

mikele
Beiträge: 1642
Registriert: Mo 1. Aug 2011, 20:51

Re: Laufzeitfehler mit MYSQL

Beitrag von mikele » So 1. Jan 2023, 21:50

Hallo,
da wäre es gut den Sql-Befehl zu kennen und seine Umsetzung in Basic.
Gruß,
mikele

ulihueck
Beiträge: 9
Registriert: Sa 11. Jun 2011, 10:30

Re: Laufzeitfehler mit MYSQL

Beitrag von ulihueck » Mo 2. Jan 2023, 09:44

Hallo Mikele.
Stimmt, habe ich vergessen. Die SQL-Anweisung lautet

Code: Alles auswählen

EvalSQL="SELECT SUM( "Einnahmen"."Betrag" ) "Betrag", "Einnahmen"."Objekt_ID", "Mieter"."Mieter_ID", COUNT( "Einnahmen"."Objekt_ID" ) "Anzahl_Buchungen" ,"Mieter"."Name" FROM "Mieter" "Mieter", "Einnahmen" "Einnahmen" WHERE "Mieter"."Mieter_ID" = "Einnahmen"."Zahlender" AND "Einnahmen"."Datum" > {d '2022-01-01' } AND "Einnahmen"."Datum" < {d '2022-12-31' } AND "Einnahmen"."Kategorie" = 'Nebenkosten' GROUP BY "Einnahmen"."Objekt_ID", "Mieter"."Mieter_ID", "Mieter"."Name" ORDER BY "Einnahmen"."Objekt_ID" ASC"
und wird mit

Code: Alles auswählen

oResultSet   = oQuery.executeQuery(EvalSql)
ausgeführt.
Dann gibt es die Fehlermeldung.

mikele
Beiträge: 1642
Registriert: Mo 1. Aug 2011, 20:51

Re: Laufzeitfehler mit MYSQL

Beitrag von mikele » Mo 2. Jan 2023, 11:09

Hallo,
die inneren Anführungsstriche des SQL-Strings müssen maskiert werden:

Code: Alles auswählen

EvalSQL="SELECT SUM( ""Einnahmen"".""Betrag"" ) ""Betrag"", ""Einnahmen"".""Objekt_ID"", ""Mieter"".""Mieter_ID"", COUNT( ""Einnahmen"".""Objekt_ID"" ) ""Anzahl_Buchungen"" ,""Mieter"".""Name"" FROM ""Mieter"" ""Mieter"", ""Einnahmen"" ""Einnahmen"" WHERE ""Mieter"".""Mieter_ID"" = ""Einnahmen"".""Zahlender"" AND ""Einnahmen"".""Datum"" > {d '2022-01-01' } AND ""Einnahmen"".""Datum"" < {d '2022-12-31' } AND ""Einnahmen"".""Kategorie"" = 'Nebenkosten' GROUP BY ""Einnahmen"".""Objekt_ID"", ""Mieter"".""Mieter_ID"", ""Mieter"".""Name"" ORDER BY ""Einnahmen"".""Objekt_ID"" ASC"
Gruß,
mikele

ulihueck
Beiträge: 9
Registriert: Sa 11. Jun 2011, 10:30

Re: Laufzeitfehler mit MYSQL

Beitrag von ulihueck » Mo 2. Jan 2023, 16:31

Hallo und danke für Deine Antwort.
Ja, das ist es im Programmcode auch. Der Beobachter lieferte mir leider die SQL-Anweisung ohne doppelte Anführungszeichen.

mikele
Beiträge: 1642
Registriert: Mo 1. Aug 2011, 20:51

Re: Laufzeitfehler mit MYSQL

Beitrag von mikele » Mo 2. Jan 2023, 17:52

Hallo,
ich bin etwas verwundert über diesen Teil:

Code: Alles auswählen

""Einnahmen"".""Datum"" > {d '2022-01-01' } AND ""Einnahmen"".""Datum"" < {d '2022-12-31' } 
Kannst du mir die geschweiften Klammern erläutern?
Gruß,
mikele

ulihueck
Beiträge: 9
Registriert: Sa 11. Jun 2011, 10:30

Re: Laufzeitfehler mit MYSQL

Beitrag von ulihueck » Mo 2. Jan 2023, 19:12

Die geschweiften Klammern sind historisch bedingt.
Ich habe die Datenbank letztes Jahr von HSQLDB nach MYSQL portiert. Sie stören nicht. Ich kann den SQL-Befehl im Abfrage-Editor absetzen, ohne eine Fehlermeldung.
Die Klammern werden auch gesetzt, wenn man von der Entwurf-Ansicht zur SQL-Ansicht wechselt.
Ich habe aber einmal die geschweiften Klammern durch normale ersetzt. Die Fehlermeldung bleibt.
Nun habe ich die Abfrage modifiziert und habe nur noch das Jahr als Kriterium.

Code: Alles auswählen

EvalSql="SELECT SUM(""Einnahmen"".""Betrag"" ) ""Betrag"", ""Einnahmen"".""Objekt_ID"", ""Mieter"".""Mieter_ID"", COUNT( ""Einnahmen"".""Objekt_ID"" ) ""Anzahl_Buchungen"" ,""Mieter"".""Name"" FROM ""Mieter"" ""Mieter"", ""Einnahmen"" ""Einnahmen"" WHERE ""Mieter"".""Mieter_ID"" = ""Einnahmen"".""Zahlender"" AND EXTRACT( YEAR FROM `Datum`) = 2021 AND ""Einnahmen"".""Kategorie"" = 'Nebenkosten' GROUP BY ""Einnahmen"".""Objekt_ID"", ""Mieter"".""Mieter_ID"", ""Mieter"".""Name"" ORDER BY ""Einnahmen"".""Objekt_ID"" ASC"
Der Fehler ist noch der gleiche.

mikele
Beiträge: 1642
Registriert: Mo 1. Aug 2011, 20:51

Re: Laufzeitfehler mit MYSQL

Beitrag von mikele » Di 3. Jan 2023, 20:34

Hallo,
funktioniert eine einfachere SQL-Abfrage? Ich würde schrittweise testen, um die Ursache des Fehlers einzugrenzen.
Gruß,
mikele

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