Bug im SQL-Generator

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

WSO
*****
Beiträge: 233
Registriert: Di, 22.04.2014 13:03

Bug im SQL-Generator

Beitrag von WSO »

Ich habe merkwürdige Effekte mit Abfrage, die mit der grafiscxhenOberlächer erstellt wurden und nicht mit der Option "SQL direkt ausführen" gespeichert wurden.
Beispiel:
So wir die Abfrage vom Formular gestartet, es hat sich ein "WHERE" eingeschlichen, dass zu Abbruch führt:

Code: Alles auswählen

SELECT "tAuftrag"."auf_id", "tKunde"."kud_id", "tLeistung"."lei_text", "tAuftrag"."auf_preis", "tAuftrag"."auf_dauerauftrag", "tAuftrag"."auf_von", "tAuftrag"."auf_bis", "tAuftrag"."auf_abgeschlossen", "tAuftrag"."auf_datum" FROM { OJ "tAuftrag" LEFT OUTER JOIN "tKunde" ON "tAuftrag"."auf_kud_id" = "tKunde"."kud_id" LEFT OUTER JOIN "tLeistung" ON "tAuftrag"."auf_lei_id" = "tLeistung"."lei_id" } WHERE   ORDER BY "tAuftrag"."auf_datum" ASC
Im Abfrageeditor sieht das noch so aus, ohne das "WHERE" und funktioniert:

Code: Alles auswählen

SELECT "tAuftrag"."auf_id", "tKunde"."kud_id", "tLeistung"."lei_text", "tAuftrag"."auf_preis", "tAuftrag"."auf_dauerauftrag", "tAuftrag"."auf_von", "tAuftrag"."auf_bis", "tAuftrag"."auf_abgeschlossen", "tAuftrag"."auf_datum" FROM { OJ "tAuftrag" LEFT OUTER JOIN "tKunde" ON "tAuftrag"."auf_kud_id" = "tKunde"."kud_id" LEFT OUTER JOIN "tLeistung" ON "tAuftrag"."auf_lei_id" = "tLeistung"."lei_id" } ORDER BY "tAuftrag"."auf_datum" ASC
Eine Where-Bedingung ist in der Grafischen Oberfläche nicht angegeben:
Abfrage.png
Abfrage.png (101.45 KiB) 3043 mal betrachtet
Lösung:
"SQL-Kommando direkt ausführen" anklicken und dann die ASbfrage erneut speichern, dann geht's.
RobertG
********
Beiträge: 2067
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Bug im SQL-Generator

Beitrag von RobertG »

Hallo WSO,

Du kannst gerne einen Bug melden. Dafür muss aber das von Dir geschilderte Verhalten mit einfachen Mitteln für andere reproduzierbar sein. Nur wenn bei einer Abfrage, bei der Du einmal eine Bedingung mit drin hattest und dann gelöscht hast, noch ein WHERE vorhanden ist, reicht dazu nicht. Erst wenn Du die Schritte dahin aufzeigen kannst, dann kann eine Bug-Meldung einen Sinn machen.

Die neueren LO-Versionen sind in der GUI sowieso etwas merkwürdig zu handhaben. Du musst z.B. das Feld, das Du gerade bearbeitet hast, auf jeden Fall vorher verlassen haben, damit es auch in einer Abfrage korrekt dargestellt wird. Sonst fehlen die zuletzt gemachten Änderungen.

Bugmeldungen geschehen dann hier: https://bugs.freedesktop.org/,
da es sich nach dem Screenshot zu urteilen um eine LO-Version ab 4.1 handelt.

Gruß

Robert
WSO
*****
Beiträge: 233
Registriert: Di, 22.04.2014 13:03

Re: Bug im SQL-Generator

Beitrag von WSO »

Hi Robert,
will wirklich keine Diskussion lostreten, was ein bug sein kann oder nicht.
Bekomme nur das Phantom "Where" nicht mehr raus und die Abfrage somit nicht zum laufen.
Was ist dein Rat?
Die verschachtelten Abfragen komplett löschen und neu aufbauen?

Gibt es eigentlich Restriktionen hinsichtlich der Ebenenanzahl, wenn ich Abfragen in Grafikmodus verschachtele?
Würde mir schon gerne den Aufwand für die Erfassung längerer SQL-Statements mit der grafischen Oberfläche reduzieren.
Gruß und gute Nacht,
Wolfram
acco
***
Beiträge: 52
Registriert: So, 04.05.2014 19:54

Re: Bug im SQL-Generator

Beitrag von acco »

Hallo Wolfram,

so wie das im Screenshot aussieht ist nach dem "where" ein Leerzeichen. Vielleicht ist im Formular, genauer im Formularfilter, ein Leerzeichen vorhanden (übriggeblieben). Normalerweise meckert dann Base beim abspeichern, aber es ist möglich. Beim Aufruf des Formulars kommt dann die Meldung "Fehler in SQL-Syntax". Vielleicht hilft Dir das?

Gruß

acco
openSUSE 13.1, LibreOffice 4.3.2.2
WSO
*****
Beiträge: 233
Registriert: Di, 22.04.2014 13:03

Re: Bug im SQL-Generator

Beitrag von WSO »

Guten Morgen acco,
danke für die Antwort.
Das Problem mit dem "WHERE" in der Abfrage habe ich lösen können:
Ich habe die Abfragen in allen Ebenen gelöscht und neu gemacht (mit der grafischen Oberfläche).
Danach erschien das "Where" nicht mehr, die Abfrage läuft.

Aber, neues Problem :
Wenn ich versuche, eine Where-Klausel auf ein mit IFNULL ... definiertes Feld zu legen will,
bringt die grafische Oberfläche beim Auflösen des generierten Statements einen Fehler.
In SQL-Editor (native) funktioniert das gleiche (wie erwartet) einwandfrei.
Habe das hier auf das Wesentliche reduziert:
https://www.dropbox.com/s/z9d7mcl9xhg61 ... roblem.odb

Versuche mal in der Abfrage "qry_balancenotzero" für das Feld "balance" eine Bedingung (< 0) einzutragen,
die Abfrage lässt sich nicht mehr ausführen.

Im native SQL gibt es kein Problem mit der um die Bedingung ergänzte Abfrage:
SQLnative.png
SQLnative.png (38.47 KiB) 3001 mal betrachtet
Habe mir erstmal damit geholfen Abfragen dieser Art native zu editieren, wird mit steigender Komplexität abr recht aufwendig :(

Ist die aktuelle Version der grafischen Editors nur mit Einschränkungen nutzbar,
oder habe ich wieder einen Anwendungfehler vor mir?

Danke für deine Mühe und sonnigen Gruss von den kanarischen Inseln,
Wolfram
acco
***
Beiträge: 52
Registriert: So, 04.05.2014 19:54

Re: Bug im SQL-Generator

Beitrag von acco »

Hallo Wolfram,
WSO hat geschrieben:Versuche mal in der Abfrage "qry_balancenotzero" für das Feld "balance" eine Bedingung (< 0) einzutragen,
Das würde ich gerne, aber in der DB sind nur 3 Tabellen, keine Abfrage.

Gruß

acco
openSUSE 13.1, LibreOffice 4.3.2.2
WSO
*****
Beiträge: 233
Registriert: Di, 22.04.2014 13:03

Re: Bug im SQL-Generator

Beitrag von WSO »

ups sorry, dann hier nochmal:
https://www.dropbox.com/s/tt6ln8pzllxb3 ... blem-2.odb
Gruss,
Wolfram
acco
***
Beiträge: 52
Registriert: So, 04.05.2014 19:54

Re: Bug im SQL-Generator

Beitrag von acco »

Hallo Wolfram,

das funktioniert in der GUI nicht, warum weiß ich nicht. Wenn Du die Abfrage aber mit "in SQL-Ansicht bearbeiten" öffnest und die Where-Klausel

Code: Alles auswählen

 where "balance" >0
da anhängst, funktioniert es.

Wie Du siehst, war ich so frei die Klausel auf >0 zu ändern.

Gruß

acco
openSUSE 13.1, LibreOffice 4.3.2.2
WSO
*****
Beiträge: 233
Registriert: Di, 22.04.2014 13:03

Re: Bug im SQL-Generator

Beitrag von WSO »

Ja danke,
so habe ich das Problem auch umgangen.
Dann hoffen wir mal, dass sich die GUI im nächsten Release vielleicht verbessert wird.
Gruss,
Wolfram
RobertG
********
Beiträge: 2067
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Bug im SQL-Generator

Beitrag von RobertG »

Hallo Wolfram, hallo acco,

vielleicht habe ich da etwas nicht richtig verstanden - aber bei mir ist das Ganze in der Abfrage direkt über die Filtereigenschaften möglich.

Gruß

Robert
acco
***
Beiträge: 52
Registriert: So, 04.05.2014 19:54

Re: Bug im SQL-Generator

Beitrag von acco »

Hallo Robert, hallo Wolfram,

ja, über den Standardfilter beim Aufruf der Abfrage funktioniert das auch bei mir.

Soweit ich Wolfram verstanden habe, geht es um die fest eingestellte Angabe des Kriteriums im GUI-Abfrage-Entwurf. Wenn ich da als Kriterium > 0 eingebe, läßt die Abfrage sich nicht ausführen: "Syntaxfehler in SQL-Ausdruck" kommt als Fehlermeldung.

Schalte ich die Design-Ansicht aus und bin im SQL-Fenster und gebe da ergänzend ein : .." where "balance" > 0" dann funktioniert es. Schalte ich die Design-Ansicht wieder aus, ist das Kriterium "> 0" richtig eingetragen, aber bei ausführen der Abfrage kommt wieder die Fehlermeldung. Versuche ich jetzt die Design-Ansicht wieder auszuschalten um im SQL-Fenster zu sein, wird das mit obiger Fehlermeldung verweigert.

Natürlich bleibt der Weg, die Abfrage "qry_balance" als Ansicht zu erstellen und diese Ansicht als Grundlage für die Abfrage "qry_balancenotzero" mit eingetragenem Kriterium "> 0" zu nehmen, das wird funktionieren. Ich weiß aber nicht, ob das in Wolframs Konzept paßt.

Gruß

acco
openSUSE 13.1, LibreOffice 4.3.2.2
WSO
*****
Beiträge: 233
Registriert: Di, 22.04.2014 13:03

Re: Bug im SQL-Generator

Beitrag von WSO »

Ja acco stimmt genau.
Eine view will ich aber nicht aus der Abfrage machen.
Meine Tests mit views (in der V4.1) haben die Verwaltungsmöglichkeiten (GUI) der darunter liegen Tabellen so eingeschränkt, dass ich lieber die Abfragen native editiere.

Gruß,
Wolfram
RobertG
********
Beiträge: 2067
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Bug im SQL-Generator

Beitrag von RobertG »

Hallo Wolfram, hallo acco,

die Abfrage greift auf eine andere Abfrage zu. Der erste Zugriff, den ich jetzt einmal probiert habe, ist, die andere Abfrage zu einer Ansicht zu machen. Dann klappt auch das Filtern im grafischen Modus. Sonst habt Ihr Recht: Das ganze wird mit einem SQL-Fehler nicht ausgeführt. Da gilt es jetzt zu suchen, was die grafische Benutzeroberfläche zum Wanken bringt.

Gruß

Robert
acco
***
Beiträge: 52
Registriert: So, 04.05.2014 19:54

Re: Bug im SQL-Generator

Beitrag von acco »

Hallo Robert, hallo Wolfram,
WSO hat geschrieben:Aber, neues Problem :
Wenn ich versuche, eine Where-Klausel auf ein mit IFNULL ... definiertes Feld zu legen will,
bringt die grafische Oberfläche beim Auflösen des generierten Statements einen Fehler.
In SQL-Editor (native) funktioniert das gleiche (wie erwartet) einwandfrei.
Wenn die IFNULL-Bedingungen in der Abfrage

Code: Alles auswählen

IFNULL( "a_value", 0 ) + IFNULL( "b_value", 0 )
gelöscht werden, kann in der GUI das Kriterium "> 0" eingegeben werden. Allerdings ist dann das Abfrage-Ergebnis falsch, eben weil die Null-Werte nicht auf "0" gesetzt werden. Abhelfen könnte ein Defaultwert "0" in den leeren Tabellenspalten, aber vermutlich möchte Wolfram in seiner DB im Feld Debit oder Credit keine "0" stehen haben, wenn es (noch) keinen Vorgang (Rechnung) dazu gibt. Sonst hätte er das wohl so gemacht.

Gruß

acco
openSUSE 13.1, LibreOffice 4.3.2.2
RobertG
********
Beiträge: 2067
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Bug im SQL-Generator

Beitrag von RobertG »

Hallo acco,

geht ja weniger darum, wie das von vornherein hätte vermieden werden können, sondern auf welche Eingabe in der ersten Abfrage die GUI der zweiten Abfrage allergisch reagiert. Und das hast Du jetzt gefunden. Damit lässt sich auch eine Bugmeldung formulieren.

Gruß

Robert
Antworten