Ich habe schon oft hier im Forum gelesen, und dieses Forum hat mir schon oft weitergeholfen. Ich habe auch schon mal mit früheren LO Versionen die ein oder andere Mini-DB zusammengeschustert.
Nun komm ich mit suchen/lesen einfach nicht mehr weiter
Ich bin gerade dabei eine einfache Geräteverwaltung zu stricken, und stoße nun auf folgendes Problem bei der Verwendung von Filtern über Parametern.
Die LO Version ist 6.2.8.2 (x64)
Die Datenbank ist eine eingebettete Firebird
OS ist WIN10 Home
Ich habe eine Relationstabelle, in der ich bestimmte Geräte anderen übergeordneten Geräten zuweise.
Für ein Formular habe ich eine Abfrage mit Parameter :Geraetetyp erstellt um mir per Listenfeld die Geräte anzeigen zu lassen, die noch nicht zugeordnet sind (abhängig von ID.Geraetetyp)
Das Listenfeld steckt in einem Formular auf einer Filtertabelle
Die Abfrage steckt in einem darunter liegendem Formular, Im Unterformular ist von dem entsprechenden Feld der Filtertabelle auf den Parameter "ptypeID" verknüpft.
Die Abfrage sieht so aus:
Code: Alles auswählen
SELECT
"tab_geraete"."ID.geraete",
"tab_typen"."txt_type",
"tab_geraete"."txt_mac-adresse",
"tab_geraete"."txt_seriennummer",
"tab_geraete"."txt_info1",
"tab_geraete"."txt_info2",
"tab_geraete"."txt_info3"
FROM
"tab_typen",
"tab_geraete"
WHERE NOT "tab_typen"."txt_prefix" = 's'
AND "tab_geraete"."ID.geraete" NOT IN ( SELECT DISTINCT "rel_geraet-SC"."fk_geraet" FROM "rel_geraet-SC" )
AND "tab_geraete"."fk_geraetetyp" = "tab_typen"."ID.typen"
AND "tab_typen"."ID.typen" = :ptypeID
Ich möchte aber alle sehen wenn kein Parameter eingegeben wird
Im Base Handbuch steht dazu dass man die Abfrage mit dem Parameter um das Konstrukt
Code: Alles auswählen
"OR :parameter IS NULL"
Die letzte Zeile aus meiner Abfrage sähe also so aus:
Code: Alles auswählen
AND ("tab_typen"."ID.typen" = :ptypeID OR :ptypeID IS NULL)
wird aber ein Parameter eingegeben kommt folgende Fehlermeldung.
Das passiert unabhängig davon, ob man die Abfrage per Formular ausführt, oder im SQL-Editor der Abfrage
händisch einen entsprechenden Wert einträgt..
Ich schätze also es liegt nicht am Formular.
Funktioniert das mit "OR :# IS NULL" nur bei der HSQLDB, nicht bei Firebird?
mache ich einen Fehler, oder ist das gar ein Bug?
EDIT:
Hier noch eine kleine Beispiel Datenbank nur mit Tabellen und den zwei unterschiedlichen Parameterabfragen als .zip