Für ein Übungsbeispiel soll ich einen Selektionsbildschirm definieren. So weit so gut. Dieser Bildschirm hat einen Parameter und 4 weitere Eingabefelder in Form von SELECT-OPTIONS, von denen kein einziges ein Pflichtfeld ist.
Nun soll ich von einer Datenbank bestimmte Datensätze abfragen und in Form einer einfachen Liste auf dem Bildschirm ausgeben.
Genau jetzt kommt meine Schwierigkeit: Diese Datenbankabfrage soll "dynamisch" sein. Das bedeutet, wenn alle Felder leer sind und der User auf F8 drückt sollen ohne irgendwelche WHERE-Bedingungen einfach alle Datensätze ausgelesen werden. Hat der User in ein Feld etwas eingetragen, dann soll nach diesem Kriterium selektiert werden. Ich habe 5 Eingabefelder die ja entweder leer oder gefüllt sein können.
Jetzt die Frage: Gibt es eine Möglichkeit im SELECT-Block eine If-Bedingung einzufügen, die prüft ob eines der Felder leer ist? Ansonsten müsste ich (laut meiner Überlegung) alle 32 Möglichkeiten überprüfen, in welchen Feldern etwas drinnesteht und dann je nachdem im WHERE-Teil die Bedingung setzen. Das ist ziemlich viel Zeitaufwand, und wir Programmierer sind ja doch eher faul ;)
Oder gibt es da eine ganz andere Möglichkeit?
Moin.
Ich sehe hier überhaupt keine Notwendigkeit etwas abzufragen.
wenn man 4 mal Select-options plus einmal Parameters hat, kann man das einfach am select verarbeiten.
Select * from tabelle where SelOpt1 IN so_1 and SelOpt2 in so_2 ....
and p_par eq 'X'.
Eine Prüfung auf leere SelOpts brauche ich nur, wenn ich gerade verhindern möchte,
das die "Ganze Datenbank" gelesen werden soll.
gruß Jens
<:: XING-Gruppe Tricktresor::> Die deutsche Rechtschreibung ist Freeware, du darfst sie kostenlos nutzen – Aber sie ist nicht Open Source, d. h. du darfst sie nicht verändern oder in veränderter Form veröffentlichen.