Wir würden dann zum Beispiel die Checkboxen für Abteilung 20 und 30 anklicken:
Der Button Abfrage starten startet dann eine Query im Block EMP
Was brauchen wir für diese Technik?
-) Einen CONTROL-Block mit einem Feld TI_Filter_String (Char, 2000)
-) Eine Checkbox CB_Filter im DEPT-Block (Numerisch, 0-unchecked, 1-checked)
Der Button, der die Query startet, benötigt noch einen WHEN-BUTTON-PRESSED:
:Control.TI_Filter_String := ';';
go_block ('DEPT');
first_record;
LOOP
IF :DEPT.CB_Filter = 1 THEN
:Control.TI_Filter_String := :Control.TI_Filter_String || :DEPT.DEPTNO || ';';
END IF;
IF :SYSTEM.LAST_RECORD = 'TRUE' THEN
EXIT;
ELSE
Next_Record;
END IF;
END LOOP;
go_block ('EMP');
execute_query;
Zum Schluss benötigt der EMP-Block noch folgende Default-Where-Eigenschaft:
:Control.TI_Filter_String LIKE '%;' || DEPTNO || ';%'
Der Trick ist nun, dass jede DEPTNO des Filter-Strings in der EMP-Tabelle gefunden werden kann durch die LIKE %;...;% - Technik:
Viel Spass damit
Gerd
Keine Kommentare:
Kommentar veröffentlichen