Programmieren mit dBASE PLUS: Funktionen: findKeyNearest
Sucht den Datensatz mit dem Schlüsselwert, der dem eigentlich gesuchten Wert am ehesten entspricht.
Syntax
[Bearbeiten]<oReferenz>.findKeyNearest(<Ausdruck>)
<oReferenz>
Der Datensatzbereich, der durchsucht werden soll.
<Ausdruck>
Der gesuchte Wert.
Eigenschaft von
[Bearbeiten]Beschreibung
[Bearbeiten]findKey( ) führt in dem betreffenden Datensatzbereich einen indexbezogenen Suchlauf durch. Dabei wird der Index verwendet, der durch die indexName-Eigenschaft des betreffenden Rowset-Objekts angegeben wurde. Der Rückgabewert True oder False zeigt an, ob eine exakte Übereinstimmung vorhanden ist. Wenn es keine exakte Übereinstimmung gibt, wird der Cursor in den Datensatz gesetzt, der dem gesuchten Wert am nächsten kommt; das ist der Datensatz, der sich bei einer erfolgreichen Suche an dieser Position hätte befinden müssen. Wenn also beispielsweise im Index der Wert "Meyer" auf den Wert "Maier" folgt, aber "Meier" gesucht war, schlägt die Suche fehl, und der Cursor wird in den Datensatz mit dem Eintrag "Meyer" gesetzt. Da nämlich der gesuchte Wert "Meier" vor "Meyer" und nach "Maier" einsortiert werden müßte, ist "Meyer" der Wert, der dem gesuchten "Meier" am ehesten entspricht.
Am besten merken Sie sich, daß entweder der genaue Wert oder der Wert danach gefunden wird. Dabei müssen Sie daran denken, daß die Bedeutung von "danach" von der Sortierung des Index abhängt. So würde, um auf das vorhergehende Beispiel zurückzugreifen, bei einem absteigend statt aufsteigend sortierten Index "Maier" auf "Meyer" folgen, so daß eine Suche nach "Meier" bei "Meyer" enden würde. Wenn der gesuchte Wert nach dem letzten Wert im Index käme, wird der Cursor an das Bereichsende des Rowset-Objekts gesetzt.
findKeyNearest( ) ist eine Navigationsmethode; bei ihrem Aufruf wird das canNavigate-Event ausgelöst. Ergibt dieses False, hat kein Suchlauf stattgefunden. onNavigate wird nach jedem Start eines Suchlaufs ausgelöst. Informationen über die Interaktion von Navigationsmethoden mit Navigations-Events sowie implizite Speicherungen finden Sie unter next( ).
findKeyNearest( ) sucht immer nach einer teilweisen Übereinstimmung mit Strings. So findet findKeyNearest("Mai") beispielsweise das Wort "Mair". Wenn nur nach kompletten Schlüsselwerten gesucht werden soll, müssen Sie <Ausdruck> mit so vielen zusätzlichen Leerzeichen versehen, daß das Resultat der Länge der Schlüsselwerte entspricht.