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
|