Toggle relative seeking
SET SOFTSEEK on | OFF | <xlToggle>
ON causes the record pointer to be moved to the next record with a higher key after a failed index search.
OFF causes the record pointer to be moved to EOF() after a failed index search.
<xlToggle> is a logical expression that must be enclosed in parentheses. A value of true (.T.) is the same as ON, and a value of false (.F.) is the same as OFF.
SET SOFTSEEK enables relative seeking, a method of searching an index and returning a record even if there is no match for a specified key.
When SOFTSEEK is ON and a match for a SEEK is not found, the record pointer is set to the next record in the index with a higher key value than the SEEK argument. Records are not visible because SET FILTER and/or SET DELETED are skipped when searching for the next higher key value. If there is no record with a higher key value, the record pointer is positioned at LASTREC() + 1, EOF() returns true (.T.), and FOUND() returns false (.F.). FOUND() returns true (.T.) only if the record is actually found. It never returns true (.T.) for a relative find.
When SOFTSEEK is OFF and a SEEK is unsuccessful, the record pointer is positioned at LASTREC() + 1, EOF() returns true (.T.), and FOUND() returns false (.F.).
. SET RELATION: SET RELATION ignores SOFTSEEK updating the record pointer in all linked child work areas as if SOFTSEEK is OFF.
. This example illustrates the possible results of a SEEK with SET SOFTSEEK ON: SET SOFTSEEK ON USE Salesman INDEX Salesman NEW ACCEPT "Enter Salesman: " TO cSearch SEEK cSearch DO CASE CASE FIELD->Salesman = cSearch ? "Match found:", FOUND(), EOF(), FIELD->Salesman CASE !EOF() ? "Soft match found:", FOUND(), EOF(), ; FIELD->Salesman OTHERWISE ? "No key matches:", FOUND(), EOF(), FIELD->Salesman ENDCASE
FOUND(), SEEK, SET INDEX, SET ORDER, SET RELATION