The Reports Editor (smoReportDesigner)
Definition
The reports editor (smoReportDesigner) is a report generator used to define reports (e.g. work orders, lists, etc.) to be printed using forms and views.
EndDefinition
Each report is made up of a set of objects such as tables, names, data from the main table associated with the report and linked tables. These objects are formatted using graphic elements (borders, lines, etc.) to improve readability and are placed in sections:
- Report title, defined in the ReportTitle section.
- Data from the main table of the report or from tables linked to the main table, displayed using the MasterData and DetailData data sections.
- Title and column headers in tables displaying records from the DetailData section defined using the GroupHeader section.
- Information in the report page footer defined using the Footer section.
Example
See other examples available in export files
Purchase Order
![]() |
|
![]() |
View of the editor |
Notes
- The smoReportDesigner tool is shipped with the standard
solution. It can be found in the <Easyvista>\tools\servers folder (Note: <Easyvista> identifies the EasyVista folder on your application server) and includes the following:
- The smoReportDesigner.exe executable file
- The smoReport.ini configuration file that should point to the application server with the port number of the smoServer service
- The Qtinf70.dll library
- Access to the smoServer service is required.
- Two standard reports are shipped with
: Purchase Order and Equipment List, configured to be called from the Order form and the Equipment form.
- Reports are stored in the C_REPORTDESIGNER table in the EVO_CONFIGaccount configuration database.
- The smoReportDesigner interface is always displayed in English, regardless of the current user's language preference.
- To access smoReportDesigner, you must log in using an
account. Connection settings such as the Account and Login are stored in smoReport.ini. The connection settings you use for the initial login will be proposed by default when you subsequently log in.
Caution
- We recommend that you use smoReportDesigner only if you are very familiar with the
data model and possess in-depth knowledge of relational databases.
Best practice
- To define a new report, download one of the example files and adapt it to your requirements.
- Define the report on the test platform prior to installing it on the production platform using an Export/Import between the two platforms.
See the procedure on How to deploy a report.
- Define the report in a reference language and then translate the objects into the languages used in
.
See the procedure on How to define a multilingual report.
Description of the reports editor
The editor is divided into several zones:
- The Workspace (1) where different objects used by the report are placed
- The Data Tree (2) used to select fields, variables and functions
- The report tree structure (3) that displays the list of objects by section. When the report contains several pages or sub-reports, these are available in tabs.
- The Properties Window (4) that varies depending on the selected object
- The menu bar (5)
- The toolbar (6)
- The objects toolbar (7)
Workspace
This contains all sections defined in the report.
- Click and drag a section to move it to the workspace.
- Click
to display a preview of the final report in its print layout.
Data Tree
This contains the list of tables that can be used by the report.
- To display it, select View > Toolbars > Data Tree in the menu.
- Click
next to a table to display its list of fields. Next, click and drag the field you want to the workspace.
- The main table of the report is shown at the top of the Data Tree.
- Each table is linked to the Master and Detail tables.
- Master tables: All tables containing the details of a key (mainly reference tables).
For a supplier, this could be details on the country or location in reference tables.
==> Main table= AM_SUPPLIER; Master tables = AM_COUNTRY (COUNTRY_ID key), AM_LOCATION (LOCATION_ID key) - Detail tables: All tables linked to a Master table that contain lists of records related to one of its records.
For a supplier, this could be a list of goods or orders in linked tables.
==> Master table = AM_SUPPLIER; Detail tables = AM_ASSET (SUPPLIER_ID key), EP_BILL (SUPPLIER_ID key)
- Master tables: All tables containing the details of a key (mainly reference tables).
Properties Window
This displays all properties for the object selected in the workspace.
- To display it, select View > Toolbars > Object Inspector in the menu or use the [ F11 ] keyboard shortcut.
- The most frequently used properties of each object can also be accessed using the object's contextual menu.
- You can view contextual help on the selected property at the bottom of the window.
See Main properties of sections and fields.
Toolbars
- To display them, select View > Toolbars in the menu.
- Four toolbars are available:
- Standard toolbar: Standard tools used in the report
- Text toolbar: Text formatting tools
- Frame toolbar: Tools for defining borders and frames
- Alignment Palette toolbar: Table formatting tools
- Standard toolbar: Standard tools used in the report
Objects toolbar
Tool | Description |
---|---|
![]() |
Selection tool
|
Tool for scrolling
|
|
![]() |
Zoom tool |
![]() |
Inserts a Text object.
|
![]() |
(Note: Active when the current object is a Text object) Reproduces the formatting of the current Text object.
|
![]() |
Inserts a section.
|
![]() |
Inserts a name.
|
![]() |
Inserts an image in one of the following formats: .BMP, .JPEG, .ICO, .WMF, .EMF.
|
![]() |
Inserts a sub-report linked to a new page.
|
![]() |
Inserts a horizontal or vertical line.
|
![]() |
Inserts a system variable (e.g. date, time, page number, etc.) or an aggregation function (e.g. average, sum, etc.).
|
![]() |
Inserts a geometrical shape.
|
The Memo editor
- To open the Memo editor of an object found in the workspace, right-click the object and select Edit from the contextual menu.
- To allow HTML tags, you should enable the AllowHTMLTags property in the field (True option).
Tool | Description |
---|---|
![]() |
Access the Variables editor. |
![]() |
Inserts an aggregation function. |
![]() |
Used to customize the format of fields based on type (e.g. text, number, date, etc.) using the Display Format property. |
![]() |
Indicates if character strings should be wrapped (icon is enabled) or if they should remain in a single line (icon is disabled). |
![]() |
Cancels the modifications made and closes the editor without modifying the current object. |
![]() |
Saves the content of the editor and assigns it to the current object. |
Sections
A section is an object container, e.g. text, data, image, etc.
- To add a section, click
in the objects toolbar.
- Each section is made up of a title and a set of objects.
- Sections are organized in a hierarchy in the workspace based on their type. This is usually as follows:
List of types of sections
Type of section | Description |
---|---|
ReportTitle | Section containing the title of the report, printed once only at the top of the report.
|
ReportSummary | Section that displays summarized information, aggregation functions, etc. It is printed only once at the end of the report. |
PageHeader | Section defining the header printed at the top of each page of the report. |
PageFooter | Section defining the footer printed at the bottom of each page of the report. |
Header | Section defining the header printed at the top of following section. |
Footer | Section defining the footer printed at the bottom of the previous section. |
MasterData | Data section built using the main table of the report (data level 1). |
DetailData | Data section built using tables linked to the main table (data level 2). |
Subdetail Data | Data section built using tables linked to the main table (data level 3). |
Data xth level | Data section built using tables linked to the main table (data levels 4 to 6). |
GroupHeader | Mandatory section when a MasterData or DetailData section defines groups of records.
|
GroupFooter | Optional section linked to a MasterData or DetailData section displaying groups of records.
|
Child | Section displaying a field or an item of information immediately after its parent section (MasterData or DetailData).
|
ColumnHeader | Section containing the column headers of the GroupHeader section preceding it. |
ColumnFooter | Section containing the column footers of the GroupFooter section preceding it. |
Overlay | Section printed in the background of each page in the report. |
Procedures
How to use SmoReportDesigner
To define a new report, download one of the example files and adapt it to your requirements.
1. Run smoReportDesigner.exe and log in using an account. The list of existing reports will appear.
Note: If an Invalid Login error occurs, open the smoReport.ini file and check the values of the Server_Host and Server_Port variables. The values must be identical to those in smoServer.ini.
- Select the report you want or click [ New Report ] to create a new report.
- Select the main table used for the report. It is associated with the MasterData section. The Data Tree will display a list of the linked fields and tables.
- Enter the title of the report in the reference language. Note: If you want to modify it subsequently, go to the ReportTitle section and click
.
2. Define the sections of the report.
- Click
and select the type of section you want.
- Add the required fields in the MasterData and DetailData data sections by clicking and dragging them from the Data Tree. Note: To insert fields from a view, click [ CONNECT VIEW ] at the bottom of the Data Tree.
- To replace one of the fields in a section with another field:
- You can click and drag the new field from the Data Tree.
- You can also select the field in the workspace and open the drop-down list. All available fields from the table associated with the section will be displayed.
- Add the names of the columns to the data sections:
- Click
and select the ColumnHeader section.
- Place the section above the associated data section.
- Click
. Place the object in the section and enter the name using the Memo editor.
- Click
3. For each object placed in the workspace:
- To edit the properties of a field, right-click to display the contextual menu or use the Properties Window.
- To increase or reduce the size of an object, click the object's move handle
and resize it.
- If the title is hidden by the resized object, select Send to back from the contextual menu of the resized object to send it to the background and display the title.
4. You can filter or sort the records by selecting Report > Filter Order in the menu. Note: Filters and sort orders can only be applied to the main table fields.
5. To concatenate several fields in the report, double-click each field to be concatenated. In the Memo editor, create the field you want by copying and pasting each field to be added. Next, delete the individual fields.
Concatenation of the ZIP_CODE and CITY fields:
6. Click to preview the report.
How to find out if you can access the smoServer service
1. On the application server, open a command prompt window and enter the following command to test the connection to the service:
telnet SERVEUREZV 25238
2. If a black screen appears without any error message, then the smoServer service is available and you can use smoReportDesigner.
3. If this is not the case, then you should ask the administrator to open the port.
How to attach a report to a form or view
1. If required, import the new report to by selecting Administration > Import/Export > Import in the menu.
2. Select Administration > Access Management > User Profiles in the menu.
- In the Modules section, click
next to the module to which the report should be attached.
- Select the Assignment of Reports box and click
to save the profile.
3. Open the form or view where you want to attach the new report.
- Run the Reports Management wizard.
- Click
and select the report. Click [ FINISH ]. The new report will be available in the Print Reports wizard of the form or view.
How to deploy a report
1. Export the report from the test database.
- Log in to the
test database.
- Select Administration > Import/Export > Export Report Designer.
- Select the report you want and launch the Export wizard.
- Once the export has been performed, click the link called Click here to download File.
- In the Upload File dialog box, click [ SAVE ] and specify the folder where the file should be saved. Click [ CLOSE ].
- The file extension will be exp and its name will start with Export_C_REPORTDESIGNER__XXXXXX (where XXXXXX represents the name of the report).
2. Import the report to the production database.
- Log in to the
production database.
- Select Administration > Import/Export > Import.
- Select the file corresponding to the exported report and click [ UPLOAD ].
How to define a multilingual report
- You select the reference language of the report when you create the report. This is displayed in the Text toolbar.
- You should adapt the report by translating the report title, column names and translatable fields with the _<LANG> suffix into the languages used in
.
AM_COST_CENTER.COST_CENTER_EN field: English name of the cost center
AM_COST_CENTER.COST_CENTER_FR field: French name of the cost center
- The language suffixes are as follows: EN (English), FR (French), IT (Italian), SP (Spanish), GE (German), PO (Dutch).
Follow the procedure below for all languages used in .
1. Select the new language of the report from the drop-down list in the Text toolbar.
2. Select File > Report Name in the menu and enter the report title in the new language.
3. In the workspace, right-click each translatable object and select Edit from the contextual menu. In the Memo editor, enter the name in the new language and modify the _<LANG> suffix.
4. Repeat the same procedure for the fields in the GroupHeader sections. Right-click the section and select Edit from the contextual menu. Select the field associated with the new language from the drop-down list in Data Field.
Description of a few functions
Tree View
To select the tree level to be displayed by default, use the SMO_TREE_GET_PATH function.
- Group equipment in the first tree level:
- Display only levels 2 and 3 for locations:
- Display all location levels from level 2 onwards and exclude the root:
Location
To retrieve the address associated with a location level, use the SMO_GET_LOCATION_INFO function.
Display the postal address of a maintenance site: 71 Stevenson Street, Suite 400, San Francisco, CA 94105
SMO_GET_LOCATION_INFO(<AM_ASSET."LOCATION_ID">.'STREET_ADDRESS_2')
SMO_GET_LOCATION_INFO(<AM_ASSET."LOCATION_ID">.'ZIP_CODE')
Date function
To convert Date fields to the current user's local time zone, use the RTZCONVERT function.
Convert the date on which an asset was purchased
Display Format property
The Display Format property is used to customize the format of fields based on type (e.g. text, number, date, etc.).
To display the dialog box, right-click the object you want and select Edit from the contextual menu. In the Memo editor, click .
Variables
- Variables are arranged by category and must have a unique name.
- They can be used in a formula for all fields in the report.
- A list of system variables is available.
Automatically recalculate the tax inclusive total of orders using the Tax Rates variable. Display the order of order details using the Line system variable. Display the number of pages in the report using the TotalPages system variable. Display the print date using the Date and Time system variables.
1. Create the new variable.
- Select Report > Variables in the menu and click
(Note: If no category is defined, you must first create one using
).
- Click
and modify the default name of the variable.
- Enter its value in the Expression field.
- Click
to save. The new variable will be available in the Variables tab in the Data Tree.
==>
2. Associate the variable with the object you want.
- Right-click the object and select Edit from the contextual menu. In the Memo editor, click
.
- In the Variable tab, select the new variable.
- In the Data tab, select the field where you want to apply this variable. The Memo editor will be refreshed.
Aggregation functions
These include the following: SUM (sum), AVG (average), MAX (maximum value), MIN (minimum value), COUNT (count).
1. Right-click the object where you want to define an aggregation function and select Edit from the contextual menu. In the Memo editor, click .
2. Select Aggregate value. Specify the settings and click[ OK ]. The Memo editor will be refreshed.
==>
Main properties of sections and fields
GroupHeader section properties
AllowSplit: When all of the text cannot be printed on the current page because its length exceeds the space available at the bottom of the page, this indicates if the text can be printed across two pages (True) or if all of the text should remain grouped and printed on the following page (False).
Child: Name of the Child section associated with the current section.
Condition: Used to specify the break condition for the current section.
Font: Used to define the font style and attributes for the current section in the Font dialog box.
Height: Height of the current section in pixels.
KeepChild: Used to indicate whether the Child section can be printed separately from the current section (False) or not (True).
KeepTogether: When the whole of the next section cannot be printed at the bottom of the page after the current section, this indicates if the section can be printed across two pages (False) or if the whole section should remain grouped and printed on the following page (True).
Left: Align the current section to the left.
Name: Name applied to the current section.
Parent font: Used to indicate if the current section uses the same font as its parent, i.e. the report (True) or if it uses a specific font (False).
PrintChildIfInvisible: When the current section is not printed, this indicates whether the child section (defined in the Child property) should be printed (True) or not (False).
ReprintOnNewPage: When a group is printed across several pages, this indicates if the header should be printed on each new page (True) or only on the first page of the report (False).
StartNewPage: This indicates if the current section should be printed on a new page (True) or after the text in the previous section (False).
Stretched: Used to indicate if the objects in the current section should be stretched based on their content (True) or if they should keep their original size (False).
Tag: Used to assign a number to an object.
Top: Align the current section to the top.
Visible: Used to indicate if the current section should be visible in preview mode and printed in the report (True) or if it should always remain hidden (False).
Width: Width of the current section in pixels.
DetailData section properties
AllowSplit: When all of the text cannot be printed on the current page because its length exceeds the space available at the bottom of the page, this indicates if the text can be printed across two pages (True) or if all of the text should be displayed on the following page (False).
Child: Name of the Child section associated with the current section.
ColumnGap: Space between the columns in pixels.
Columns: Number of columns used to display data.
ColumnWidth: Width of the columns in pixels.
DataSet: Table applied to the current section.
DetailDataSet: Property used when designing the report.
Font: Used to define the font style and attributes for the current section in the Font dialog box.
FooterAfterEach: When a Footer section is defined, this indicates whether it should be repeated after every record in the current section (True) or not (False).
Height: Height of the current section in pixels.
IndexField: Parent key of the table associated with the current section.
KeepChild: Used to indicate whether the Child section can be printed separately from the current section (False) or not (True).
KeepHeader: Used to indicate whether the Header section can be printed separately from the current section (False) or not (True).
KeepFooter: Used to indicate whether the Footer section can be printed separately from the current section (False) or not (True).
KeepTogether: When all of the records in the current section cannot be printed at the bottom of the current page, this indicates if they can be separated and printed across two pages (False) or if they should remain grouped and printed on the following page (True).
Left: Align the current section to the left.
MasterDataSet: Property used when designing the report.
MasterField: Property used when designing the report.
Name: Name applied to the current section.
Parent font: Used to indicate if the section uses the same font as its parent, i.e. the report (True) or if it uses a specific font (False).
PrintChildIfInvisible: When the current section is not printed, this indicates whether the child section (defined in the Child property) should be printed (True) or not (False).
PrintIfDetailEmpty: When the content of the current section is empty, this indicates whether the parent section should be printed (True) or not (False).
StartNewPage: This indicates if the current section should be printed on a new page (True) or after the text in the previous section (False).
Stretched: Used to indicate if the objects in the current section should be stretched based on their content (True) or if they should keep their original size (False).
Tag: Used to assign a number to the current section.
Top: Align the current section to the top.
Visible: Used to indicate if the current section should be visible in preview mode and printed in the report (True) or if it should always remain hidden (False).
Width: Width of the current section in pixels.
Field Properties
Activate_HtmlTags: Used to indicate if the comment fields should display HTML tags (False) or just text (True).
Align: Used to define the position of the field within the section:
- baNone: Non-modifiable field placed when the report was created.
- baBottom: Field placed at the bottom of the section, can be moved horizontally.
- baCenter: Field placed in the center of the section, can be moved vertically.
- baClient: Field automatically resized to occupy the full height of the section.
- baLeft: Field placed on the left side of the section, can be moved vertically.
- baRight: Field placed on the right side of the section, can be moved vertically.
- baWidth: Field automatically resized to occupy the full width of the section.
AllowExpressions: Used to indicate whether expressions delimited using ExpressionDelimiters should be interpreted when the report is run (True) or not (False).
MyVariable = [1+2*(3+4)] ==> True option: displays MyVariable = 15: False option: displays MyVariable = [1+2*(3+4)]
AllowHTMLTags: In the Memo editor, this indicates whether HTML tags can be used (True) or not (False). Authorized tags:
<b> text in bold
<i> text in italic
<u> underlined text
<sub> text in subscript
<sup> text in superscript
<font color> font color
AutoWidth: Used to indicate if the object is automatically resized to the width of its content (True) or if it should keep its original size (False).
BrushStyle: Fill pattern of the current object, e.g. solid fill or hatch pattern, etc.
CharSpacing: Space between text characters.
Clipped: When the field contents cannot fit on one line, this indicates if only one line should be printed (True) or if all of the field contents should be printed on as many lines as required (False).
Color: Background color of the current object.
Cursor: Shape of the cursor when it moves over the field in preview mode.
DataField: In the DataSet table, field with which the current object is associated.
DataSet: Table with which the current object is associated.
DetailDataSet: Name of the parent table in the case of a linked table.
DisplayFormat: Display format of the field, e.g. number, date, etc.
ExpressionDelimiters: Characters used to delimit expressions in text. The property is taken into account when the value of AllowExpressions is True.
Font: Used to define the font style and attributes for the current object in the Font dialog box.
Frame: Used to define borders for the current object.
GapX: Horizontal indent for text in the current object in pixels, moves the text to the left or right.
GapY: Vertical indent for text in the current object in pixels, moves the text to the top or bottom.
Halign: Align text horizontally (left, right, center, justified).
Height: Height of the current object in pixels.
HideZeros: Used to indicate, for a numeric field, whether the zero value should be displayed (False) or not (True)
Highlight: Used to modify the background color of the current object based on a condition:
- Active: Used to indicate whether the condition should be verified (True) or not (False) prior to applying the background color of the object.
- Color: Background color to be applied when the condition is verified.
- Condition: Condition applied to the object, e.g. <AM_ASSET_CHARACTERISTICS."DATA_1"> = '128'.
IndexField: Field that serves as a link to the DetailDataSet parent table in the case of a linked table.
Left: Align the current object to the left.
LineSpacing: Space between two lines of text in pixels.
MasterDataSet: Table with which the current object is associated.
MasterField: In the MasterDataSet table, field with which the current object is associated.
Memo: Used to display the Memo editor dialog box.
Name: Name applied to the current object.
ParagraphGap: Indent applicable to the first line of the paragraph.
ParentFont: Used to indicate if the current object uses the same font as the parent object (True) or if it uses a specific font (False).
Printable: Used to indicate if the current object should be printed (True) or only displayed in preview mode (False).
Rotation: Rotation angle applied to the current object.
ShiftMode: Used to indicate if the current object should be shifted when it is overlapped by another object:
- smAlways: Always shift the object.
- smDontShift: Never shift the object.
- smWhenOverlapped: Shift the object when another object overlaps.
StretchMode: Used to indicate the stretch mode of the object:
- smActualHeight (default): Display the object as defined during creation.
- smDontStretch: Display only the first line of the field.
- smMaxHeight: Display all lines of the field by stretching its height based on the length of the contents.
Style: Style applied to the current object among those defined in Report > Styles.
SuppressRepeated: When the values of the object are repeated, this indicates if they should be printed only the first time (True) or if they should be printed every single time (False).
Top: Align the current object to the top.
Underlines: Used to display lines under each field.
URL: URL of the current object.
Valign: Align text vertically as regards the current object, i.e. top, bottom or center.
Visible: Used to indicate if the current object should be visible in preview mode and printed in the report (True) or if it should always remain hidden (False).
Width: Width of the current object in pixels.
WordWrap: Used to indicate whether text is automatically wrapped (True) or not (False).