safeselect
safeselect
CONDITION

The safeselect statement makes visible only those records for the active database for which the specified condition is true. If no records match, the previous selection is retained.

Parameters

This statement has one parameter:

condition – is a Boolean formula (a formula with a true/false result).

Description

This statement is identical to the select statement, except that if no records match, the safeselect statement will retain the previous selection (instead of selecting all records). If you don’t care about preserving the previous selection, the select statement is faster (especially if you are working with large databases and/or a complicated selection formula).

For example, consider a database with items of various prices. Suppose you run code with two consecutive selections.

    select Price > 100
    ...
    select Price > 200

If the database contains items over $100, but none over $200, the result of this code will be that all records are selected.

Suppose instead you use safeselect for the second selection.

    select Price > 100
    ...
    safeselect Price > 200

With this code, you will be left with all items over $100 selected. (It’s not necessary to use safeselect for the first selection, unless you need to preserve whatever was selected before this code was running.

Like the select statement, you can use the info(“empty”) function to find out whether or not any data was actually selected.

    select Price > 100
    ...
    safeselect Price > 200
    if info("empty")
        alertsheet "No items over $200"
    endif

The safeselect statement will also cause Panorama to skip any following bulk modification statements if the selection is empty. See Handling Empty Selections in Code to learn more.

Technical Note: This statement works by first scanning the database to see if any records match the specified formula. If not, the data is not touched. If there is at least one matching record, it will go ahead and scan again to do the actual selection. In the worst case, Panorama will have to scan the entire database twice (depending on the location of the first matching record). This “double scan” is why this statement is slower than the regular select statement. But for small to medium sized databases, the performance difference will not be noticeable.

See Also

- checkemptyselection -- notifies the user if a selection failed, and reverts to the previous selection.
- Date Search Options -- searching dates within a database.
- Favorite Searches -- saving and recalling favorite searches.
- find -- locates the first visible record in the active database for which the specified condition is true.
- Find & Replace Dialog -- finding and replacing a word or phrase (with an option to use a regular expression).
- Find/Select Dialog -- using a dialog to search for specific data.
- findabove -- locates the next previous record (above the current record) in the active database for which the specified condition is true.
- findbackwards -- locates the last visible record in the active database for which the specified condition is true.
- findbelow -- locates the next visible record (below the current record) in the active database for which the specified condition is true.
- findid -- locates a record in the active database by its ID number (see info("serverrecordid").
- findnth -- finds the nth (2nd, 3rd, 4th, etc.) record that matches a true-false test.
- findselect -- opens the standard *Find/Select* dialog.
- findselectdialog -- opens the standard *Find/Select* dialog.
- Formula Search -- searching with a formula.
- Handling Empty Selections in Code -- dealing with an empty selection data set.
- ifselect -- combines the select and if info("empty") operations into a single statement.
- info("empty") -- returns true or false depending on the result of the last select operation. If no records were selected the function will return true, otherwise it will return false.
- info("found") -- returns true or false depending on whether the last *find* or *next* statement was successful.
- info("selectduplicatesortwarning") -- works with the selectduplicatesnowarning statement to ascertain whether or not the database was sorted correctly when last search for duplicates was performed.
- nextmatch -- locates the next visible record in the active database for which the condition specified in the most recent Find statement is true.
- Numeric Search Options -- searching numbers within a database.
- pleaseselectall -- makes sure that all records are selected.
- previousmatch -- locates the previous (closer to the top) visible record in the active database for which the condition specified in the most recent Find statement is true.
- Record Search Options -- searching via record attributes.
- Refining a Selection -- selecting a subset or superset of a previous selection."
- removeselected -- deletes all selected records from the database.
- removeunselected -- deletes all unselected records from the database.
- safeselectwithin -- makes visible only those previously selected records in the active database for which the specified condition is true. If no records match, the previous selection is retained.
- search( -- searches through an item of text looking for a character, word or phrase. If it finds an exact match (including upper/lower case) with the character, word or phrase, it returns its position within the text item. If it does not find the character, word or phrase, it returns zero.
- searchanycase( -- searches through an item of text looking for a character, word or phrase. If it finds a match (upper/lower case may be different) with the character, word or phrase, it returns its position within the text item. If it does not find the character, word or phrase, it returns zero.
- Searching -- searching a database to find or select information.
- select -- makes visible only those records for the active database for which the specified condition is true.
- Select Duplicates Dialog -- opens the standard *Select Duplicates* dialog sheet.
- selectadditional -- adds unselected records to a previously selected group if they match the true-false test.
- selectall -- makes every record in the database visible.
- selectduplicates -- selects records containing duplicate information in the database.
- selectduplicatesnowarning -- selects records containing duplicate information in the database.
- Selecting with the Context Menu -- searching for information related to the current cell.
- selectreverse -- makes every visible record invisible, and every invisible record visible.
- selectwithin -- uses a Boolean formula to exclude records from a previously selected group.
- Text Search Options -- searching text within a database.

History

Version | Status | Notes
10.2 | New | New in this version.