Seite 1 von 1

Laufzeitfehler mit MYSQL

Verfasst: So 1. Jan 2023, 21:12
von ulihueck
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

Re: Laufzeitfehler mit MYSQL

Verfasst: So 1. Jan 2023, 21:50
von mikele
Hallo,
da wäre es gut den Sql-Befehl zu kennen und seine Umsetzung in Basic.

Re: Laufzeitfehler mit MYSQL

Verfasst: Mo 2. Jan 2023, 09:44
von ulihueck
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.

Re: Laufzeitfehler mit MYSQL

Verfasst: Mo 2. Jan 2023, 11:09
von mikele
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"

Re: Laufzeitfehler mit MYSQL

Verfasst: Mo 2. Jan 2023, 16:31
von ulihueck
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.

Re: Laufzeitfehler mit MYSQL

Verfasst: Mo 2. Jan 2023, 17:52
von mikele
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?

Re: Laufzeitfehler mit MYSQL

Verfasst: Mo 2. Jan 2023, 19:12
von ulihueck
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.

Re: Laufzeitfehler mit MYSQL

Verfasst: Di 3. Jan 2023, 20:34
von mikele
Hallo,
funktioniert eine einfachere SQL-Abfrage? Ich würde schrittweise testen, um die Ursache des Fehlers einzugrenzen.