search(
search(
TEXT
,
PHRASE
)

The search( function 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.

Parameters

This function has two parameters:

text – is the item of text that you want to search through.

phrase – is the character, word or phrase that you want to search for. This must be the exact character, word, or phrase, including upper or lower case. The search( function will not match Dr with DR or dr. If you don’t care about upper/lower case, use the searchanycase( function.

Description

This simple procedure uses the search( function to attempt to locate and display a fax number in the Notes field. This procedure assumes that the fax number will look something like this: fax (999) 555–0123.

    local X X=search(lower(Notes),"fax (")
    if X<>0
        message "Fax Number: "+Notes[X+4;14]
    endif

The example starts by searching for the phrase fax (. If it finds this phrase, it displays the 14 characters starting with the ( symbol. (By using the lower( function the procedure makes sure that search( will find a match even if the word fax is all or partially in upper case.) By removing the text that has already been searched through, a procedure can locate multiple occurrences of a character, word or phrase. This procedure attempts to locate every phone number and collect them all into a list.

    local X,XNotes,XPhone,PhoneList
    X=1
    XNotes=Notes
    PhoneList=""
    loop
        X=search(XNotes,"(")
        stoploopif X=0
        XPhone=XNotes[X;14]
        if XPhone match "(???) ???-????"
            PhoneList=sandwich("",PhoneList,",")+XPhone
            X=X+14
        endif
        XNotes=XNotes[X+1,-1]
    while forever
    message "Phone Numbers: "+PhoneList

After each successful search, the procedure lops off the section of the text that has already been searched, and then starts over again. The process continues until there are no more matches.

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.
- 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."
- regexreplace( -- replaces text with new text. The text to be replaced is determined by a regular expression.
- regexreplaceexact( -- replaces text with new text. The text to be replaced is determined by a regular expression.
- removeselected -- deletes all selected records from the database.
- removeunselected -- deletes all unselected records from the database.
- 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.0 | Updated | Carried over from Panorama 6.0, however, this function now automatically converts numbers to text before performing the search.