FIND
Finds records that match specified conditions, producing a result set.
Syntax
FIND [ num] [ setspec] [EVALUATE clause] [-> clause]
Parameters
num | The number of records to be found. Num can be an integer constant (15, 200); a variable, form field, or parameter that evaluates to an integer; the word ALL. If num is omitted, or less than 0, it defaults to ALL. |
setspec | The set specification that defines the records to be found. If omitted, the current set (if it exists) is used. |
Comments
Sets found using the FIND command are not stored permanently; they exist only for the current application session or until a DISPOSE SET command is executed.
If the -> clause is omitted, a result set is still produced. The unnamed result set can be referred to as CurrentSet for as long as it remains the current set.
Changes made to a record in an EntitySet or relationship are reflected in the result set, and vice versa.
$ SetCount and $ MemberCount are assigned a value equal to the number of members in the result set found by the FIND command.
Example
To find all employees whose last name is Smith, enter
find all Employees where LastName = “Smith” -> SmithSet
If you are working interactively at the command prompt, you could find it convenient to use the current unnamed result set when narrowing down a set of records. In the repeated FIND command, the second and third commands use the current set as their implicit setpsec:
> find Employees where Location = “Canada”
2019 selected
> find where LastName = “S”?
146 selected
> find where DeptNum = “D01”
7 selected
The name CurrentSet can also be used explicitly.
In application programs, you should explicitly name the result sets that you create with a FIND command. This technique is especially useful if you plan to compile a program that contains FIND commands:
procedure GetSet1 (a, b)
if a=b
find all Employees WorkIn Department -> KeepEmps
else
find all Employees WorkIn Department where LastName = a -> KeepEmps
endif
list all KeepEmps
endprocedure
You can use the FIND command to locate data, as shown in the following example:
find all Employees where LName = fEmployees.LastName
if $ setcount > 0
list all
else
output “Nobody who works here is named: ” fEmployees.LastName
endif
You can also use FIND with forms as shown below:
find fItems where fItems.Qty > 0 % find values entered