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