Graphical query designer
General presentation
The graphical query designer features a function that is used to create the inquiry screens used to display the results of the queries run on the database. It operates by temporary extraction of the data in a table, then by running an inquiry on this table. The inquiry can then be made at several levels of detail, defined by successive page breaks.
The structure of this temporary table enables each user to keep the results of the last query run on the database (unless it is a shared query). Using this functionality implies three different phases:
- definition of the query by this function,
- launch of the query (either using the Execute button or using the inquiry function and then the data refresh request).
- inquiry of the query if it has already been executed.
A query can be formed from table fields or expressions.
Joins between tables are determined automatically from the dictionary, but is is possible to define them explicitely by drag-and-drop from the field of one table to another. As a preliminary condition, the destination field must belong to a key.
Let us underline the existence of two additional tools: An equivalent query tool to the present one, but in grid mode, and an SQL query tool going through identical inquiry screens but whose purpose is to design queries based on the SQL language.
Management of the interface
The query creation field is comprised of a floating pallet, a design area for the template and another area to place the selected fields.
Floating pallet
It contains the following buttons:
- Table: Opens a selection list to add a table.
- Expression: Opens the formula wizard in order to add an expression.
- Erase: Reinitializes the query.
- Codes: Checkbox to display the codes of the fields, in addition to the descriptions.
Design area for the template
The tables
The added tables are represented with their joins in this design area.
To add a table, click on the "Table" button of the floating pallet.
The possible actions on a table are:
- Deletion by clicking on the cross in the upper right corner of the table. Warning, a table can only be deleted if all its links have been deleted and all its fields have been removed from the area where said fields have been placed.
- Decrease/Increase via right-click on the button located to the left of the cross.
![]()
- Moving using the title bar or the lower bar.
- Resizing of the table by means of the grip button in the lower right hand corner of said table.
Joins
The joins that have not been created automatically can be created by drag-and-drop from the source table field to the target table field. A left outer join is then created.
Clicking on a join displays a menu used to change the join type (left outer or inner join) or delete it.
Background
A drag-and-drop action to a free space in the design area makes it possible to reposition this space. Double-clicking is used to reposition the design area with respect to its origin.
![]()
Selected field location area
The area where the selected fields are located is used to:
- View the fields in the form of thumbnails,
- Modify the order and properties of these thumbnails (sort, cumulation, ranges, visibility),
- Manage the expressions,
- Manage the query breaks.
Add a field
To add a table field, it is necessary to double-click on it or to perform a drag-and-drop action to the selected field location area.
Add an expression
To add an expression, it is necessary to click on the "Expression" button of the floating pallet.
Edit an expression
Click on the description of the expression to display the window of its properties.
Modify the properties of a thumbnail
Click on the icons to modify the values of the properties. A faded display specifies a negative value (for instance: not sorted).
![]()
Meaning of the icons from left to right: Visible, sort, cumulation, range entry
Delete a thumbnail
Click on the cross in the upper right hand corner of the thumbnail.
Move a thumbnail
Click on the grip in the upper part of the thumbnail and move it without releasing pressure on the mouse button, then release on required position. Thumbnails can only be moved on a similar level.
Create a break level (group)
Click on the thumbnail grip, a menu appears with different descriptions. Select "Create a group" to put the thumbnail at the top of a new group.
Move a thumbnail to an existing break level
Click on the thumbnail grip, a menu appears with different descriptions. Select "Group N" where N represents the group level, to move the thumbnail to the bottom of the selected level.
Prerequisite
Refer to documentation Implementation
Screen management
The definition of a query is performed on several tabs but only the first one is mandatory.
Header
This section provides information to identify the query and some parameters of a general nature.
The following fields are present on this tab:
Code (field COD) |
This code is used to identify a request. |
Description (field INTIT) |
Use this field to assign a description to each record. |
Short description (field INTITSHO) |
This title, which describes the record, is used in some screens or records when there is not enough space to display the long title. |
Tab Fields
This tab is used to define and regroup the information to be edited thanks to a visual editor.
Using all the information defined in this editor, the query designer specifies a query on tables linked by join conditions. Thus, in simple cases, it is not necessary to complete the next tabs.
The following fields are present on this tab:
Block number 1
Active (field ENAFLG) |
Select this check box to activate the current record. Disabled records keep their content and setup but cannot be used by recalling their code:
The authorizations for a given function can prohibit the creation of an active record. In this case, the check box is disabled by default. It can only be modified by an authorized user or through a signature workflow. |
Block number 2
field CLBFL |
Tab Advanced
Entering this tab is not mandatory. It is used to specify:
- criteria related to the data presentation (page numbering, report used, etc.).
- additional selection criteria.
- specific join conditions.
The join conditions are useful in the two following cases:
- if the automatic join algorithm does not work. This case is easy to recognize since an error message is displayed upon query validation. Sometimes it is sufficient to add a link to one of the tables whose links are not described in the dictionary to solve this case (the definition of the other links remains automatic).
- if the join algorithm links tables in a way that differs from what was expected. As a matter of fact, in complex cases, several links may exist between tables. However, the algorithm stops when the first links is found. In order to verify if the join is in conformity with what was expected, it is possible to use the button Infos / Links, which gives the details of found links.
The following fields are present on this tab:
Block number 1
Number of lines (field NBRLIG) |
Used to define a logical number of lines by page in the inquiry screen generated by the query designer. If this number of lines exceeds the number of physical lines that can be displayed, a scrolling bar appears on the righthand side of the grid. Buttons located in the upper part of the screen will enable navigation between logical pages (view next, previous, last, first page). |
Maximum lines (field MAXLIG) |
The maximum number of lines corresponds to a query parameter (maxrows) that stops the search once the number of lines meets the conditions that have been found in the database (these lines will then be sorted, but the database does not guarantee that the N lines found are the first N in the sort order). This represents an optimization used to limit the database load. |
No. of fixed columns (field NBRCOL) |
Makes it possible to fix the first x columns of a grid in the case of horizontal paging. |
Maximum times (field MAXTIM) |
Allows the stopping of the search after this period of time. (expressed in seconds) This makes it possible to avoid waiting too long a time, namely in the case where a new query is being set up. Note: Contrary to the maximum number of lines, this information is not transmitted to the data base. The maximum time can be exceeded if the duration of the inquiry is too long. |
Report (field RPT) |
It defines the code of a report that will be associated with the File / List function from the query inquiry. If this is not entered, the report ALISTE is used, which will submit a default page format. It is possible to duplicate this generic report (in principle it will then only be necessary to modify the page format) to create reports perfectly defined for the query thus defined. The report code entered here can be associated with a set of print codes via the dedicated function. |
Grid Selections
Selection criteria (field SEL) |
Used to enter selection criteria, which are logical expressions applied to table fields, and that can include constants, functions and operators. Only the lines in the table that meet these conditions will be extracted. The formula editor is used to simplify the writing of such expressions. |
Grid Links
Link expression (field LNK) |
It is necessary to define here the links that have not been defined in the dictionay or which have to be used in priority. The link structure must correspond to the key of the file to be linked. It must have as many fields separated by semi-colons as key parts. In effect, the exact syntax is the following: [F:ABV1]CLE=expression1 ; expression2..., where:
From the database perspective, this syntax defines left outer joins. It should be noted that a second syntax enables strict joins to be created (which can be interesting from a performance point of view). A tilde (~) is then added to the syntax which becomes: [F:ABV1]CLE=expression1 ; expression2... |
Tab Access
This tab is used to define the access conditions to the query and the extracted data.
The following fields are present on this tab:
Query type (field ALLUSR) |
Used to manage the display of a query in inquiry mode, with the following behaviors:
|
Group (field GRP) |
Used to make a classification criterion available for requests. |
Access code (field ACS) |
This access code makes it possible to prohibit access to the current record for some users. If the field is populated, only users that have this access code with read access rights (and write access rights respectively) can view (or with write access rights, modify) the record. The execution right controls who can execute the query in question (by refreshing the query or by modifying the parameters and then re-running it). |
Object (field OBJLNK) |
Used to determine the authorization filters applied to the forming of the query. These filters are the filters by site, by role and by access code. The filtering principles are the following:
This of course supposes that the table on which the filters are carried out is part of the generated query. What is meant here is the table containing the access code and site code fields, and, when necessary, the field defined by the roles assigned to the user. This is not necessarily the main table in the query: for instance, a query on document lines can be filtered with respect to authorizations given for the fields of tables linked to the document header. Warning, these filters are only applied during the running of the query and not during inquiry. This is important if the query is shared, for instance, or if the filters by site for a user have changed between the time when the query has been calculated and the time when it is viewed. |
Function (field FCTLNK) |
Used to link the authorizations to access the query with those authorizations granted on the function. The principle is as follows: upon entering the query, it is checked that the linked fucntion is authorized to the user (for at least one site, if the authorization on said function is granted by site). This is checked only in the case when this query is not shared. In effect, if the query is shared, it is admitted that the authorizations of the person that run the query are applied and shared with all those that have the right to view it. It is therefore necessary to be very careful when defining the authorizations of the shared queries if they concern sensitive data. This is done using the access code located in this tab. |
Tab Graphic
This tab can only be entered if a graphical representation is available for the query. The way the data are displayed on the graphic is then defined.
The following fields are present on this tab:
Block number 1
Representation (field REPGRA) |
This indicator defines the fashion in which the representation of the data will be made in the screen. The possibilities offered are as follows :
|
field OPTGRA |
Used to organize the relationship between the character and the graphic, when the presentation mode for the data allows both. According to the case :
|
Block number 3
field IMAG |
Image explaining the information previously entered. |
Graph
Type (field TYPGRA) |
This field is used once there is more than one numeric value in the grid that is likely to be presented in a graphical form. It can take one of two values :
|
Representation (field FSHGRA) |
When several series are presented in the graph (provided that the presentation of all the series is identical and is not by sector type), it is possible to specify how the series values are combined in the display, by entering the following value :
|
Default graph (field DEFGRA) |
Defines the graphical representation used for the data to be presented (from the choices Bars, Lines, Area, Sectors). An image is displayed as a function of the choice made illustrating the type of presentation obtained. If only one series of values is available, the graphical representation is by default fixed by this parameter. If several series of values are presented, it is possible to mix the presentation modes (one series in the form of bars, another in the form of lines for example). In this case, each series of values is represented as a function of the field Representation located in the grid of fields :
When used, if the representation of the series is homogenous (that is there is only one series in the graph), there is a graph type selector for the user to select a different mode of presentation. |
Block number 4
Specific Buttons
Validate |
This button generates a processing associated with the request as well as the dedicated inquiry screen. This validation is linked to the saving of a record, but it is possible to independently launch it if for example a request has been transferred by copy. |
Copy | This button is used to copy the record definition from or to another folder. |
Execute | Is used to execute the current request. The execution triggers the update of a temporary table and links to the request display function, which is used to view the detail of the movements, but also to successively aggregate at the different break levels defined. |
Display |
Error messages
In addition to the generic error messages, the following messages can appear during the entry:
Too many sort criteria |
Too many ranges |
Too many totals |
The limits are exceeded in the request. The number of sort criteria is limited to 8 and the number of ranges and totals is limited to 10. |
Table not defined |
A calculation formula has been used in an expression that includes the fields for a table that is not linked. |
xxx: Non existent table |
yyy: Non-existent field |
The table or the field does not exist in the dictionary. |
Index incorrect |
A field is indexed with a value that exceeds the dimension of the field. |
Links impossible |
The links between the tables could not be established from the dictionary. Either there is an error in the request, or it will be necessary to specify in a detailed fashion the links in the Advanced tab. |
This field has already been selected. |
An attempt has been made to add a field in the selected fields, but this field already exists. |
Action unknown |
The flash component has sent an action not managed by the supervisor. |
Links impossible The fields must be of the same type |
It is not possible to set up links between table fields of a different type. For instance: a numerical field cannot be linked to an alphanumerical key field. |
Link impossible. Key component already entered |
Whenever a link has been set up with the key of a table, links need to be set up with all parts of this key This message is displayed if an attempt is made at setting up a link on a field that does not belong to this key. |
Link impossible. Existing key incomplete |
The link has not been defined on all the fields of the key. |
Link impossible. Non-existent key |
An attempt has been made to set up a link on a field that does not belong to a key. |
A least a description-type and a value-type field is required to use this graph |
When the "Graphical representation" field is activated, one field among the selected fields needs to be selected for the graph titles, and at least another one for the graph calculation. |
Data type not managed |
It is not possible to use a clob (text file) type or blob (image file) type field in the expressions of the selected fields. |
Tables used
Refer to documentation Implementation