Programmieren mit dBASE PLUS: Funktionen: applyLocate

Aus Wikibooks


Sucht nach dem ersten Datensatz, der mit den angegebenen Kriterien übereinstimmt.

Syntax[Bearbeiten]

<oReferenz>.applyLocate([<SQL-Bedingung AusdruckZ>])

<oReferenz>

Der Datensatzbereich, der nach den angegebenen Kriterien durchsucht werden soll.

<SQL-Bedingung AusdruckZ>

Ein SQL-Ausdruck, der eine Bedingung formuliert.

Eigenschaft von[Bearbeiten]

Rowset

Beschreibung[Bearbeiten]

Rowset-Objekte unterstützen einen Suchmodus, in dem Field-Objekten Werte zugewiesen werden können, die dann für das Lokalisieren von Datensätzen mit übereinstimmenden Werten im Datensatzbereich verwendet werden. Mit beginLocate( ) können Sie den Datensatzbereich in den Suchmodus versetzen und mit applyLocate( ) nach dem ersten übereinstimmenden Datensatz suchen. Mit locateNext( ) können Sie nach den anderen übereinstimmenden Datensätzen suchen. Durch die Eigenschaft dataLink verknüpfte Steuerungselemente in einem Formular schreiben einen Wert in die Eigenschaft value der Field-Objekte. Sie benötigen daher für eine Suche per Formular in Ihrer Anwendung nur diese drei Methoden.

Durch den Aufruf von applyLocate( ) wird der Cursor in den ersten übereinstimmenden Datensatz des Bereichs gesetzt.

Um den Datensatzbereich in den Suchmodus zu versetzen, können Sie applyLocate( ) auch ohne vorausgehenden Aufruf von beginLocate( ) verwenden. Dazu rufen Sie applyLocate( ) mit einem Parameter-String auf, der einen SQL-Ausdruck mit einer Bedingung enthält. Auf diese Weise wird der erste Datensatz gefunden, der der Bedingung entspricht. (Wenn sich beim Aufruf von applyLocate( ) mit einem Parameter der Datensatzbereich im Suchmodus befindet, werden alle Feldwerte, die im Suchmodus eingegeben wurden, verworfen, und die angegebene Bedingung wird nur zur Suche nach einer Übereinstimmung benutzt.)

Wenn sich der Datensatzbereich nicht im Suchmodus befindet und seine Eigenschaft modified den Wert True hat, bewirkt der Aufruf von applyLocate( ) implizit einen Speicherversuch. Wenn dieser Versuch fehlschlägt, etwa weil canSave den Wert False liefert, findet kein Suchlauf statt.

Wenn ein Suchlauf stattfindet, liefert applyLocate( ) entweder True oder False, je nachdem, ob eine Übereinstimmung gefunden wurde oder nicht. Anschließend wird immer onNavigate ausgelöst; der Cursor wird dann entweder in die erste übereinstimmende Zeile gesetzt oder, bei einer fehlgeschlagenen Suche, in die aktuelle Zeile.

Damit Suchläufe schneller ausgeführt werden, verwendet applyLocate( ) die verfügbaren Indizes. Wenn bei der Suche auf den aktuellen, durch die Eigenschaft indexName des Rowset-Objekts spezifizierten Index zugegriffen wird, werden Sie wohl den Methoden findKey( ) und findKeyNearest( ) den Vorzug geben.