Customized Search Forms

Author: Tripp W Black

Created: 08/26/1999 at 07:51 PM

 

Category:
Notes Developer Tips
Forms/Subforms

You want to set up a customised search form to allow users to search the database by field. For
example, in an industry news database, you want to search by company and/or by country
and/or by any word or phrase.


Solution 1:

1. Build a search form. Include the keyword fields
“Company” and “Country”. The keyword fields perform
an @DbColumn into hidden views to obtain the lists of
companys and countries. The search form can be
called whatever you want but it must have the
alias “$$Search”.

2. Also include an editable field called “SearchKeywords”
so the user can search for specific words and phrases.

3. The keyword fields list of values must begin with a
blank value or a prompt value such as
“Select a company”. This is achieved in your list
value formula by using: “Select a company” :
@DbColumn(.... etc

4. Build a field called “Query” that converts the user
keyword selections into a valid full text query e.g.
“FIELD Company contains Acme”. A suitable formula
would look like this:

tSearchKeywords := @If(SearchKeywords != “”; @Implode(SearchKeywords; “ AND “);
“”);
tCompany := @If(Company != “Select a company”; “Field Company contains “ +
@Implode(Company; “,”); “”);
tCountry := @If(Country != “Select a country”; “Field Country contains “ +
@Implode(Country; “,”); “”);
tAll := “(“ + @Trim(tSearchKeywords : tCompany : tCountry) + “)”;
@Implode(tAll; “ AND “)


5. Add a button to the form with the title:
“Start the search”. The button does not have to have
a formula behind it.


6. Add a hidden computed for display field called
“$$Return” with the following formula:

“[[/your_db.nsf/your_specific_search_view/?SearchView&Query=” + Query + “]]”

The second part of the URL formula refers to the view that will be searched. It is best to use a
view that contains all documents. Solution 2 on this site describes how to search the user’s
current view rather than a specific view.


7. Add a search action button or hotspot on all views to execute the search URL which looks
something like this:

@URLOpen(“http://your_server/your_db.nsf/your_search_form?OpenForm”)

Note that it is possible to build other fields in the search form to allow users to select full text
options: use thesaurus, include word variants, etc.



Solution 2:

Search by form in the user’s current view instead of a specific view. You have already set up a
database search by form. The search button on your view executes the search URL which looks
something like this:

@URLOpen("http://your_server/your_db.nsf/your_search_form?OpenForm”)

The search form contains a $$Return field which executes a URL as follows:

“[[your_db_name/specific_search_view_name/?SearchView&Query=” + Query + “]]”

where the computed Query field contains the search string and search options.


previous page