Browses in QAD .NET UI > Browse Maintenance
  
Browse Maintenance
Browse data is defined with Browse Maintenance (36.20.13) and View Maintenance (36.20.18). The Browse Maintenance (36.20.13) program includes a new graphical tool for creating, editing, duplicating, and deleting browses. This tool is only available with the QAD .NET UI.
 
 
Browse Maintenance ( .NET UI mode)
In the Desktop (Web Browser) and Terminal (Character UI, or CHUI) modes, to define a browse, you must create both a view and a browse using View Maintenance and Browse Maintenance. With Browse Maintenance in the  .NET User Interface mode, you do not need to create a view using View Maintenance. Rather, you can simply use Browse Maintenance to specify the components of a browse. The system automatically stores the browse definition.
Note: Although all browses created by Browse Maintenance ( .NET User Interface) can be maintained in the Character UI, some legacy browses defined using the Character UI might not be maintainable by Browse Maintenance ( .NET User Interface). In the Character UI, you create a browse by entering data in two maintenance programs, View Maintenance and Browse Maintenance. You have to enter the join data in View Maintenance’s Join Phrase field, where join data is a clause of the form <from table>.<from field> = <to table>. <to field>. However, more than just join data can be entered in View Maintenance’s Join Phrase field. For example, you can include field filters of the form <field name> <operator> <value>. Browse Maintenance ( .NET User Interface) only supports maintaining join data.
Browse Performance Guidelines
Before developing browses, please note the following guidelines:
You should have a good working knowledge of RDBMS, schema and Progress indexing when using Browse Maintenance. If you include a join, filter, or sort field that is not indexed, Progress performs a full table scan whenever the browse is run, which causes performance issues. For this reason, you should use the Table Indexes feature in Browse Maintenance to display the types of indexes available for selected tables, before you save the browse. See Viewing Table Indexes.
A browse on a database table that has many records (for example, tr_hist) can take a long time to save and run. You should consult the data dictionary before defining a browse to check the number of records being retrieved by a browse.
There is no limit to the number of tables you can include using the .NET UI Browse Maintenance; however, including a large number of tables can cause performance issues. In general, keep the browse definition as simple as possible.
The .NET UI Browse Maintenance was created to simplify the creation and modification of browse definitions. Although the majority of browses defined by Character UI (CHUI) Browse Maintenance are maintainable in .NET UI Browse Maintenance, a number of definitions will not open for modification. The most common reason that a browse defined by CHUI Browse Maintenance cannot be opened in .NET UI Browse Maintenance is that a non-standard RDBMS join exists in the View’s Join Phrase field. Typically, this is a join between a table in the definition and a string literal (for example, itm_prefix = “CA”) as opposed to a join between two fields. The former is actually a filter condition and not a relationship between tables. The .NET UI Browse Maintenance does not allow for display of filters in the Join Phrase.
Indexing (you can view the indexes defined for a table, right-click the table in .NET UI Browse Maintenance and select Table Indexes).
Join tables by indexed fields.
Supply sufficient join fields to take advantage of indexing.
You want indexes available for all your joins, filters, and sort columns.
Organize the table order to optimize likely queries. For instance, you could have Items first and then Orders, or Orders first and then Items. The efficiency varies depending on the data setup, table size, and filter conditions. If necessary, create some similar browses to accomplish different tasks. A “one size fits all” browse can perform poorly when used outside its original intent.
In general, avoid pre- and post-processor logic. The biggest drawback besides general performance issues is the problem of multiple users running the same browse at the same time. The pre- and post-processor code is executed for each browse request.
Keep browse functions simple so that the browse is easier to understand. Complex calculations should be done outside of the browse engine to allow for better data tracking. Avoid having browse results which depend on other data that could change unexpectedly.
Avoid use of OR in filter conditions.
If using .NET UI Browse Maintenance, allow it to automatically join the tables to the domain. This is the default and is set on the Header tab using the Join to Domain check box. This ensures that the first table added is filtered by global_domain and any other related tables are joined on their Domain field.
If creating a browse to run in .NET UI only, you should use the .NET UI Browse Maintenance. If the browse is intended only for use in the Character UI, you should use CHUI View Maintenance and CHUI Browse Maintenance. In some cases, the result set for a browse defined using .NET UI Browse Maintenance can vary depending on whether the browse is run in the .NET UI versus the CHUI. When developing a browse, you should first test the browse in both .NET UI and CHUI to verify that the results are as expected.
Avoid filters on calculated fields. The browse is run first using the Progress query on database fields. Then the calculated field filters are applied. Try to get the database fields to restrict the amount of calculation required.
The calculated fields are computed each and every time a browse is run. If the calculation is used commonly and is something the users want to filter on, consider adding a side table with the proper join. A menu-level program can be run to fill the table at convenient times.
Browses on large tables with mixed data (for instance, tr_hist) can be simplified by extracting the desired subset of data into a side table specific to the function (for instance, Item-based transactions only). Fill a table with all the current data at scheduled times, or have a menu program do this on demand and then browse this table. Note that using Preprocessor logic to do this is extremely inefficient because this work is done for each browse request. Each next page will run the calculations again.
Limit browse table joins to accomplish what is required. A complex browse need not be used as a look-up. Browse Maintenance makes copying browses simple. Avoid using one unwieldly browse to meet all requirements.
Browse Performance Checking
The system can do a performance check on the index use of a new browse definition when you save it from Browse Maintenance. The performance check, Show Index Information, helps to avoid the creation of poorly performing browses with non-indexed fields in joins, filters, and sorts.
When a browse definition is saved from Browse Maintenance, the Progress Query Parser’s INDEX-INFORMATION is examined. Checks are made to determine whether indexes can be used. Improperly defined query definitions are indicated as whole index scans and are displayed in red in the Index Information tab. For instance, the browse definition could result in a table scan that could cause performance issues and you might need to modify the definition so that no whole index scans occur. Tables with large numbers of records might negatively impact performance, so you might need to analyze the query string to identify possible causes. To do so, open the Query String tab to view the dynamically generated query string as determined by the Browse Engine.
The performance check is on by default, but can be changed from the Show Index Information setting Tools | Options or from the config-session.xml file, which now includes the following:
<DotNetBrowseMaintenanceShowIndexInformation>true</DotNetBrowseMaintenanceShowIndexInformation>
The setting specifies whether the output of the Progress INDEX-INFORMATION attribute for a query is displayed when there is an issue.
Note: The ability to examine what the Progress Query Parser determines as the indexes for a query is limited. The Browse Engine currently only exposes the dynamic query string prior to appending sorts, local variables, pre and post processor commands, and so on. This performance check will help eliminate most poorly performing browses that have been built from improperly constructed definitions. However, this check does not cover situations where users apply search conditions and sorts after the browse has been displayed in the user interface.
Starting Browse Maintenance
To start Browse Maintenance:
1 The Browse Maintenance program must first be set to open in  .NET User Interface mode. In the Application pane, right-click on Browse Maintenance and select Properties.
2 Set the Open With field to  .NET User Interface and click OK.The Browse Maintenance screen includes a toolbar, a metadata manager area, and a query grid area. The toolbar provides options for creating new browses, opening existing browses, saving browses, and deleting browses.
Creating a New Browse
To create a new browse, click the New icon or enter Ctrl+N. The system automatically displays the Select Database Tables screen.

Browse Maintenance
Next, add the left and right tables you want to use.

Select Database Tables
From the window, double-click on the name of the table you want to add as the left table, and then double-click on the name of the table you want to add as the right table. Click Close to close the window.
Click the Add Tables menu icon to display this screen at any time.
Note: You can print the visual relationships between tables shown in Browse Maintenance by choosing File | Print.
Field Descriptions
Filter For
A pull-down list of the columns in the table list. The value selected specifies which column is filtered using the value entered in the Filter field.
Table
The list of tables available for use in the browse definition.
Show System Tables
When checked, the Progress database system tables (such as *_Db, *_File, and *_Field) are displayed in the Table List. When unchecked, the system tables are not displayed.
Add
Click to add selected tables to the metadata manager area in Browse Maintenance.
Note: The tables displayed for each program are defined in the client-session.xml file. The Browse Maintenance function reads this .XML file before populating the Select Tables screen. You can prevent tables from being displayed by modifying this file.
Example: If the administrator wants to restrict access to so_mstr to the users with the logins pjt and jjp, but allowing all other users to access to the table, they add a line specifying these logins to the <DotNetBrowseMaintenanceRestrictedTables> section of the file:
<DotNetBrowseMaintenanceRestrictedTables>
<Table name="cnt_mstr" database="qaddb" restricted="*"></Table>
<Table name="hwm_det" database="qaddb" restricted="*"></Table>
<Table name="lcap_hist" database="qaddb" restricted="*"></Table>
<Table name="lpm_mstr" database="qaddb" restricted="*"></Table>
<Table name="lpmd_det" database="qaddb" restricted="*"></Table>
<Table name="lua_det" database="qaddb" restricted="*"></Table>
<Table name="lvr_det" database="qaddb" restricted="*"></Table>
<Table name="pin_mstr" database="qaddb" restricted="*"></Table>
<Table name="pex_mstr" database="qaddb" restricted="*"></Table>
<Table name="so_mstr" database="qaddb" restricted="pjt,jjp"></Table>
</DotNetBrowseMaintenanceRestrictedTables>
You can also restrict user groups by specifying the user group name in place of the user logins. When you restrict a user group, all users within that group are restricted.
Note that an asterisk (*) indicates no users have access, and the table is completely restricted.
Viewing Table Indexes
When defining a browse, it may be useful for performance purposes to view the indexes defined for the browse tables you are using. To view the index for a table, right-click the table window or header and select the Table Indexes context menu.

Browse Table Indexes
Each table index is displayed in a separate tab with the index name as the tab caption. The primary index is displayed as the first tab. Each tab displays the index attributes and the table fields that make up the index. For each field the sequence, field name, and sort type is listed.
Index Name
The name of the index as defined in the database schema.
Description
The index description as defined in the database schema (this is often blank).
Primary
Whether the index is the primary index for the table. There can only be one primary index defined for a table.
Unique
Whether the index is unique. A unique index does not allow duplicate values.
Active
Whether the index is currently active.
Fields
The list of fields making up the index.
Sequence Number
The order in which the field appears in the index
Field Name
The name of the field
Sort
The sort type: ascending or descending
You now use the Query tab to add fields to the browse.
Using the Query Tab
To add a field from a table to the browse, drag-and-drop a field from the table to a column in the Query section. Note that you can view and modify the properties by clicking the Properties button at the bottom of the column.
Field Descriptions
Field
The field name from the database schema. The default value is retrieved from the dragged field object.
Table
The table name from the database schema.
Sort
Specifies whether the column is a column used to sort the Browse results. The combo box lists the options: Ascending, Descending, and Unspecified.
Show
Specifies whether the column is displayed (returned) in the results when the browse is executed against the data source.
Filter Criteria
Enter up to nine filters that are processed using a logical or operation for the filter in each row. The format of the filter criteria is: <operator> <value>, where <operator> is =, <>, <, >,<=, matches, or begins and where <value> is a valid string for the entered operator. Although there are nine rows per column for filter criteria, the total length of the filter generated from this data is limited to 256 characters.
Properties
Each column includes a Properties button, which opens a Properties screen for entering additional field information.
You can filter the fields displayed using the Select Fields screen.
Inserting New Columns in the Query Grid
To insert new blank columns into the grid, right-click the column header to display the column options.

Query Grid Right-Click Options
Insert
Select to insert a new blank column.
Clear
Select to clear the contents of the selected column.
Delete
Select to delete the selected column
Insert Calculated Field
Select to display the Field Properties screen, in which you define a calculated field that is then inserted into a new column.
Displaying Fields in the Field List
The table areas display all the fields defined in the schema for that table. To display only the fields you require, right-click on the table area and choose Select Fields.

Select Fields
Field Descriptions
Filter For
Use this filter to filter by field name or field label.
Filter
Use this field to enter a string by which to filter the columns. For example, to view AR columns, filter by field labels, and then enter AR in the Filter field.
Field List
This area displays the list of fields available for display in the Table Control.
Deselect QAD Field
Click this field to automatically deselect/select the QAD system fields; that is, fields containing a double underscore (__).
Select All
Click to automatically select all the currently displayed fields.
If the field list is filtered by the Filter textbox, only the displayed fields are checked.
Select None
Click to automatically deselect all the currently displayed fields.
Note: If the field list is filtered by the Filter textbox, only the displayed fields are unchecked.
The Select Fields dialog has the following constraints:
A field used in a table join may not be unchecked and is displayed as grayed-out text in the dialog field list.
A minimum of one field must be checked in the dialog field list before you can click OK to exit the screen.
When a subset of fields for a table have been selected (any number of fields less than all of the fields available for the table), only the selected fields are displayed in the table control area. Note the filter icon displayed in the upper right corner of the Table Control to indicate to the user that a filtered list of fields is being displayed.
Note: Fields that have been added to a screen using Configurable Screens are displayed for that table in Browse Maintenance.
Field Properties
Use the Field Properties screen to view and modify field properties.

Field Properties
Field
This field displays the database schema field name.
Table
This field displays the database schema table name to which the Field belongs.
Default Label
This field displays the default label from the database schema.
Table Description
This field the default table description from the database schema.
Label Term (Optional)
This field specifies the key or label term from the label master table which is used to retrieve the field label displayed in the column in the browse results.
The following algorithm is applied to the label term entered when saving the browse definition:
If the label term does not exist in the label master table, the system creates a new label master record using the string entered (the string is set to all uppercase and spaces are replaced with underscores).
The new label master record’s value is the entered label term. For example, if you enter the new term Red Book, the label master table would be queried and the term would not be found. A new label master record would be created with the key RED_BOOK and the value Red Book.
This field contains an associated lookup that allows the user to select an existing label term from the label master table.
Note: When creating a browse, you cannot use the following characters in a label term: asterisk (*), ampersand (&), question mark (?), colon (:), semi-colon (;), dollar sign ($), hash mark (#), at sign (@), plus sign (+), equals sign (=), less-than sign (<), greater-than sign (>), or period (.).
Field Label
This field displays the value for the label term retrieved from the label master table.
Sort Order (Optional.)
This field specifies the sort order for the column as an integer from 1 to 8. For a given browse, the value of the sort order for each column specifies the order in which the columns are sorted relative to each other. By default, this field is set to Unspecified and read-only until the Sort field on the query grid is set to Ascending. As you specify the Sort field, the Sort Order is automatically set to reflect the order in which you specify the Sort field for various columns, but you can then change the Sort Order as needed.
Expression
This field is required when Field is a local variable (that is, has the name local-varNN, where each N is an integer from 0 to 9). When Field is a local variable, the Expression is the Progress 4GL syntax that defines the local variable. The string entered must be valid Progress syntax. You can enter an expression of up to 512 characters.
Data Type
This drop-down list specifies the Progress data type for the local variable. This field is required when the Field is a local variable (that is, has the name local-varNN, where each N is an integer from 0 to 9). Valid data types are character, date, integer, decimal, logical, and recid. If the Field is a table field, this value should not be changed.
Format
Specifies the display format for the local variable. This field is required when the Field is a local variable (that is, has the name local-varNN, where each N is an integer from 0 to 9). These are Progress database formats, such as NN/NN/NN for dates or x(N) for characters. If the Data Type is logical, a label term such as Yes/No or True/False should be entered. Note that this setting only applies to the display of browses in the Character UI; it does not apply to browses displayed in the QAD .NET UI.
Max Length. (Optional)
Specifies the maximum display length for the field. Note that this setting only applies to the display of browses in the Character UI; it does not apply to browses displayed in the QAD .NET UI.
Creating Table Joins
To define join properties between two tables, drag-and-drop a field from one table to a field in the other table. The screen displays a line indicating the join. Right-click the line to display the Join Properties screen.

Join Properties
This screen displays the table name and description, field name and label, and character type for the left and right join elements.
Using Join Types
An inner join returns the records selected for the first table combined with related records selected from the second table. If a record does not exist in the second table, no records are returned. Only related records selected from both sides of the relationship display in the view.
An outer join returns the records found by an inner join. However, in addition, for each value in the first table, it returns unknown values from the second table when no related record is found. As a result, all matching records from the first table are preserved for unmatched records in the second table.
The default join type is inner. Using the outer join can give you more flexibility in displaying information.
Example: An inner join between customers and sales orders displays only customers with sales orders. An outer join includes all customers, even those who do not have orders.
The fields in a join must be of the same datatype, and the Conversion drop-down list lets you convert the left or right datatype to ensure that they match. When you attempt to create a join of fields of differing datatypes, the system warns you of the difference, and automatically displays the Join Properties screen to let you convert one of the datatypes.
The other options on this screen are:
Only include records where the joined fields from both tables are equal (inner join).
If a record from the left table does not have a related record in the table on the right, no row is returned.
Include all records from the left table and only those records from the right table where the fields are equal (outer join).
If a record from the left table does not have a related record in the table on the right, return the data from the left table and null for the data for the table on the right.
Click OK to save any changes or Cancel to exit without saving changes.
Header Data Tab
Use the Header Data tab to complete the browse information:
Browse Name
Enter the name of the browse. The name entered must have the format xxNNN, where each x is an alphabet character and each N is an integer from 0 to 9. The convention is that the two letters indicate the module name. Once the browse has been saved, the name is read-only and cannot be changed.
Description Term
Enter the label term for the label master records whose value is used in the description for the browse. The format is an upper case alphanumeric string with no spaces. You can specify the label term in the following ways:
Leave the field blank. If you do not enter a Description Term, this field defaults to the value you entered for the Browse Name and a label master record will be created with the browse name as the label term and default description text when you save the browse. For example, if you enter xx007 as the Browse Name and leave Description Term blank, the Description Term field is assigned the value XX007, which creates the label master record XX007 when you save the browse.
Use the lookup to select an existing label term from the Label Master window, which displays labels as listed in Label Master Browse for your language.
Enter a value in the Description Term field that does not yet exist as a label term. The system will create a new label master record for your language when you save the browse.
When a new label term is created, either because you left the Description Term field blank or because you entered a value that did yet exist as a label term, you must then enter a description for it using Label Master Maintenance (36.4.17.1). You must enter the description in the Long Label field. You must do this for each language you support in your system environment using Label Master Maintenance (36.4.17.1), selecting the appropriate Language field for the label term and entering the appropriate description in the Long Label field. If you do not do this, Browse Master Browse (and Browse Maintenance’s Open Browse window, which is driven by Browse Master Browse) will not list the new browses in the other language environments because Browse Master Browse does not show browses that do not have a label master record for a given user’s language.
Description
Displays the description text associated with the label term entered in the Description Term field. If you leave the Description Term field blank or enter a label term that does not yet exist, you must use Label Master Maintenance (36.4.17.1) to enter the description.
User IDs/Groups (Optional)
Specifies a user or group ID to restrict editing permissions for this browse. Only those users authorized can edit the browse or use the generated view to create browses. To allow access to all users, leave this field blank.
Value-Returned Column (Optional.)
Specifies the column from the query grid whose value you want returned when the user double-clicks a row in the browse or lookup.
Filter By Current Domain
Applies the global_domain filter to the primary table (parent table) for the browse (for example, pt_mstr.pt_domain = global_domain). Joins tables on their domain fields where appropriate (for example, so_mstr.so_domain = sod_det.sod_domain for a browse containing so_mstr and sod_det in the definition). These changes appear in the Join Phrase field in the vue_mstr table of the Browse Maintenance database schema.
Current Entity Only
If the Filter by Current Domain check box in the Header Data tab is selected, you can then select Current Entity Only to filter the browse by the current entity. If the Company table from the Financials schema is present in the definition, the Company.CompanyCode is filtered by the current_entity global variable (for example, Company.CompanyCode = current_entity). The Enterprise Financials schema is highly normalized and thorough knowledge of the schema is required to create definitions against it. In order to create legitimate browses (that is, limiting the results to the current domain and entity), the Company table must be included and joined (on Company_ID) appropriately. When selected, only records for the current domain and entity will be included in the result set. This check box is only applicable for QAD Enterprise Applications – Enterprise Edition and is not displayed in Standard Edition.
Power Browse.
Specify the browse to be a power browse. (A power browse is a browse that can be run from the menu.)
Look-up Browse.
Specify the browse to be a look-up browse. (A look-up browse is a browse run as a look-up from a field.)
Note: The Power Browse and Look-up Browse check boxes duplicate the function of the CHUI fields, allowing a definition to only be used as a browse and/or lookup in CHUI. However, it is important to note that in the QAD .NET UI no such distinction exists. A definition can be used as either a Browse or a Look-up regardless of this Browse Type setting in the database.
Right-click the Header Data tab to include the Local Variables, Pre-processor Commands, Post-processor Commands, and History tabs.
The Pre-Processor Commands and Post-processor Commands tabs are available only for backwards compatibility with browses defined using the Character UI. These tabs provide a way to enter Progress 4GL code that can run either before (pre-processor) or after (post-processor) the browse runs. You do not need to use these tabs when creating a new browse using the QAD .NET UI.
The History tab displays revision history for this browse.
Click Save to save the browse. When you save a browse from Browse Maintenance, the system does not save the browse source code .p files. The system only generates the .p files automatically when you save a browse from Browse Maintenance in Terminal mode. However, you can generate the .p files using the Browse Generation Utility (36.25.70), which allows you to generate the .p files by entering the browse name. The system writes the files to the working directory of the Connection Manager scripts, which is the same as for reports. In a default installation, this directory is where the /com directory is located.
When you save a browse definition to the database, an attempt to run the browse is made to validate the definition after the definition is saved to the database. The attempt to run the browse can identify both definition errors and performance problems. The Save dialog box includes a progress indicator so you can get an indication of the browse’s performance. If the performance is poor, you can cancel the attempt to run and validate the browse by clicking the Cancel button in the Save dialog box. After clicking Cancel, you can undo the save of the browse definition to the database. Click Yes to remove the definition you have just saved and restore the browse definition to the previous definition. Click No to save the new browse definition in the database even though it was not validated.
Modifying a Browse
To modify an existing browse:
1 Launch Browse Maintenance (36.20.13).
2 Click the Open icon or enter Ctrl+O.
The Open Browse window is displayed.
3 From the Open Browse window, double-click on the browse you want to modify.
If you know the name of the browse you want to open, you can click the Browse Name or <Unspecified> menu labels, enter the browse name, and then press Tab or Enter to display the browse.

Browse Open Shortcut
You can also use the Up and Down arrow keys to scroll through browse names. For example, to retrieve a browse whose name begins with ‘ad’, enter these letters in the Browse Name field, and press the down arrow key to scroll through the browse names that begin with those letters. The system prompts you if you enter an incorrect browse name, but does not attempt to load a browse whose name does not conform with the xxNNN name format.
You can add fields and table joins to existing browses, and edit current field properties.
In the query grid area, you can view and modify the following values: Query, Header Data, Local Variables, Pre-processor Commands, Post-processor Commands, and History.
Important: Only a user specified in the UserID/Groups field can access a browse in Browse Maintenance ( .NET UI mode). If you have not been specified in UserID/Groups, you can run the browse but cannot open the browse in Browse Maintenance.
Deleting a Browse
Use Browse Master Browse (36.20.14) to view all the browses in your system.
To delete a browse:
1 Click the Delete icon.
2 The system prompts you to confirm. Once you delete the browse, you cannot undo the delete.
3 Click OK to delete the browse.
Browse Maintenance Menu Options
The GoTo and Actions menus on the Browse Maintenance menu bar provide additional maintenance functions.
GoTo
Use the GoTo menu to select the following related maintenance activities:
Browse Link Maintenance
Browse URL Maintenance
Drill Down/Lookup Maintenance
When you select one of the activities, the current browse is opened in the new maintenance menu.
Actions
The Actions menu has the following options:
Import
Export
Delete Multiple Browses
Import
To import a browse, open Browse Maintenance and choose Actions|Import (shortcut: Ctrl+I). Use the Input File field to specify the location and filename of the browse data you want to import. The browses you have selected are listed in the Available pane.
From the Available pane, select a browse by clicking on it and then click right angle bracket (>) button to move the browse to the Selected pane. Note that you can select multiple browses by using the Ctrl key and can place all the browses in the Selected area using the double angle bracket (>>) button.
Importing includes the browse and view data for the browse, but you can specify whether to include associated browse data in the Associated Data pane, which includes check boxes for including the Drill Master, Field Help, Program Information, Label Detail, Procedures, Source Detail Data, and URL Data.
If you are importing a browse that has the same name as an existing browse, specify whether you want the system to replace the existing browse with the one you are importing by choosing the Overwrite Existing check box in the Options pane. Finally, click the Import button.
Click the Name, Description, or User IDs/Groups column headings to sort by that column.

Browse Import
An imported browse includes all the labels for languages supported by the system, not just the ones for the user’s current language. If the browse includes labels for languages that are not defined in the system, a warning message is included in the system log file (“WARNING: The Language language for the Label Term label term does not exist in the target language. Label not imported for this language”).
Export
To export a browse, open Browse Maintenance and choose Actions|Export (shortcut: Ctrl+E). An Export menu displays, listing the browses and their associated data.
Use the Output File field to specify the location and filename of the browse data you want to export.
By default, the location is C:\Documents and Settings\username\Application Data\QAD\Shell\version\qad.plugin.services\ BrowseMaintenance, and the filename is your user ID followed by a numerical string and then the .brwx extension.
From the Available pane, select a browse by clicking on it and then click right angle bracket (>) button to move the browse to the Selected pane. Note that you can select multiple browses by using the Ctrl key and can place all the browses in the Selected area using the double angle bracket (>>) button.
Exporting includes the browse and view data for the browse, but you can specify whether to include associated browse data in the Associated Data pane, which includes check boxes for including the Drill Master, Field Help, Program Information, Label Detail, Procedures, Source Detail Data, and URL Data. Finally, click the Export button.
Click the Name, Description, or User IDs/Groups column headings to sort by that column.

Browse Export
Note: Prior to QAD .NET UI 2.9.5, when a browse was exported using Browse Maintenance, the labels used in the browse were included for all the supported languages. However, when imported, only the labels for the user importing the browse were included with the imported browse. Starting with QAD .NET UI 2.9.5, an imported browse includes all the labels for languages supported by the system, not just the ones for the user’s current language. If the browse includes labels for languages that are not defined in the system, a warning message is included in the system log file (“WARNING: The Language language for the Label Term label term does not exist in the target language. Label not imported for this language”).
Delete Multiple Browses
To delete one or more browses, open Browse Maintenance and choose Actions|Delete Multiple Browses (shortcut: Shift+Delete). A Delete menu displays, listing the browses and their associated data. From the Available pane, select a browse by clicking on it and then click right angle bracket (>) button to move the browse to the Selected pane. Note that you can select multiple browses by using the Ctrl key and can place all the browses in the Selected area using the double angle bracket (>>) button. Finally, click the Delete button. Deleting will remove the browse and view data along with the associated data.

Multiple Browse Delete
Browses are stored in an XML-based file format with the .brwx file extension.
Security
The ability to export, import, and delete browses should be limited to authorized users. The client-session.xml file (located in TomcatInstallDir/webapps/qadhome/configurations/ SysEnv/) now includes a setting for authorizing access to the import, export, and delete features. A new <DotNetBrowseMaintenanceUtilities> element includes a <Utility> element whose attributes specify authorization. The format is as follows:
<DotNetBrowseMaintenanceUtilities>
<Utility name=name enabled=boolean authorization=users></Utility>
</DotNetBrowseMaintenanceUtilities>
Where name can be "Import", "Export", or "MultipleDelete", enabled can be "true" or "false", and users can be "*" for all users or some list of user IDs.