Programmieren mit dBASE PLUS: Funktionen: setRange

Aus Wikibooks
Zur Navigation springen Zur Suche springen
Wikibooks buchseite.svg Zurück zu Funktionen | One wikibook.svg Hoch zu Regal EDV | Wikibooks buchseite.svg Vor zu Inhaltsverzeichnis


Schränkt das Rowset auf diejenigen Reihen ein, deren Schlüsselfeldwert innerhalb eines Bereiches fällt.

Syntax[Bearbeiten]

<oRef> setRange(<key exp)

oder

<oRef> setRange(<startKey exp> | null, <endKey exp> | null)

<oRef>

Das Rowset, das sie einschränken möchten.

<key exp>

Zeigt nur die Reihen an, deren Schlüsselwert mit <key exp>

übereinstimmt.

<startKey exp>

Zeigt die Reihen, deren Schlüsselwert gleich oder größer ist als <startKey exp>

<endKey> exp

Zeigt die Reihen, deren Schlüsselwert weniger oder gleich groß ist als <endKey exp>

Es gibt 4 Möglichkeiten setRange( ) zu verwenden:

  1. Genaue Übereinstimmung: setRange(<key exp>)
  2. Bereich von Anfang bis Ende: setRange(<startKey exp>,<endKey exp>)
  3. Bereich des Startwertes: setRange(<startKey exp>, null)
  4. Bereich bis zum Endwert: setRange(null, <endKey exp>)

Eigenschaft von[Bearbeiten]

Rowset

Beschreibung[Bearbeiten]

setRange( ) ist ähnlich wie ein Filter; setRange( ) verwendet den aktuellen Index von Rowset (dargestellt durch seine indexName Eigenschaft) und zeigt nur die Reihen an, deren Schlüsselwert mit einem Einzelwert übereinstimmt oder in einen Wertebereich reinfällt. Das nennt man eine Schlüsselbegrenzung.

Da ein Index verwendet wird, wirkt setRange( ) sofort. Eine Filterbestimmung muss dagegen erst für jede Reihe ausgewertet werden. Verwenden Sie clearRange( ), um die Begrenzung aufzuheben.

Der Typ des Schlüsselwertebereiches muß mit dem Typ des verwendeten Indexes übereinstimmen.Beispielsweise, wenn der Indexschlüssel UPPER(Name) ist, mussen Sie im Setrange() Großbuchstaben vorgeben. Ist der Index vom Typ „Zeichen“ wird immer eine partielle Übereinstimmung (von Links nach Rechts) verwendet. Deshalb können auch wenn nur ein Suchwert angegeben wird (kein Bereich von-bis) mehrere Schlüsselwerte gefunden werden.

Wenn Sie sowohl setRange( ) als auch einen Filter (und canGetRow) für das gleiche Rowset verwenden, dann erhalten Sie die Reihen, die innerhalb des Indexbereiches liegen und die gleichzeitig die Filterbestimmung(en) erfüllen.

Folgendes ist zu beachten wenn Sie Rowsets bearbeiten, die mittels Master-Rowset (Master-Details) verknüpft sind:

Intern wird zu Verknüpfung der beiden Rowsets setRange( ) verwendet. Wenn Sie für den Details-Rowset setRange( ) anwenden, hebt dies die ursprüngliche Einschränkung des Rowsets auf!

Navigation im master rowset versetzt die master-detail Begrenzung wieder in ihren ursprünglichen Zustand.