Show TOC Anfang des Inhaltsbereichs

Selektionskriterien und logische Datenbanken  Dokument im Navigationsbaum lokalisieren

Falls ein Programm mit einer logischen Datenbank verknüpft ist und es wird im Programm ein Selektionskriterium, das einer Datenbanktabelle dieser logischen Datenbank zugeordnet ist, definiert, sind zwei Fälle zu unterscheiden, nämlich ob freie Abgrenzungen für die Datenbanktabelle möglich sind oder nicht.

Keine freien Abgrenzungen möglich

Falls das Selektionskriterium für eine Spalte einer Datenbanktabelle definiert wird, die nicht für freie Abgrenzungen vorgesehen ist, beeinflusst dieses Selektionskriterium nicht den Umfang der durch die logische Datenbank gelesene Daten. Entsprechende Prüfungen können erst nach dem Lesen eines Datensatzes während eines GET-Ereignisses durchgeführt werden.

Freie Abgrenzungen möglich

Falls das Selektionskriterium für eine Spalte einer Datenbanktabelle definiert wird, die für freie Abgrenzungen vorgesehen ist, werden die Eingabewerte des Selektionsbilds, an die logische Datenbank übertragen, wo sie wie freie Abgrenzungen behandelt werden. Die logische Datenbank liest die Sätze der Datenbanktabelle, die den Selektionskriterien nicht genügen, auch nicht ein. Diese Art der Selektion ist weit effizienter als bei Datenbanktabellen, die nicht für freie Abgrenzung vorgesehen sind.

Weiterhin werden in diesem Fall die Eingabefelder für die entsprechende freie Abgrenzung von Anfang an auf dem Selektionsbild angezeigt. Der Benutzer muss nicht erst Freie Abgrenzungen wählen, damit das entsprechende Bild erscheint.

Falls die logische Datenbank diese Zeilen dennoch lesen soll, weil das Selektionskriterium z.B. für andere Zwecke als für die Beschränkung von Datenbankzugriffen verwendet werden soll, muss man folgenden speziellen Zusatz verwenden:

SELECT-OPTIONS seltab FOR f..... NO DATABASE SELECTION.....

Beispiel

Das folgende Programm sei mit der logischen Datenbank F1S verknüpft

REPORT demo_sel_screen_select_ldb_1.

NODES spfli.

SELECT-OPTIONS conn FOR spfli-connid NO DATABASE SELECTION.

GET spfli.
  IF spfli-connid IN conn.
    WRITE: spfli-carrid, spfli-connid, 'meets criterion'.
  ELSE.
    WRITE: spfli-carrid, spfli-connid,
                        'does not meet criterion'.
  
ENDIF.

Es erscheint folgendes Selektionsbild, bei dem der erste Teil in der logischen Datenbank und die letzte Zeile (CONN) im Programm definiert ist.

Diese Grafik wird im zugehörigen Text erklärt

Füllt der Benutzer die Eingabefelder wie hier gezeigt, ist die Listenausgabe:

LH  2402 does not meet criterion

LH  2436 meets criterion

LH  2462 does not meet criterion

Im folgenden Programm wird die Option NO DATABASE SELECTION nicht verwendet:

REPORT demo_sel_screen_select_ldb_2.

NODES spfli.

SELECT-OPTIONS conn FOR spfli-connid.

GET spfli.
  IF spfli-connid IN conn.
    WRITE: spfli-carrid, spfli-connid, 'meets criterion'.
  ELSE.
    WRITE: spfli-carrid, spfli-connid,
                        'does not meet criterion'.
  
ENDIF.

Bei den gleichen Eingaben wie oben sieht die Ausgabe so aus:

LH  2436 meets criterion

Dieses Ergebnis ist das gleiche, als wenn die Anweisung SELECT-OPTIONS nicht verwendet worden wäre und der Benutzer stattdessen Freie Abgrenzungen in der Drucktastenleiste des Selektionsbilds gewählt und dann 2436 eingegeben hätte.

 

 

Ende des Inhaltsbereichs