table top corner CapeSoft RightReports table top corner
table left side

 

table top corner   table top corner
table left side

 

RightReports header linked to CapeSoft home page

 

Buy

Download

Docs FAQ'S
Version version number GOLD
CapeSoft Software Copyright
View version change history

History

 

bullet  Main Accessories Page

bullet  CapeSoft Home

table right side
table bottom left corner   table bottom right corner

 

table top left corner Contents table top right corner
table left side
Getting Started

Adding RightReports to your Application (Jumpstart)

The Imported RightReports Procedures

Template Options

The Global Extension Template
The Editor Control Template
The Printer Control Template

Using the Report Editor

The Browse Window

The Update Form

The Report Structure List

The Graphic Report Editor

The Property Editor

The Print Window

Properties on the Properties Tab

A Note on Parent Files

Primary Sources

Secondary Loops

Calculations

Details, Headers, Footers and Forms

Controls

Advanced Report-Editing Things

Blocks in a Report

Functions and Variables in the Report

Printing Variable and Field Values

Built-in Keywords

Renaming Table Fields

AutoReporting Tips

Report and Table Access Issues

Excluding tables and Fields from the Files List

Preventing Users from Editing a Report

Preventing Access to Table Records

The Report Output

The Report Previewer

Importing and Exporting Reports

The RightReportsPrint Procedure

Printing to a PDF file

Printing to Word and Excel

Importing and Exporting

Importing and Exporting a RightReports Report

Importing Reports from a TXR File
Advanced: For the Enthusiastic Coder

 Embed points for the enthusiastic coder

Class Properties of interest

Files and Views in the Print Procedure

Last but not Least

Tips & FAQ

Support, Downloading and Purchasing

License & Copyright

History

table right side
table bottom left side   table bottom right side

 

table top left side Adding CapeSoft RightReports to your Application (JumpStart) table top right side
table left side

 

There is a completed example, in which all of the below steps have been followed, in your clarionx\3rdparty\examples\RightReports\abc folder.

Step  1: Install the latest versions of Draw, RightReports and Clarion FreeImage.

  • Note that you need Draw version 2.53 or later for RightReports to work.
  • Note that besides running the FreeImage install file,  you will also need to download the FreeImage DLL (http://www.clarionfreeimage.com/) and put this in your clarionx\3rdparty\bin directory.
  • Make sure that you pick the option to register the template for each of the three installs, if they are not already registered.
  • Note: There are two templates to be registered by the installer. The first is RightReports.tpl, and the second is editin.tpl. In some cases registration of the latter fails. If it does, you will get an "Unknown Template Type (EditInPlace) " type error when trying to open one of the example apps, or an app with the RightReportsUpdate procedure in it. To fix this, go to "Template Registry" under the Setup Menu and register editin.tpl in clarionx\3rdparty\template.

Note: You can get by without Clarion FreeImage, but it does very much limit the type of image files you will be able to use in your reports. In fact, you will only be able to use bitmaps.

Step  2: Import the RightReports Tables into your dictionary.

  • Open your dictionary in the Clarion IDE. 
  • Choose File|Import Text. (In Clarion 7, the import is buried on the dictionary toolbar in the '>>' button)
  • Go to your Clarionx\3rdparty\Libsrc folder.
  • Choose the RightReportsTables.txd file (for TPS declarations - Clarion 6 or Clarion 7) or RightReportsTablesSQL.txd (for Clarion 6 SQL declarations) or RightReportsTablesSQL.dctx (for Clarion 7 SQL declarations) and Open it.
  • Make sure you change the file drivers for the imported files (they all start with RR) to the one you are using.
  • If you are using an SQL backend, don't forget to fill in the Owner for each imported table (except RRImportASCII).
  • If you are using FM3 or FM2, don't forget to add the Version option (set to 1) under the Table Options for each imported table.
  • Save and close your dictionary.

Step 3: Import the RightReports Procedures into your app.

  • Open your application in the Clarion IDE. If this is a Multi-DLL application, then open your reporting DLL
  • Go to File|Import Text ...
  • Import the RightReportsFunctionsABC.txa or RightReportsFunctionsLegacy.txa file in your clarionx\3rdparty\libsrc folder (if your application is Multi-DLL, import this into your reporting DLL). For NetWebServerApplications, import the RightReportsWebServerFunctionsABC.txa.
  • See the section on Imported RightReports Procedures for more info on the imported procedures.
  • If you have xFiles added to this application, then you can import the Import and Export procedures into your application - by importing the RRImportExport.txa file (as per the above 3 steps).

Note: For NetTalk Webserver applications, its a good idea to create a desktop application with the RightReports windows in it that you can use to create, edit and test reports. So go through these steps first with a desktop app (if your webserver application does not have an existing desktop app, create a new blank one and go through the steps to add RightReports for that app as for a normal desktop app).

Step 4: Add the FreeImage, Draw and RightReports global extensions to your Single EXE app (see Step 4a for Multi-DLL).

  • Open your application in the Clarion IDE.
  • Click on the Global button.
  • In the Global Properties window, click on the Extensions button.
  • Click on the Insert button and select the Activate_ClarionFreeImage extension template.
  • Click on the Insert button and select the GloDraw extension template.
  • On the Options Tab of the Draw Global Template, tick the Activate DrawImage and Activate DrawPaint options.
  • Click on the Insert button and select the Activate_RightReports (Activate RightReports Functions) extension template.
  • If you want to be able to export reports to a Microsoft Word or Excel document, add the CapeSoft Office Inside global extension.
  • If you want to be able to preview PDF files (providing you have Clarion EE or abprpdf.inc/clw), add the Hyperactive global extension. Make sure you add the local extension to the RightReportsPrint procedure too.
  • Click OK and OK again.

Note: WebServer apps must have a PDF Global extension added (either the SV one or PDF-Tools or one of the other supported 3rdparty templates) - and don't forget to check the 'Enable Printing to PDF' on the RightReports Global Extension template.

 

Step  4a: Multi-DLL Applications

If you have a multi-DLL application and have added Draw to your Data DLL, the way to add the global Extensions is as follows:

  • Add the Draw Global Extension to the Data DLL, and on the General Tab, tick the Activate DrawImage and Activate DrawPaint options.
  • Add the Global Clarion FreeImage Extension to the Data DLL, too
  • Add the Draw Global Extension to your reporting DLL, and on the General Tab, tick the Activate DrawImage,  Activate DrawPaint and "Use Draw that is exported in another DLL" options.
  • Add the Global Clarion FreeImage Extension to your reporting DLL
  • Add the Global RightReports Extension to your reporting DLL
  • Make sure Generate All File Declarations (Global Properties | File Control Tab) is ticked in your Data DLL
  • If you want to be able to export reports to a Microsoft Word or Excel document, add the CapeSoft Office Inside globa extension to the reporting DLL.
  • If you want to be able to preview PDF files (providing you have Clarion EE or abprpdf.inc/clw), add the Hyperactive global extension to the reporting DLL. Make sure you add the local extension to the RightReportsPrint procedure too.

Step 5: Tick the Generate All File Declarations option for your app.

You can find this by clicking on the Global button and going to the File Control tab its the first checkbox. If you dont do this, RightReports will only pick up tables youve specified in the table tree structures of the procedures in your application, and you will hence be able to use only these tables in your reports at runtime. Ticking this option ensures that RightReports makes all the tables in your dictionary available to the end user.

Step 6: Fill in some of the Global Template Options.

There are three main things you probably want to worry about here:

 

Step 7: Call the RightReportsBrowse procedure from somewhere in your app.

This is a browse for all the reports that have been created in your program. Make sure you call the RightReportsBrowse procedure with parameter 0 for now, i.e. call RightReportsBrowse(0). If your application has a Frame, adding a Browse Reports option to one of the menus might be an idea.

For WebServer applications:

  • If you have a menu procedure, then add an item ('Reports') with a URL of 'RightReportsWebBrowse'.

  • On the RightReportsWebPrintOptions window in the NetWebForm Settings, set the URL on Cancel to the procedure's URL that calls the RightReportsWebBrowse.

 

Step 8: Add outputs to the Previewer window

Note: Existing apps (where RightReports was added to the app with version 1.58 or prior) require a re-import of the PrintPreviewer procedure in order to support this functionality. Import the RightReportsPreviewer(legacy or ABC).txa.

By default the previewer only outputs to the printer, but you can easily add additional outputs depending on what additional tools you own. The possibilities are (at this stage):

  • Print to Word using OfficeInside editable reports functionality (requires the addition of the OfficeInside Global Extension template)

  • Print to Excel using OfficeInside editable reports functionality (requires the addition of the OfficeInside Global Extension template)

  • Print to PDF using the SoftVelocity ABC PRN to PDF classes (requires the addition of the Report to PDFGlobal Extension template)

  • Print to PDF using the PDF-Tools classes (from docu-track). (requires the addition of the PDF-Tools Global Extension template)

Steps to implement:

1. Open the RightReportsPremier window in the window formatter.
2. Now populate the RightReports_PrintPreviewOutput control template (just a button) onto the window, next to the existing Print select button in the output group.

3. Right-click and select 'Actions'. On the general tab, select the Output to you would like to use (depending on which Global Extensions you have added to your application will depend on the options visible). On the extras tab (of the control properties) change the icon to something meaningful (like RR_PDF.ico,  RR_Excel.ico or RR_Word.ico)
4. Click OK and save your changes to the formatter window.

Do this for each output type you want to support in your report.

Step 9: Ok Go!

Compile and run your app - and take a look at the Using the Report Editor section of this doc for details on creating reports.

table right side
table bottom left side   table bottom right side

 

table top left side The Imported RightReports Procedures table top right side
table left side


You will notice that one of the steps explained above while adding RightReports to your application involved importing a number of procedures. Below we give a short description for each of these procedures.

  • RightReportsBrowse: This is the browse containing all the reports created in your application.
  • RightReportsUpdate: This is the Report Editor. Its the window that pops up when you choose to edit a report in the browse above, and is actually a form that updates the report tables.
  • RightReportsOverrideParentFile: This is a window that will pop up when you choose the edit the parent file of a Secondary Loop or Lookup.
  • RightReportsPremier: This is the built-in RightReports report previewer.
  • RightReportsPrint: RightReportsPrint is the procedure responsible for printing the report created by the report editor. There is a special section on RightReportsPrint giving more information.
  • RightReportsViewTextFile: This is the built-in RightReports report previewer for text reports.
  • RightReportsImportTXR: This imports the specified TXR file into RightReports. Users can then edit and print the imported reports as usual. See also the section on Importing and Exporting Reports.
  • RightReportsExport: This exports the specified report to an xml file. Users can the use the below procedure to import the report. This is useful for making reports mobile - for example, you could design the report on your end and then just email the exported xml file to a client, who can then import the report again. See also the section on Importing and Exporting Reports.
  • RightReportsImport: This imports a report from a specified xml file. See RightReportsImport above for more details. See also the section on Importing and Exporting Reports.
table right side
table bottom left side   table bottom corner

 

table top left side Template Options tlc
table left side

The Global Extension Template
The Editor Control Template
The Printer Control Template

The Global Extension

The General Tab

global general tab
  • Disable All RightReports Features: Use this for debugging.
  • Enable Web Server in PrintReport: If you have added NetTalk 4 to your application and want to be able to use RightReports with your web server, tick this option. Not fully supported yet.
  • Enable Printing to PDF: If you want RightReports to be able to output to a PDF file, tick this option. You need the abprpdf class files for this - if you have Clarion 6 Professional Edition, this is included.
  • Use HyperActive to preview PDF Files: If you have HyperActive Installed and added to your application, you can tick this and PDF files will be previewed using HyperActive.
  • Previewer: RightReports: Choose this option if you want the built-in RightReports Previewer to preview printed reports.
  • Previewer: ABC: Choose this option if you want the built-in ABC Previewer to preview printed reports.
  • Previewer: RightReports, ABC, IceTips, CPCS or Handcoded: You can also choose to use other 3rdparty report previewers. Depending on your choice, a new Tab may appear with options for that previewer, as is discussed below. See the section on The Report Previewer for more details on how to use these options.
  • Previewer selects output and prints:  If you want the previewer to select the output type (rather than the PrintOptions window) , check this checkbox. By default, the new PrintPreviewer will set this option automatically.
  • RightReportsPrint Proc: The procedure name to Print the report (usually RightReportsPrintReport)
  • Import/Export options (requires xFiles): Exported File Extension: The file to use to store the exported XML data for the reports. Program Identifier: the identifier to associate reports with this application.

The Previewer Tab

global preview tab

Depending on your choice of Report Previewer, a tab may appear with options for that Previewer. These are basically the options for that previewer as they would appear if you had installed and used that 3rdparty tool directly. Consult the documentation that came with that tool for more information on the available options. See also The Report Previewer for more details on how to install and use these 3rdparty report previewers.

The Data Sources Tab

global data sources tab All tables in your dictionary will be included and made available to users according to the Files Tab. If you would like to make other data sources available to users, such as queues and views, you need to fill in the details here. The insert window looks similar to the following:
global add data source

You are required to enter the Label of the data source, as well as a prefix (if it has one). For View's, you need to specify its primary source. For Queues, you will notice you can add Orders to the list provided. The idea is that you give each order a unique name and specify the fields in the queue to be used for this order.

Note that you can enter data sources here that are either declared globally (preferably threaded), or locally in the RightReportsPrint AND RightReportsUpdate procedures. The data sources need to be available to both of these procedures for the following reason: The Update procedure needs it in order to make it available to the user at run time. It needs the actual structure in order to add it to the list of data sources available to the user for report creation, to provide a list of fields, etc. There does not need to be data in the data source at this point. The print procedure, however, needs both the data structure as well as the data in order to print out the report.

We've placed this Tab on the global extension to prevent the need for you to enter this information twice (once for the update procedure, and once for the print procedure). Unfortunately this means that you have to type out the names of your data sources by hand, as global extensions do not allow you open the Fields Dialogue.

The Relationships Tab

 

global relationships tab Once you have entered your Queue and View data sources on the Data Sources Tab above, you can specify relationships for them on this here Relationships Tab. Since File relationships are determined by your dictionary structure, the idea is that you use this space to specify relationships between queues, or relationships between a queue and a file.
add relationship tab

You need to specify the data source and its relating source, the type of relationship, and also the orders (think of these as keys) used to establish the relationship. Once the latter has been filled in, you also need to specify how the fields of the specified keys are primed for this relationship, in the two Linking Fields boxes.

Note: If the list of files does not have anything in it, go out of the Global Extension, Generate All and go back in.

 

The Custom Functions Tab

On this tab, you can add functions and variables defined in your application that you want to make available to users at run time (these will become available to them on the Functions Tab of the Editor). Users editing reports will be able to make use of these functions to calculate values, etc. to be included in the report.

 

add custom function tab

You need to make sure you have created the function in your application before adding it to this list. Also, it needs to be accessible by the RightReportsPrint procedure. So it should either be declared as global, or added to the procedures for RightReportsPrint.

  • Disable use of this function in RightReports: Temporarily disable a function from being used in a report.
  • This function is managed by MultiProj (requires Multi-Proj v 2.81 or later): The Multi-Proj generated extension template(s) added to this application can generate a list of procedures, parameters, and their descriptions for RightReports to use. You can (not recommended) use the Overrirde MultiProj updates group to override certain automatic values generated by the MultiProj extension.
  • Function is in another DLL: Check this if the function is imported from another DLL.
  • Function: the name of the function to use in the reports.
  • Bind to name: the name of the function used in the reports (if different from the Function name). You can use the Additional Mapped names list to add additional names used in the reports to bind to this function.
  • Description: A description of the function's function (i.e. what it does) - used in the help on the RightReports editor window.
  • See Also: A list of functions relating to this one.
  • Parameter List: a list of parameters that the function uses when returning a value.
  • Variable name: the name of the global variable as it is declared in your application.
  • Bind to name: the name of the variable used in the reports (if different from the Function name). You can use the Additional Mapped names list to add additional names used in the reports to bind to this variable.

 

The Files Tab  

global files tab

On this tab you can override the fields you included or excluded from the Files List in your dictionary. This is useful for if you have more than one Report Editor in your application and you want to switch some of your tables on and off at DLL level rather than for the entire application.

  • Suppress Files: Select the files that you don't want to appear in the report editor for this DLL.
  • Include Files: Select files here that were excluded in the dictionary but you still want them to appear in the report editor for this DLL, Tree Defn File, Calcs File, Totals File, Secondary Source

 

The Options Tab

global advanced tab
  • Font Settings: Used for default fonts when font is not set in the report (when printing).
  • Class is External: Tick this if you have a Multi-DLL application, and the Global Extension was added to a different DLL (i.e. if the RightReports class was compiled into a different DLL).
  • Don't Link: Indicates that the class should not be linked in locally, it is external (in a DLL, not local).
  • RightReports Based On: A super-advanced option allowing you to specify which class RightReports should inherit from.
  • Tables per FQ module: For each table, a number of procedures are generated by RightReports. Originally, each table had its own module created by RightReports into which these procedures were generated. These modules are named something like repFQ1.clw, repFQ2.clw, etc. where "rep" is the first three letters of your application name. Since lots of tables hence means lots of FQ modules, you can specify here how many tables' procedures to generate into one FQ module to reduce this number. The default is 5.
  • Dont tick this: Used internally for Capesoft applications.
  • Generate Query Wizard code for propsql: Used in conjunction with QueryWizard. Customized functionality
  • Logging: Use the checks to output logging for various aspects of RightReports.
  • Global class: enter the global class used by RightReports (normally the RightReportsGlobalClass).

 

The RightReports Files Tabs

You will notice that there are a number of other tabs on the Global Extension, such as Report, Band File, Controls File and Fields File. For the most, you will not need the tabs. If you, however, decide to rename some of the Imported RightReports Files or their fields, then you would possibly have to come to this tab to make sure all the table names, and their related field names, are still filled in correctly on this tab.

Report Tab Band Files Tab
Controls File Tab Tree Defn files Tab
Calcs file Tab Totals File Tab
Secondary Files tab Totals file tab

 

The Local Extension

The General Tab

local general tab

  • Disable Here: Use this to disable RightReports in this procedure. For debugging purposes, mainly.
  • Show Ruler: You could have a ruler along the bottom of the graphic display area, if you wanted. Not fully implemented yet.
  • Background Color: Set this to the colour you would like the background of the Graphic Band Editor to be.
  • Gap Between Bands: Set this to the number of pixels you want to separate bands with in the Graphic Band Editor.
  • Call Procedure to Update Control Properties: Usually you edit the properties of the selected control using the Property Tab. However, you could also add functionality to allow the user to edit these in a window via choosing an option from the right-click menu.
  • Update Procedure: If the above option is ticked, enter the name of the update procedure for the control properties here.

The RightReports_Editor Control Template

The General Tab

local hotkeys tab
  • Disable Here: allows local disabling of RightReports code on this window.
  • Show Ruler:
  • Background Color: The background color of the Graphic Band Editor.
  • Gap between Bands: The gap between the detail bands in the Graphic Band Editor.
  • Call procedure to update control properties: If you don't want to use edit in place, you can use a procedure to edit the control properties.
  • Don't sort the files Queue: If you check this, then the file fields will be in record order in the Fields list, rather than in alphabetical order.
  • RR Controls on sheet: The sheet containing the RightReports controls from this template.

The Hot Keys Tab

local hotkeys tab On this tab you can specify hot keys for editing and moving controls in the Graphic Band Editor. The prompts are rather self-explanatory.

 

The Advanced Tab

local advanced tab

  • Object Name: The name of the RightReports object in this procedure.
  • Based on Class: A super-advanced option allowing you to specify which class RightReports should inherit from. By default it is whatever class was specified on the Global Advanced Tab. Once again its best if you leave this sucker alone.

The RightReportsPrintControls Control template

local advanced tab
  • Date Picker uses: In this group, you can specify the date picker procedure to use for the lookup procedure for user variables with date pictures on the PrintOptions window. No date picker (don't use a date picker at all), ABC class (uses the ABC date picker), Procedure (your own defined procedure to return a date in this application), In Another App (your own defined procedure in another DLL linked into this application).
  • For OfficeInside users (to support export to Excel and Word) , you can enter a default Word and Excel file in the prompts provided.
local advanced tab

On this tab you can enter user variables that link to a lookup procedure to aid the user in entering user values (used in the report - see the Property Editor). On the User Variables with Lookup:

  • Variable Name: This is the name of the (local or global) variable defined at runtime for the report that has a type "user".
  • Procedure for lookup: Allows you to select a procedure to use to assign the user value.
  • Procedure is a Browse: If the procedure used for the lookup is a browse, check this, and enter in the Field Containing Value. If the procedure is not a browse, it must return the value that will be used to prime the user variable.
local advanced tab Use this list to override the view creation for these tables selected. You will need to handcode the views yourself.
   
table right side
table bottom corner   table bottom corner

 

table top left corner Using The Report Editor table top right corner
table left side

 

For a thorough overview on using the ReportEditor, take a look at the training video: http://www.nicetouchsolutions.com/clarionlive/webinars/ClarionLive136_20111125_RobdeJagerOnRightReports.wmv

The Browse Window

The RightReportsBrowse procedure lets you browse the current reports in your program.

browse report layouts

It shows the date and time at which the report was last modified as well as the description. If you click the Add or Change button, you can edit this graphic report at runtime. The update procedure is called RightReportsUpdate.

 

The Update Form

the update form

The RightReportsUpdate procedure allows you to create and edit graphic reports with ease. There are three sections to this window:

The Report Structure List

This list allows you to specify a Primary Source, and add graphic report details, lookups, Secondary Source loops, calculations, headers and footers to your report. A short description for each of these is given below.

Note that you can move each item up or down depending on where on the report it should happen. You can also move each item left or right. If an item A is left of any item B above it, it means that that item B is a parent of item A.

  • Primary Source: This specifies the Primary Source for the report.
  • Lookup: If the current file has a many-to-one relation with another file, this can be used to look up the related record in that related file (by current file we mean the file of the closest parent that is either a Primary Source or secondary loop).
  • Secondary Loop: If the current file has a one-to-many relation with another file, this can be used to loop through the related records in the related file.
  • Calculation: Use this to perform a calculation and set a variable.
  • Header: This is the header band for the report. There can be only one.
  • Footer: This is the footer band for the report. Ditto re. the cheesy quote above.

 

The Graphic Band Editor

Any detail, header or footer created using the Report Structure List above appears in this editor. Check out the cool editing functionality available to you:

  • Use the provided buttons to add boxes, strings, images and lines to any of the bands.
  • Resize the bands and controls on the bands.
  • Right-click and observe the neat popup menu allowing you to do things like align controls and copy-paste. Holding down the Control Key allows you to select multiple controls at once.

A note on Strings: Putting angular brackets around a word indicates to the report printing engine that this is possibly a local or global variable (see the Property Editor below), or a field in one of your report tables. See the Printing Variable and Field Values section for more details.

 

The Property Editor

This feature allows you to edit various properties belonging to the currently selected item in the Report Structure List. If a control is selected in the Graphic Band Editor, it allows you to edit the properties for that control. The property editor has several tabs:

  • The Properties Tab: On this tab you can edit various properties for the selected item or control, including the text value, colors and position.
  • The Totalling Tab (Only for Secondary Loops): You can create totals that are automatically calculated through the loop for the specified field.
    Note:
    The field has to be present somewhere on a band that has the loop as parent for the total to be calculated correctly.
  • The Fields Tab: This just displays all the tables that are used in this report, with their fields and descriptions.
  • The Functions Tab: This displays the functions available to the user. You have to create these yourself in your app, bind them in the BindRep procedure and add them to the AddCustomFunctions procedure (see the next step for more on this).
  • The Global Tab: This is a list of global variables available to the user for use in the report. The user can edit, add and remove these at will. They are global in the sense that they are available to all reports in this program (see the next step for more on this).
  • The Local Tab: Similar to the Global Tab, except that these variables are only available to the current report in the program.
  • The Notes Tab: Write any general notes regarding the report here. There's lots of space, so go wild.

 

The Print Window

When you have finished editing the report, you can press OK to save it and then click Print on the Browse Reports window. This brings up the Report Options window (the procedure is called RightReportsPrint):

the print window

Here you can select where you want to print the file to, choose your printer, etc. Any local or global report variables which were declared of type User will appear on this window, allowing the user to specify their values.

You will also notice a Primary Sort dropdown appearing in some cases. This happens when for the Primary Source of that report, the user specified User Selects for the sort order. If the keys for the file have non-empty descriptions, the descriptions appear in this dropdown. Otherwise the key name appears.

Clicking start sends the printing on its way. See the section on The Report Output for more on the output options.

table right hand side
table bottom left corner   table bottom right corner

 

table top left corner Properties on the Properties Tab table top right corner
table left side

 

The Properties Tab on the Property Editor allows you to edit any of the properties relating to the currently selected item in the Report Structure List in edit-in-place type fashion. If a control on a band is selected, its properties will appear in the Property Editor for editing. Below we list the properties for each different type of item along with descriptions for each.

A Note on Parent Files

Recall we mentioned that if an item A is left of any item B above it in the Report Structure List, it means that that item B is a parent of item A. The idea of a parent file works more or less the same. The parent file of an item is assumed to be the main file of the closest Secondary Loop or Primary Source item above it. It is also possible to override the parent file of a given Secondary Loop or Lookup by changing the Parent File entry on the Properties Tab.

 

Primary Sources

This item contains properties relating to the Primary Source of the report, as well as other general

  • Description: A description for the report. This description is what appears in the Browse Window.
  • Primary Source: The name of the Primary Source through which this report will loop.
  • Order By: Choose a key for the Primary Source by which it should ordered. If you have filled in a description for the key in the dictionary, this description will appear in the dropdown. Otherwise, the name of the key appears.
  • Archive: To be updated.
  • Order Fields: The fields in the key chosen in "Order By" above. To be updated.  
  • Filter: Enter a report filter here for the Primary Source, if desired. This will be evaluated for every record fetched. You can include report variables in this expression.
  • Server Filter: Enter a filter here. For files and views, this will be evaluated server side, which is quick, but means you cannot use any report variables.
  • Server Order: Custom order fields for your data source. List of fields should be comma-separated. Evaluated server side. Only for files and views.
  • SQL Filter: An SQL filter for your data source. Valid for files and views.
  • SQL Order: SQL order fields for your data source. Valid for files and views.
  • Format: Choose the format of the report. Options are Text, PDF, HTML, Excel, and XML. Some of these are To be updated.
  • Graphic: Choose between Graphic and Text reports. This defaults to Graphic.
  • Chain To: If you want another report to start printing immediately after this one has been printed, put the report number here.
  • Report Number: The report number of this report. This field is not editable.
  • Send To: Choose where you would like the report to printed to by default. Choose between Printer, File and Screen.
  • Destination: Choose the printer you would like this report to be sent to by default.
  • Landscape: Choose whether you want the report to be printed in landscape form by default.
  • Report Type: The user can use this at his or her discretion. Useful for grouping different types of reports together.

 

Secondary Loops

  • Parent File: If you would like this to have a different parent file than the default, choose it here. See the section on Secondary Loops and the Note on Parent Files to see what a parent file is.
  • File Name: The name of the Secondary Source to loop through. Only files related to this item's parent file in a many to one relationship will appear in this dropdown.
  • Cache: To be updated.
  • Filter: A report filter for this Secondary Source. This will be evaluated for every record fetched. You can include report variables in this expression.
  • Server Filter: Enter a filter here. For files and views, this will be evaluated server side, which is quick, but means you cannot use any report variables.
  • Server Order: Custom order fields for your data source. Valid for files and views. List of fields should be comma-separated. Evaluated server side.
  • SQL Filter: An sql filter for your data source. Valid for files and views.
  • SQL Order: SQL order fields for your data source. Valid for files and views.
  • Range _ From: There may appear a number of these prompts, depending on the key relating this Secondary Source to its parent files. If there are fields other than fields linking this Secondary Source to its parent file in the relating key, there will appear such a prompt for each of these fields. Fill in the range from value for this field, if desired.
  • Range _ To: There may appear a number of these prompts, depending on the key relating this Secondary Source to its parent files. If there are fields other than fields linking this Secondary Source to its parent file in the relating key, there will appear such a prompt for each of these fields. Fill in the range to value for this field, if desired.
 

Lookups

  • Parent Source: If you would like this to have a different parent file than the default, choose it here. See the section on Lookups and the Note on Parent Files to see what a parent file is.
  • Source Name: The name of the file to do the lookup on. Only files related to this item's parent file in a one to many relationship will appear in this dropdown.
  • Cache: To be updated.
  • Linking Fields: This only appears if the Parent File is set to None. This allows you to do a lookup based on a custom relationship between files. What is required here is an expression that links up to three fields in the Lookup file to corresponding fields in the parent file. In other words, supposing the parent file is Invoice and the file to do the lookup on is Customers, it needs to have the following format:

CUS:CField1 = INV:IField1

or

CUS:CField1 = INV:IField1 and CUS:CField2 = INV:IField2

or

CUS:CField1 = INV:IField1 and CUS:CField2 = INV:IField2 and CUS:CField3 = INV:IField3

You also need to make sure that there is a key in the Lookup file that contains each of the lookup fields used in the expression. Otherwise, the lookup will not work.

 

Calculations

  • Calc Name: The name of the calculation. You may call it whatever you like.
  • If: A condition for the calculation. Set to 1 if no condition is required. If you are using any variables or table fields in this condition, they should be enclosed by angular brackets.
  • Set: The name of the variable to receive the result of the calculation. This variable will have to be declared either on the Global Tab or the Local Tab. You may write the variable names as in, although putting angular brackets around it wont hurt.
  • To: The calculation/expression you would like the variable above to be set to. Once again you may use table fields or variables, but remember to put angular brackets around them.
  • Else Set: The name of a variable to set if the condition fails. This variable will have to be declared either on the Global Tab or the Local Tab. You may write the variable names as in, although putting angular brackets around it wont hurt.
  • To: The value to set the Else Set variable above to. It can be an expression. Once again you may use table fields or variables, but remember to put angular brackets around them.

 

Details, Headers, Footers and Forms

  • Detail/Header/Footer Name: A descriptive name for this band.
  • Suppress If Block Empty: This is only valid for bands that appear between a Block Start and Block End statement. What this means is that this band should be printed only if other bands within the block that don't have this option ticked have been printed. A Suppressed detail is indicated in the Report Structure List by putting a star next to it. See the section on Blocks in a Report for more info.
  • Block Start: This band is the start of a block. See the Suppress If Block Empty option above for more info. A Block Start is indicated in the Report Structure List by putting a closing angular bracket next to it. See the section on Blocks in a Report for more info.
  • Block End: This band is the end of a block. See the Suppress If Block Empty option above for more info. A Block End is indicated in the Report Structure List by putting an opening angular bracket next to it. See the section on Blocks in a Report for more info.
  • Hide: Don't ever print this band. But do execute calculations and evaluations relating to this band.
  • Width: The width of this band on the report, in pixels.
  • Height: The height of this band on the report, in pixels.
  • Color: The background color of this band.
  • Condition: A condition under which this band should be printed. May be an expression. You may use table fields or variables, but remember to put angular brackets around them. Can be left blank.

 

Controls

  • Text: (String Controls Only) The text of the string control.
  • X Pos: The vertical position of the control on the band, in pixels.
  • Y Pos: The horizontal position of the control on the band, in pixels.
  • Width: The width of the control on the band, in pixels.
  • Height: The height of the control on the band, in pixels.
  • Fit Width: If this is set, RightReports will adjust the size of the control to its contents when the report is printed, and the specified Width will be ignored. In particular, you can set this to ensure that a string control gets adjusted to the length of its contents when the report gets printed.
  • Fit Height: If this is set, RightReports will adjust the size of the control to its contents when the report is printed, and the specified Height will be ignored.
  • Transparent: Whether the control should be transparent.
  • Background Color: The background color of the control. When editing this a color chooser pops up.
  • Foreground Color: The foreground color of the control. Only really useful for boxes and lines. When editing this a color chooser pops up.
  • Font Typeface: (String Controls Only) The font name for the string control. When editing this a font chooser pops up.
  • Font Style: (String Controls Only) The font style for the string control. When editing this a font chooser pops up.
  • Font Charset: (String Controls Only) The font name for the string control. When editing this a font chooser pops up.
  • Font Size: (String Controls Only) The font size for the string control. When editing this a font chooser pops up.
  • Font Color: (String Controls Only) The color for the string control. When editing this a font chooser pops up.
  • Stretched: (Image Controls Only) Whether the image should be stretched.
  • Centred: (Image Controls Only) Whether the image should be centred.
  • Tile: (Image Controls Only) Whether the image should be tiled.
  • File: (Image Controls Only) The file name for the image to display here. Note that the image file has to be in the application directory. For now.
  • Line Width: (Line and Box Controls Only) The line width to use when drawing the line or box. In pixels.
  • Picture: (String Controls Only) A picture to use for displaying the string.
  • Justify: (String Controls Only) Choose whether you want the string to be left, right or center justified within in the control.
  • Fit to Width: When the report is printed, this string field will be made long enough to ensure that all the text (after fields values, etc. have been evaluated) is printed.
  • Fit to Height: Same as above, but for height.
  • Text Box: This is mainly for use with data source fields that are very long. You will not see the difference on the editor, but when this field is printed on the report, it will be printed as a text box.
  • RTF: In the case that Text Box above is on, this enables Rich Text Format. Again, you will not see the difference in the editor, only on the printed report. It is for use with dictionary file fields that have RTF enabled.
table right side
table bottom left corner   table bottom right corner

 

table top left corner Advanced Report-Editing Things table top right corner
table left side

Blocks in a Report

A classical example of a Block in a report would be the following:

Suppose you had a secondary loop through Purchased Items for a report on Invoices. For each invoice, you want to print a header, the Purchased Items relating to that Invoice, and then the invoice footer. Naturally, if there are no Purchased Items relating to an Invoice, because they for example have been filtered out, you wouldn't want that entire invoice to print. To achieve this, you would make the invoice header the Block Start and Suppress it, and the invoice footer the Block End and Suppress that too. The actual band with the Purchased Item info on it, however, should be left alone.

The effect that this will have is the following: If there is at least one record in the secondary loop that does not get filtered out and its associating detail prints, all the details within the block will print. However, if there are no valid records and hence no details for Purchased Items print, none of the other details (i.e. the invoice header and footer) will print either.

In your Report Structure List, this scenario would look something like the following:

block example

The stars represents bands with "Suppress if Block Empty" switched on, the closing angular bracket indicates a block start, and the opening angular bracket indicates a block end.

 

Functions and Variables in the Report

As was mentioned above in the section on the Property Editor, you can add variables to your report using the Global and Local tabs. Placing the name of this variable in angular brackets in a string on the report then causes the value of the variable to print out when the report is printed.

Note that there are three types of variables:

  • User: When the report is printed, the user will be prompted on the PrintReport screen for the values of these variables before printing starts. The value for the prompt should be entered in the Else Value field in the list. You can specify the initial value for this variable in the Value field. NOTE: Create a lookup for these user variables on the The_RightReportsPrintControls_Control_template
  • Computed: These variables are computed either by Totalling (see Secondary Loops), Calculations, or they contain the values specified in the Value field in the list. The value in the Value field can be an expression, and can contain calls to functions available on the Functions Tab.
  • Conditional: Here you can specify a Condition, Value and Else Value.

If you want functions to be available to the user at runtime, you need to take the following steps:

  • Create the function in your application.
  • Global Extension, and to the Custom Functions Tab.
  • Add your procedure to this list.

There are already a number of built-in functions that ship with RightReports. Since they are already loaded theyre descriptions can be viewed as usual on the Functions Tab.

Tip: Say you have created your own clip function, called MyClip, and want this function to be called whenever the user calls clip. You will notice that Clip has already been bound by RightReports (to the usual Clarion Clip function). You need to make sure you unbind clip before binding it. So your code in the RightReportsBind embed point would be

UnBind (clip)
Bind(clip , MyClip)

Another Tip: Your custom function needs to take only string parameters, and it can only return strings, too. This is a limitation brought about by the Clarion Bind() procedure.

Built in Functions

 

FunctionName Description Example
ABS Returns the absolute value of a variable's contents abs(<MyVariable>)
INT Returns the integer value of a decimal int(<MyDecimal>)
CHANGED Returns if a variable has changed or not.
NOTE: You must use quotes for the variable name to be checked.
changed('MyVariable')
HEADER Returns if a variable has changed or not (first instance is returned as a change).
NOTE: You must use quotes for the variable name to be checked.
header('MyVariable')
CHR Returns the ASCII string character of the ASCII value passed (valid numbers are 0 -255) chr(<MyNumber>)
CLIP Returns a clipped variable (i.e. removes the trailing spaces in a string) clip(<MyVariable>)
CLOCK Returns the current time (in clarion time - i.e. hseconds after midnight) clock()
TODAY Returns the current date in clarion date (i.e. number of days after 1 Jan 1800 + 3) today()
ALL Returns a string of repeated characters, where the first parameter is the character, and the
next is the number of repeats.
all(<MyCharvar>,<NoOfChars>)
RIGHT Right justifies a string right(<MyVariable>)
CENTRE/CENTER Centre justifies a string centre(<MyVariable>)
DAY Return the day of month from a date day(<MyDateVar>)
MONTH Returns the month from a date month(<MyDateVar>)
YEAR Returns the year portion of a date. year(<MyDateVar>)
LEFT Left justifies a string. left(<MyVariable>)
DOW Returns the day of week (0 for Sunday through 6 for Saturday) dow(<MyDateVar>)
DATE Returns a clarion date from a passed month, day and year date(<MyMonthVar>,<MyDayVar>,
<MyYearVar>)
BEGINSWITH Returns 1 if a string begins with a set of characters beginswith(<MyStringVar>,<MyCharsVar>)
CONTAINS Returns 1 if a string contains a set of characters contains(<MyStringVar>,<MyCharsVar>)
ENDSWITH Returns 1 if a string ends with a set of characters endswith(<MyStringVar>,<MyCharsVar>)

You can add your own custom functions to be used in reports. You must create the function, and then add it to the list in the rightreports global template's list of functions. It will then be available for report editing, and when printing a report. (see GloCustomFunctionsTab)

 

Printing Variable and Field Values

Putting angular brackets around a word indicates to the report printing engine that this is possibly a local or global variable (see the Property Editor), or a field in one of your report tables. When printing the report, RightReports will replace that part of the string with the current value of the variable, or with the value in the field of the current record in the table.

You can find all the local and global variables available to this report on the Local and Global tabs of the Property Editor. All the fields of the tables used in your report can be seen on the Fields Tab of the Property Editor. If your report is a Graphic report, you can drag and drop these fields onto any report band in the Graphic Band Editor above the field list.

 

Built-In Keywords

There are some built-in keywords such that if they are encountered in a string in angle brackets, RightReports will perform a certain action. The are essentially variables and are treated in exactly the same way. The following are examples:

  • <formfeed>: When RightReports runs into this, it immediately starts a new page. For text reports it starts a new page immediately and prints the remainder of the band its on on the next page. For graphic reports, it finishes printing the current band before starting a new page.
  • <page>: This will be replaced by the current page number.
  • <linenumber>: Only for text reports. This will be replaced by the current line number on the page.

 

Renaming Table Fields

Suppose one of your table fields has a name that obscures its meaning, such as INV:rn, which stands for the invoice number. It is possible for users to see and use an alternative name in the report editor, which may, for example, be more descriptive and hence easier to work with, such as INV:InvoiceNumber. To do this, take the following steps:

  • Go to the table field in your Dictionary
  • Go to the User Options of that field
  • Enter a new option called RRName and set it to whatever you would like the field to appear and be used as in the Graphic Report Editor

AutoReporting Tips

 

table right side
table bottom left corner table bottom table bottom right corner

 

table top left corner Report and Table Access Issues table top right corner
table left side

 

Excluding Tables and Fields from the Files List

There will quite possibly be some tables in your dictionary that you want to hide from the users on the Fields Tab. The way to do this is as follows:

  • Go to the table in your dictionary
  • Right-click and choose Properties
  • Go to the Options Tab
  • Insert a property called NoReports and set its value to 1
  • Recompile your app

Once you have suppressed a table in your dictionary in this way, you can unsuppressed it by going to the Files Tab on the Global Extension. You will see that it is also possible to suppress files that have not been suppressed in the dictionary here.

In order to suppress specific fields of a given table in your dictionary, the process is the same as the above. You can just follow the five steps mentioned above to add the NoReports user option to the table field in your dictionary.

 

Preventing Users from Editing a Report

It is possible to prevent users from editing a report by setting the EditAccess property in the RRDefinition file to a value greater than 0. If this is the case for a report, the Update window will open in view-only mode.  The way the value of RRDFN:EditAccess is determined is left up to the programmer, and it is, for obvious reasons, not included in the Properties List for the report on the editor.

 

Preventing Access to Table Records

It is also possible to prevent a user from accessing certain records in the report tables when printing the report. In fact, it is possible to filter out any records of any table that the report loops through. To do this, you need to take the following steps:

  • Go to the RightReportsPrint procedure
  • Look for: ThisPrinter.CallNextRecord - Inside Loop
  • Expand this tree and look for the file you want to filter
  • Insert some filtering code. It may look something like this: if fil:fieldname < 0 then cycle.

The code you are embedding into looks like this:

 loop
   CallResult = self.NextRecord()
   !Embed code here to filter out records
   if CallResult
     ReturnValue = CallResult
     break
   end
   if 0
   elsif self.CurrentDataSource.Name = 'MyFile'
      !Your embed point is here
      if fil:FieldName < 0 then cycle.

   elsif self.CurrentDataSource.Name = 'MyFile2'
   end
   ReturnValue = 0
   break
 end

So basically this allows you to loop until you find an unfiltered record. You can even set the ReturnValue to a non-zero value to stop the processing of the current file completely.

table right side
table bottom left table bottom right

 

 

table top left corner The Report Output table top right corner
table left side

The Report Previewer

As can be seen on the Global General Tab, it is possible to choose a previewer for your generated reports besides the default RightReports or ABC ones. The way to go about using such a 3rdparty previewer depends on the product, but the general idea is as follows:

  • Add the Global Extension for the specific 3rdparty reporting tool who's previewer you want to use
  • Select the desired previewing tool on the Global General Tab, under Previewer.
  • There will possibly appear a new tab on the RightReports global extension, next to the General Tab - fill in the neccesary details here.

global general tab

At the moment RightReports supports the IceTips, CPCS, ABC and RightReports-built-in report previewers. It is also possible to hand code your own call to a previewer (like RPM), should you wish to choose that option.

 

The RightReportsPrint Procedure

RightReportsPrint is the procedure responsible for printing the report created by the report editor. It also provides an interface for the user to setup some options that the report requires (like user variables used for filtering records). The RightReportsPrint procedure is imported as a window procedure with a Control template added to populate the necessary code. There are a number of options for the template, discussed in the RightReportsPrintControls template section of this doc.

For example, you want to use your own Report Previewer. In this case, you could hand-code the call to the previewer yourself. Choose the Hand code option on the General Tab of the Global Extension, and follow the instructions laid out on the Hand coded Previewer tab that appears. Alternatively, you can do a search in the RightReportsPrint procedure for RightReportsPreview. You can replace this function call with your own.

Entering User variables

The user variables created for a report (in the local or global tabs) - will be displayed here at runtime, allowing the user to enter values for these user variables.

Printing to a PDF File

As you saw on the RightReportsPrint Window, you can choose to output your report to a number of formats. One possibility is to output to PDF. To enable this, you need to take the following steps:

  • Make sure you have abprpdf.inc and abprpdf.clw somewhere in your path. This class ships with Clarion 6 Enterprise Edition, but not with Professional edition.
  • Go to the Global General Tab on the RightReports Global Extension, tick the Enable printing to PDF checkbox.
  • Add the Report to PDFGlobal Extension template. (See also Step 8 of the Jumpstart)

 

Printing to Word and Excel

As was mentioned before, it is possible to output to a number of different formats. Among these is the possibility to send the report output to a Microsoft Office Excel or Word file. Note that you need CapeSoft Office Inside version 2.63 or later. To enable this feature you need to take the following steps:

  • Add the Office Inside Global Extension to your application.
  • Note: If you are using Legacy, you need to enable the "Enable the use of ABC classes" checkbox on the Classes Tab of the Global Properties of your app.
  • (See also Step 8 of the Jumpstart)

If you would like the user to preview the output document automatically, then you need to add the HyperActive global extension template to your application as well.

table right side
bottom left corner bottom right corner

 

top left corner Importing and Exporting Reports top right corner
table left side

Importing and Exporting a RightReports Report

It is possible for you to export a Report from RightReports into an XML format, and to import such a report again too. The idea here is to make reports portable. For example, this feature enables you to export a report, send the resulting XML file to a client, and he or she can then import the report into their system with minimal fuss. In addition, by exporting a report, you ensure that you have a saved copy in case you need to revert back to it for whatever reason. Re-importing an exported report also mimics the copy-paste action.

Note that this feature requires require XFiles 1.61 or later. To enable this feature, you need to take the following steps:

  • Import the RRImportExportABC.txa (or ImportExportLegacy.txa) file into your application
  • Add the global xFiles Extension to your application.
  • The RightReportsImport and RightReportsExport procedures each has a RightReports Extension that generates the necessary code. They look something like this:

import export

There is one option allowing to to control which reports may be imported into your program. If an exported report does not have this identifier, importing it will fail. The idea is that programs with different dictionaries will clearly not be able to support the same reports. Hence, using the dictionary name here seems like a good idea.

 

Importing Reports from a TXR File

RightReports can import reports that were created using Clarion's Report Writer with ease. To enable this feature, you need to take the following steps:

  • The RightReportsImportTXR procedure is imported when you import the RightReportsFunctions.txa file.
  • You just need to call this procedure from an applicable place in your application.

This procedure merely opens a window asking the user to specify the relevant TXR file before importing all the reports in that TXR into the RightReports report database. These reports then become available in the RightReportsBrowse, and can be edited and printed as usual RightReports reports from this point on.

table right side
table bottom left side table bottom right side

 

table top left corner Advanced: Embed Points table top left corner
table left side

Embed Points for the Enthusiastic Coder

The RightReportsPrint class generates a number of procedures into the RightReportsPrint procedure where you can embed some of your own code.

Method Name When Called Examples of Uses
AddCustomFunctions In general code will be generated into this procedure by the template. See the Section on Functions and Variables.. You can embed code here if you want to add some custom functions to make available to the user.
AfterInitalise This method is called after all the initialization for printing is complete. Place any of your own initialization code here.

AfterPrinting

This method is called once all the printing is done and the preview has been displayed.  

AfterWaitWindowOpen

Embed any code in here you would like to execute after the Progress Window has opened. For example, if you want to make changes to the window to suit your applications, e.g. adding Makeover, now would be the time.

BeforeAssigningSource

Before the records of a data source are processed, certain actions may need to be performed on that data source. Embed code to do that here. This method is called after the source was opened, but before a set (with a key) has been done on it.
A queue that may be of interest here is the SavQ. This would be a good time to save the state of your data source should you want to do this. Your embed code would look like this:

if lower(self.SavQ.savFileName) = 'employee'
  self.SavQ.savState = Access:Employee.SaveFile()
end
NextRecordFound This gets called every time a new record to process has been successfully fetched. These record have survived testing against all the filters, including the primary and secondary report filters. This is your last opportunity to filter this record out, and you can do this by setting the return value to 1.
BeforePoppingSource This gets called just before the data source currently being processed gets popped off the SavQ stack.  

BeforePrintFileStart

This is called after the print button is pressed but before the actual processing of the data sources starts. This method is called before the data sources for this report are opened, but after the output type (as chosen by the user on the window) has been determined.  

BeforeOutputCase

After the print button is pressed, RightReports determines which printing option is called. This procedure is called before this case statement.  

BeforeViewOpen

As the name suggests, this method is called before a data source that is a view is opened. If the user has chosen a key for the primary file of the view, it is passed as a parameter. The parent call then sets the primary file with this key - you do not have to do this yourself (provided the user chose a key in the editor).

Remember that in the print procedure, all Files are handled as Views - see the section on
Files and Views in the Print Procedure.
You can place any of your own code to prepare the view or the primary file of the view here.

CallNextRecord

RightReports uses this procedure to call the NextRecord procedure, which fetches the next record in the current data source. If NextRecord returns a value > 0, it means the fetch failed, and contains the error code. 1 means that some internal error occurred while trying to access the data source in RightReports. In either case it will be assumed that the end of the data source was reached.

NNote that, unlike in the case of NextRecordFound, the report filter has not yet been applied to this record (although all server-side and SQL filters have).
If the fetch is successful, you can use this procedure to filter out any unwanted records. An if statement is generated with embed points for each of your data sources. You can check any fields in your data source and cycle should you want this record to be skipped.

Initalise

This procedure is called to do some routine initialization tasks when the print window is opened. Place any of your own initialization code here. Placing code after the parent call is the same as placing code in the AfterInitalise procedure.

InNextLoop

After CallNextRecord has returned its value to the Print procedure, the return value is evaluated. If the return value is 0, this record will continue to be processed. InNextLoop is called before any processing on the record continues.

Note that, unlike in the case of NextRecordFound, the report filter has not yet been applied to this record (although all server-side and SQL filters have).
 

PostShowPriSortQueue

This method is called after the Primary Sort Queue is displayed. The latter will only appear if the user has chosen 'User Selects' for the Primary Sort. Embed code here if you want to move some controls around on the Print Window.

PostInitalise

This method is called during (towards the end of) the Initalise method. It is called before AfterInitalise. Mostly for internal use. Code to prime the user variable prompts and load the classification queue is generated into this method.

PreInitalise

This is called before the Initalise method is called. Embedding code here has the same effect as embedding code before the parent call in Initialize.
PrimeUserPromptsAuto When the Print Window is opened, the prompts for the user report variables are populated. If the second character of a report variable's picture is 'G', this procedure is called. No user prompts or entries for such a variable will appear on the print window. You may have placed a prompt and entry of your own on the window. If this is the case, now is the time to populate the prompt and entry with your desired values.

Only for very advanced programming.

RRBind

This procedure binds the functions listed on the Global Functions Tab - code is generated to do this. If for some reason you want to bind some of your own functions, or even application variables (see the FAQ item on this topic) for use in reports, you may do this here. Don't forget to unbind them using RRUnbind below.

RRUnbind

This procedure unbinds the functions listed on the Global Functions Tab - code is generated to do this. Unbind whatever you bound yourself using RRBind above.
SaveCRISCHUserPrompts Internal use.  

SetClassification

Used for classification purposes, not yet implemented.  

ShowPriSortQueue

This method contains generated code that handles the display settings for the Primary Sort Queue on the print window. This dropdown only appears if the user has chosen 'User Selects' for the Primary Sort. Embed code here should you wish to make any changes to the contents of the PriSortQ or the way it is displayed.
 

Class Properties of Interest


Field Name Type Description
savQ Queue   This queue is a member of the RightReportsPrint class, responsible for printing the report. It acts as a stack onto which and from which the data sources of your report are pushed and popped. Thus, the primary source will be the first record, and the data source currently being read is at position records(self.SavQ).. When all the records in the relationship have been processed, the data source is popped off. When the next record in the parent file is read, this data source will be pushed back onto the stack and all the related records read. This stack directly resembles the Report Structure Tree you see in the editor, except that it only contains the data sources before the current one, not the ones after.
savFileName    string(20) Name of the data source.
savLevel   short Level at which this data source is. Level 0 is a primary file, a secondary loop would be at level 1, a secondary loop with the latter as parent will be at level 2, etc.
savofq   long Internal use.
savFilter string(1024) The report filter you entered for this data source (see Primary or Secondary filter)
savHostName string(25) The name of the parent data source.
savRange   string(1024) Internal use.
savState   ushort The Save State of this data source. You can set this by embedding code in BeforeAssigningSource.
SavServerFilter   string(1024) The server-side filter for this data source. Only for files and views.
SavServerOrder   string(1024) The server-side order fields for this data source. Only for files and views.
SavSQLFilter   string(1024) The SQL filter for this data source. Only for files and views.
SavSQLOrder   string(1024) The SQL order fields for this data source. Only for files and views.
  end    
 

Files and Views in the Print Procedures

It may be of interest to note that for the editor, a data source of type file remains a file. However, in the Print Procedure, a view is declared with the file as primary file, and this view is used to print the report. This is to allow the user to specify a server-side filter and order fields for the file, without having to create a new key.

If your file's name is MyFile, the view will be called RRDFView:MyFile. However, the name of the data source will still be the same as that of the original file, namely MyFile. Hence, for example, should you need to access the data source in the SavQ stack, you will still need to use MyFile as the data source name.

It is also important to note that all files will be treated as views in the Print Procedure. For example, BeforeViewOpen will be called for every View AND File.

 

table right side
table bottom left side table bottom right corner

 

table top left corner Tips & FAQ table top right corner
table left side

 

Question Summary

I'm getting Compile Errors or Runtime Errors

Importing Issues (Procedure and TXD issues)

Programming Issues

Writing Reports

Printing Reports

Runtime Errors

Compile Errors

 

Importing Issues (Procedure and TXD issues)

  • Tips for using File Manager 3 (or File Manager 2) and RightReports in your application. If you are making use of FM2 or FM3 in your application, you must not forget to add the Version option to each of the imported RightReports tables on (right-click on the table, choose Properties, go to the Options Tab and enter an option called Version set to the value 1).
  • When I open my app, I get an "Unknown Template Type (EditInPlace) " type error. To fix this, go to "Template Registry" under the Setup Menu and register editin.tpl in clarionx\3rdparty\template. Reopen and recompile your app. The installer cannot register both templates in some versions of Clarion (which means you'll need to register the one manually unfortunately).
  • How do I incorporate RightReports table changes into my dictionary? You can either make the changes yourself in the RightReports tables in your dictionary, or take the below steps. Either way, dont forget to up the version number if you are using FM3.
    • Delete the RR tables from your dictionary.
    • Re-import the RightReportsTables.TXD file.
    • Open your Application.
    • Re-Import the RightReportsFunctionsABC.txa (or RightReportsFunctionsLegacy.txa) file
    • If you get compile errors: Go to the Global Extensions. Take a look at each of the table tabs. Some of the fields may have disappeared and you will need to re-enter them. If you have changed some of the imported RightReports table or field names, you will need to re-enter them here too.

Programming Issues

  • Since we have thousands of fields and over 220 tables, looking at field descriptions one at a time is too slow. I need to get at the field queue and change the description just after the field queue is built. You can embed code after the queue was built to edit the field descriptions yourself. The embed point is called "End of BuildFilesQ Routine" and is at the end of the BuildFilesQ routine. The ThisRightReportsTree1.FilesQ definition is as follows:

    FilesQ            QUEUE,PRE(), THREAD
    FilesQ.Display         STRING(40)
    FilesQ.Level           LONG
    FilesQ.FileName        STRING(40)
    FilesQ.FieldName       STRING(40)
    FilesQ.FieldDetails    STRING(256)
                          END

    The field and table names are stored in the Display field, the field names in FieldName, and the table name in FileName. The field descriptions are stored in FieldDetails. You would hence probably want to do a fetch based on FileName or FileName, and edit the Display and FieldDetails properties to suit your needs.

  • I need to change the file queue description to contain both field name and field description. That way you can see the description of the field as you scroll down the list, rather than having to stop at each field to look. The FilesQ is displayed in an ordinary listbox on the RightReportsUpdate window. You can hence set up this listbox in the Clarion window editor as you would like it. See the question on editing the field descriptions on above for more information on how to work with the queue that populates the listbox.
  • What's with the large amount of Local and Global data being populated by RightReports? A lot of data was populated by the older versions of RightReports, most of which has become obsolete. You can delete the Global Data, and the Local Data in the RightReportsUpdate procedure. They are not difficult to identify as the variable names start with RR. Don't worry - If you delete something the template needs, it will be put back in by the template.
 
  • Where did all my global embed code go? Since version 1.08 of RightReports was released, alot of the global RightReports procedures have been incorporated into classes. Hence, unfortunately, many of the global embed points have disappeared. These have now been made available at the local level, in the RightReportsPrint and RightReportsUpdate procedures. Unfortunately you need to copy the code from these old, now orphaned, embed points to the new ones. Here is a list of the old embed points and where to find them now:
Old Global Embed Point(s) New Location(s)
AddCustomFunctions Can be found in the local AddCustomFunctions procedure in both the Print and the Update procedures. Fortunately, you no longer need to hand-code these additions - you can add them on the Global Custom Functions Tab. This also removes the need to do it twice.
RightReportsNextSavFile Can be found in the local CallNextRecord procedure in the Print procedure.
RightReportsBuildLookupList Can be found in the local BuildLookupList procedures in both the Print and Update procedures.
RightReportsBuildOrderList Can be found in the local BuildOrderList procedures in both the Print and Update procedures.
RightReportsBuildSecondaryList Can be found in the local BuildSecondaryList procedures in both the Print and Update procedures.
RightReportsSetRangePrompts Can be found in the local SetRangePrompts procedures in both the Print and Update procedures.
RightReportsSetFilePosProc Can be found in the local SetSecondary procedures in the Print procedure.
RightReportsBind Can be found in the local RRBind procedure in the Print procedure.
RightReportsUnbind Can be found in the local RRUnbind procedure in the Print procedure.
  • How do I print a report without going to the Reports Browse? There are two things that are needed here:
    -Make sure that the correct record (report) has been fetched in the RRDefinition file. You can either use RRDFN:CodeKey (a key on the RRDFN:DefnCode field), or RRDFN:DescKey for this.
    -Then call RightReportsPrint(0).
    - So, for example, your code could look something like this:
RRDFN:DefnCode = 3
Access:RRDefinition.Fetch(RRDFN:CodeKey)
RightReportsPrint(0)
  • I'm using the RightReportsPreviewer - but PageUp and PageDown don't select the next (and previous) pages of the report. In your application, go to the RightReportsPremier procedure, and for each of the buttons, associate the correct key (in the Window Formatter - right click on the button, select key and enter the key you want to associate with that button).
  • How do I implement RightReports into a NetTalk WebServer application? You need to follow the steps in the JumpStart, taking note of the caveats for WebServer applications (particularly Steps 3, 4 and 7). If you are getting a compile error on the RightReportsPrint procedure, you need to ensure that your prototype and parameters are: (long defn,<string pOptions>,<NetWebServerWorker p_web>)
  • How do I add Word/Excel output support to my application? First you need to add the OfficeInside template to your application. Then you need to go to the RightReportsPremier procedure, and open up the window in the window formatter, and from the Populate menu, select control template. Select the RightReports Print Previewer Output and place the button in your Output group on the window. Right-click on the button and choose Actions. Set the Output To:  to DOC. Repeat the control template insertion for XLS support.

Writing Reports

  • After closing and reopening the app, the image filename is still in the properties but no image is displayed in the designer or on the preview or printed on the report. If I reselect the image file in the designer, then it appears again. For the moment, RightReports does not save the path of the image, so your image has to be in your application directory.
  • I have a file that I want to use as a secondary loop that is not related to the Primary Source in the dictionary explicitly. The happy news is that this is entirely possible using a simple trick. What you do is for the parent file of the secondary loop, choose "None". Then just enter a filter for this secondary loop that describes the relationship between the Primary Source and this Secondary Source. For example, suppose you had a Customers file and an Invoice file in the dictionary that weren't related, but the Invoice file had a CustomerNumber field. Then you would enter for the filter something along the lines of: "INV:CustomerNumber = CUS:RecordNumber".
  • I have a report that reports on the Clockings file. I want some users to not have access to certain records in the Clockings file when printing the report, i.e. I want certain records to be omitted from the report for certain users. How do I do this? See the Section on Preventing Access to Table Records.
  • I want to group certain reports together and only display a given group in the reports browse. You can use the ReportType property to assign a group number to each report. You can then filter the RightReportsBrowse according to this ReportType field.
  • When I add a new report, the data in the Properties box is nonsensical, e.g. the report number is huge. This probably means you are using an SQL backend, and you imported the RightReportsTables.txd file. When it asks you to change the Notes memo in RRDefinition to a String, you can do so (make it any size you want, we recommend 1024 or larger), but move it to the end of the record.
  • How do I add today's date, or the time, to my report?
    - Create a report variable (the best would be to make it global so all reports can use it), lets call it TodayVar.
    - Make the type Computed.
    - Then, in the value column, enter: Today().
    - Put the variable on your report somewhere.
    - Same for time: use Clock().
  • Can I use a global variable in my application on a report? How?
     - Create a report variable, say GloReportVar (global would be best, as then you could use it in all reports)
     - Make its type Computed.
     - In the Value column, write the name of your global application variable, say MyGloVar (NO QUOTES).
    - Put the GloReportVar on your report (in angle brackets).
    - Then, go to the RightReportsPrint Procedure, and look for RRBind.
    - In the embed point, put: bind('MyGloVar', MyGloVar).
    - In RRUnbind, write: Unbind('MyGloVar').
  • Sometimes I open the editor window, and the controls are completely off the screen
     - Make sure that you have the 'Save and Restore Window Location' checkbox turned off (in the Window Behavior template section for the RightReportsUpdate window). RightReports uses it's own window size restore.
  • I have defined a view in the template, but the Order By is requesting a key select, not a list of fields.
    - Re-Import the TXAs, or modify the EIP template on the PropertiesList (Overrides tab - Function Calls) to include a case for entering the fields using the formula window: Condition = ThisRightReportsTree6.PropertiesQ.code = RRPRI:Orderby and ThisRightReportsTree6.PropertiesQ.EIEditType = 5, and Function Call = do RRCallEditFormula. You will also need to modify the condition on the Drop down list options. Change the ThisRightReportsTree6.PropertiesQ.code = RRPRI:Orderby condition to ThisRightReportsTree6.PropertiesQ.code = RRPRI:Orderby and ThisRightReportsTree6.PropertiesQ.EIEditType = 3
  • After selecting the Primary File when creating a report, none of the keys are available in the drop-down.
    You need to save the report after selecting the primary file. When you come back into the report, the keys will be refreshed.
  • In SQL, there are "Server Order" and "SQL Order" fields. Which should I use?
    You can only use one. Don't use both. The Server Order is the clarion named fields (such as CUS:CustomerCode), whereas the SQL Order fields are the field names as they appear on the SQL backend (such as dbo.cus_customercode).
  • How do I create a Report Header (i.e. a header that only prints once per report)?
    First create a runtime variable (You can create a global variable if you'll do this for most of your reports). Call it something like ReportHeaderPrinted.
    Next, create the detail band right at the top of the primary file loop with a condition: <ReportHeaderPrinted>=0
    Then create a calculation immediately after that:
  • How do I create a Report footer (i.e. a footer that only prints once per report)?
    Create a detail band and put it after (out of) the primary file loop:

Printing Reports

  • I added a Footer to the Report - but it is not printing. This normally happens when people add a detail band (not associated with a loop) and not a Footer band. Remove the detail band, and re-add the Footer band, making sure that you use the Footer button to add the footer band. A detail band must be associated with a parent loop.
  • How do I get the order of my user variables in the Report Options correct? The variables are displayed in alphabetical order using the variable name. You can use the first letter of the variable name to determine the order of the variables.

Runtime Errors

  • When opening the report Editor, I get a number of errors that are long the lines of "No connection string found for dbo.rrdefnfiles". It seems to happen for all the imported RightReports tables. The problem is more than likely that you are using an SQL backend and you have not filled in the Owner fields of the RightReports tables.
  • I use SQL - and when I save the report all my report definition is not being saved. The DefnCode that links the band to the parent is not being primed before the records is added - IOW the children are being added before the parent ID has been added (by the parent). I'm guessing that this is because you have set your auto-increment to server-side rather than client side. If you have to make your auto-increment server-side, then you need to insert the record on the way into the form, and do a delete on cancel on the way out.
  • In my NTWS application, I get an invalid page when printing the report from the RightReportsWebPrintOptions page
    You need to change the 'URL on Save' in the RightReportsWebPrintOptions window to 'PrintReport'. This is the page name on the RightReportsWebPrintReport NetWebPage by default. If you have changed this default name, then you need to use that page name in the URL on Save.

Compile Errors

  • I get a "Error in EDITINPLACEENTRY:8" when compiling any of the RightReports example applications. There are 2 templates that ship with RightReports. The DDE connection to the IDE does not support registering multiple templates in an install, so you will need to register the templates manually. They are RightReports.tpl and EditIn.tpl and are located in the the clarion\3rdparty\template directory directory (or clarion\accessory\template\win directory for Clarion7 users).
  • Warning: Lavel duplicated, second used: RRPO:Destination (andd 6 others)
    In 1.53, there wer some variables that moved from the local declaration to the template declaration section. You can simply delete those from the local data as they will no longer be needed, or alternatively re-import the RightReports windows.
  • I get a number of Unresolved External errors to do with DrawPaint.
    You need to check the 'Activate DrawImage' and the 'Activate DrawPaint' checkboxes on the Draw extension template. If this is a multi-dll, then you need to do that in your data dll.
  • I get an error: "Unknown Identifier RRImportASCII" when compiling my app
    1) Make sure that you imported the RightReports txd file into your dct.
    2) Check the "Generate all file declarations" checkbox in your application.
  • I get compile errors on the imported RightReportsWebPrintOptions procedure: You need to set the 'URL on Cancel' to the procedure that calls the RightReportsWebBrowse
    The RightReportsWebPrintOptions has a cancel button. That cancel button must point to the procedure that calls the RightReportsWebBrowse procedure, so that when the user clicks the cancel button, they will return to the correct procedure. This option needs to be set in the RightReportsWebPrintOptions procedure properties ( on the 'URL to Cancel' template prompt).
  • I get a "No Matching prototype" compile error in the RightReportsWebPrintOptions procedure calling the RightReportsPrintOptions procedure
    You need to change the parameters and prototype of the RightReportsPrintOptions window to include an optional NetWebServerWorker p_web parameter as follows:
      (long defn,<string pOptions>,<NetWebServerWorker p_web>)
    Making the p_web parameter optional means you can use the same procedure in your desktop and NTWS applications, if your RightReports procedures are in a dll.

 

table right side
table bottom left corner   table bottom right corner

 

table top left corner License & Copyright table top right corner
 

 

This template is CapeSoft Software copyright . None of the included files may be distributed. Your programs which use RightReports can be distributed without any RightReports royalties.

Each developer needs his own license to use RightReports (need to buy more licenses?).

This product is provided as-is. Use it entirely at your own risk. Use of this product implies your acceptance of this, along with the recognition of copyright stated above. In no way will CapeSoft Software, their employees or affiliates be liable in any way for any damages or business losses you may incur as a direct or indirect result of using this product.

table right side
table bottom left corner   table bottom right corner

 

table top corner Downloading and Purchasing CapeSoft RightReports table top corner
table left edge

 

To download the latest version of CapeSoft RightReports please visit http://www.capesoft.com/accessories/downloads.htm#rightreports. To purchase CapeSoft RightReports, please click on the ClarionShop links below.


CapeSoft Support
 
Email:
Telephone: +27 21 715 4000
Fax: +27 21 715 2535
Post: PO Box 511, Plumstead, 7801, Cape Town, South Africa
 
     

 

 

 

 

Buy
 
Web www.capesoft.com
Email: sales at capesoft dot com 
Telephone: +27 21 715 4000
Fax: +27 21 715 2535
Post: PO Box 511, Plumstead, 7801, Cape Town, South Africa
Buy now at ClarionShop
www.clarionshop.com
 
     
table right edge
table bottom left corner   table bottom right corner

 

table top left corner   RightReports Version History table top right corner
table left side

Download latest version here . You should be using at least version 3.04 of Draw. Download the latest Draw here.

Version 1.77 GOLD ... 11 January 2012

NOTE: See note from 1.65 if you are upgrading from 1.64 or earlier.

  • Support for Block Start and Block End in graphic reports (sdtq and sbcon queue properties to store block until block end is reached, and block is printed).

  • Fix for PageNum in Graphic reports not always incrementing (Now increments in the PrintGraphicFooter rtn).

  • PageHeight moved to PaperHeight property (can be overridden in derived methods). PaperHeight and PaperWidth swapped if printing in landscape. New method SetPagesize to detect Paper size (if not set in report - sets paper size based on the paper used for printout). PaperHeight and PaperWidth in report properties deprecated (although retained where set in report properties for backward compatibility)

  • SendTo and destination (if set in the report properties) overrides the previous used saved ones.

  • ReportEditor: Entry Controls in Report Editor default to Insert mode (not Overwrite).

  • ReportEditor: ItemQueue width and height set in CreateItem method (Images take on the size of the image instead of 50/50).

  • ReportEditor: MoveItem first checks if the dropped area is at least partially inside a band. Otherwise controls were getting lost in never-never land. RefreshBand method forces re-draw after a control is changed bands.

  • ReportDataClass: Dis-allow set file (if file used rather than view) in record order (for SQL). If no key is specified, then file is set in primary key order (for SQL).

  • ReportDataClass: Remove CRLF in filters and orders when setting server orders and filters.

  • ReportDataClass: Makes allowances for case-insensitive keys.

  • ReportDataClass: Allows no key set if no keys in the table (tps).

  • RRClass: ReplaceCRLF and ReplaceChars methods - from StringTheory.

  • Template change (ReportEditor) - Refreshes controls after editing (size, text, etc).

Version 1.76 GOLD ... 30 November 2011

NOTE: See note from 1.65 if you are upgrading from 1.64 or earlier.

  • Fix for Create Image - was defaulting to RepImage.bmp - and the size was set to 0x0 if that file was not found. Now immediately opens the file dialog window, and uses the file selected (or 50x50 if the filedialog window is cancelled).

  • Change for Create Line - offers Vertical|Horizontal|Other line selection and sets parameters accordingly.

  • Fix - when editing a report control's property, immediately refreshes after editing. (New method RefreshBand is used for this purpose).

  • Fix - Edit in place strings default to Insert mode (was defaulting to overwrite mode).

Version 1.75 GOLD ... 22 November 2011

NOTE: See note from 1.65 if you are upgrading from 1.64 or earlier.

  • Fix for Default Font Size not set (regression in 1.74). When populating a control was using 0 for calculating the height.

  • Only set default font settings in editor if not zero or blank.

  • Global default fonts for application (used if default fonts not set for a report). Set in template.

Version 1.74 GOLD ... 18 November 2011

NOTE: See note from 1.65 if you are upgrading from 1.64 or earlier.

  • Default font size for graphic reports (set in the report properties). Allows individual aspects of a font to be overridden for each control (otherwise the default font will be applied).

  • Default height for the new text control specified (was defaulting to 0)

  • Support for a function call within a function call (for calculations for runtime field values, etc).

  • Debug window size increased, also add the Time and/or index (selected with a checkbox). (AddToDebugQ handles additions to the debug queue).

  • TPL fix - removed Previewr selects output checkbox on global tpl (only use option on PrintOptions window output). If old Previewer is used, then you must re-import the previewer.

  • TPL fix - correct the ReportEditor procedure code generation.

  • TPL change - in PrintPreviewer window hides the window during init, and unhides. Prevents the buttons from not displaying.

  •  

Version 1.73 GOLD ... 25 October 2011

NOTE: See note from 1.65 if you are upgrading from 1.64 or earlier.

  • Fix - RightReportsPrinter class. When a function occurs inside another function for an equate, we need to evaluate so that the final eval function can occur correctly.

  • Internal - Moved FileInfoQueue from the PrintReport to the class properties.

  • Debug window enlarged. Also added Index, Time, Clear and resize features.

  • Template Fix - correct the order of code generation for legacy apps in the template for the EditReports window

  •  

Version 1.72 GOLD ... 16 September 2011

NOTE: See note from 1.65 if you are upgrading from 1.64 or earlier.

  • Fix - Invalid variable declaration - QueuePos in the editor window.

  • Fix - Destination drop down changes dependant on destination selected if forced.

 

Version 1.71 beta ... 9 September 2011

NOTE: See note from 1.65 if you are upgrading from 1.64 or earlier.

This release focuses on some fixes when using Global variables in the report designer.

  • Fix - if calculation is added to end of a branch, was getting the order confused.

  • Fix - for function in a conditional variable set.

  • Fix - time pictures - where @t13 and 14 are used. Treat anything below 100 as 0 (or blank).

  • Additional embed points in ReportEditor window template.

  • TPL change - use formula or print dialog for Destination detail (dependant on output selected) where destination is pre-selected.

  • Included dctx in the install.

Version 1.70 beta ... 13 July 2011

NOTE: See note from 1.65 if you are upgrading from 1.64 or earlier.

This release focuses on some fixes when using Global variables in the report designer.

  • Template generated class - don't init dataobject if already inited. DataObject init now has addfields, addorders and addrelations (rather than separate call).

  • Template changes - more embed points, arrow button is suppressed in text reports, ?FormSheet selected on bandcontrol selection, files for list made 255 chars.

  • Text reports - Picture @t14 returns . if 0. 1024 replaced with equate. Cater for bands with > 1024 text chars (for text based reports). Still use 1024, but rap to another detail line where necessary. Rapped text was creating an extra char in some cases. Header and footer strings increased from 1024 to 4096 chars.

  • Fix - totalling required upper case total fields.

  • Change - default new fields to Computed (type) and No (clipped). Also goes straight into EIP mode for the name of the new var (also for totalling).

Version 1.69 beta ... 20 June 2011

NOTE: See note from 1.65 if you are upgrading from 1.64 or earlier.

This release focuses on some fixes when using Global variables in the report designer.

  • Template & Class change- fix for "variables used in reports": Allow picture use, variable is now available in the global field list at runtime (for reports).

  • Template fix - Prompt (for local and global variables) was not editable

Version 1.68 beta ... 9 June 2011

NOTE: See note from 1.65 if you are upgrading from 1.64 or earlier.

This release focuses on some fixes to the Editor. Useful for the report designer, but no impact on the end user (for printing).

  • Template & EIP Class - fix for EIP in ABC (did not do both fixes for legacy and abc in 1.67 - TakeEvent moved in front of editor takeevent, get(listcontrol.queue) moved to class. New prop CurrentPointer, to verify when saving that the record is the same queue record as the one fetched.

  • Template tweak - cater for TabTree in a the Formula editor window (was not selecting the correct tab for the passed picture)

Version 1.67 beta ... 7 June 2011

NOTE: See note from 1.65 if you are upgrading from 1.64 or earlier.

This release focuses on some fixes to the Editor. Useful for the report designer, but no impact on the end user (for printing).

  • Template - fix for calling FontDialog (was using the incorrect parameter for the fontstyle (so was not being set correctly).

  • Editor fix (requires draw 3.04) - When deleting a control in multi-select mode, was not selecting the next control correctly.

  • Editor Fix (tpl and class fix) - when in EIP mode and switching to another control, was not saving the value andthe EIP mode was not closed.

Version 1.66 beta ... 3 June 2011

NOTE: See note from 1.65 if you are upgrading from 1.64 or earlier.

This release focuses on optimization (thanks to our trusty Profiler) - running reports, and loading the printreport option page. Also some general cleanup. EIP template is moved to a class.

  • Template - tpl view option to create automatically (otherwise declared in code manually)

  • Template fix - Use tpl vars for RR procedures (specifically editformula and LookupPic

  • Email address used can be 252 chars (was limited to 50)

  • Class Fix - if using file and key not specified (or none), then set in primary key order record order (for flat files).

  • Regression fix in 1.65 for legacy (erroneous use of the DataFileManager.File pointer)

  • Resize tweak - don't allow ResizeDelta to be > 3 and if region lands outside min and max ranges, then reset to within the min/max range

  • Editor fix - when deleting a loop that was immediately proceeded by another loop, was deleting the proceeding loop.

  • EIP class fix - when clicking off a drop list (or escaping), was not closing the control. Also, regression fix in 1.65 - you must dbl-click on an item to activate EIP (or hit enterkey).

Version 1.65 beta ... 23 May 2011

NOTE: You must delete the 4 instances of the Edit InPlace extension template on the RightReportsUpdate window. EIP is now handled in the class (not the additional template).

This release focuses on optimization (thanks to our trusty Profiler) - running reports, and loading the printreport option page. Also some general cleanup. EIP template is moved to a class.

  • Object - Debug statements only compiled in debugmode.

  • Internal BuildOrderList - handles keys only (not User Selects option as well) - used for lookups.

  • Addition: Can handle lookup where primary is set to "None" (IOW manual relationship).  BuildLookupList. PrePrimed option in SetWithKey method provides a set(key,key) for this. ClearLinkingKeyDescFields (when key is ascending) clears to 0 (or blank). Means that key fields not specifically assigned will be blank. LoadLookup uses field primed values. Lookup uses the secondary file to store additional linking fields info in this case.

  • GetFileFieldValue - allows a derived method for getting the Report Files field value (rather than using the file properties). This makes loading a report for printing and editing much quicker.

  • CleanFileName - strips auto-generated invalid chars from the filename for output.

  • AlwaysUseFiles property - allows reports to always use files (not generated views). In TPS, using files is about 40% faster than a perfectly constructed view.

  • Datamanager class uses ABC methods for file handling (if in ABC). New methods - NextRecord, PreviousRecord, AddFileManager, _GetFileManager, OpenFile, CloseFile, Get (can handle ABC class use, rather than simple next() or previous(). RRUseABCClass project define is used to indicate this to the class. TPL generates AddFileManager calls for files used in reports.

  • Fix: Field points to the handle of the field (in the Datamanager.fieldQ). Was doing a simple equate (thus containing the contents rather than the address). (Good for lookups or loops where None is select as the primary file).

  • SendKeyToLookupQ - Key name uses upper (for case insens testing).

  • Fix: ServerOrder can have multiple field names specifying the order (encased in <>).

  • Previewer - only get the LastOutputFiles q and parameters if the window is not hidden.

  • New method CheckForNulArray - used to test an array dim validity before doing an evaluate (causes GPF if invalid).

  • EvalFQ tries to get the field using it's name (before looping through the queue to test if an initial try didn't get the field name first time).

  • Fix: ServerFilter option gets "simplified" (leaving primary field names un-evaluated)

  • Old ReportPDFGenerator class no longer utilized by default. Rather uses the ReportToPDF generator.

  • AlwaysUsePreviewer overrides the AutoReport property's force hide previewer.

  • Superfluous call to self.FileHandler.DisposeCreatedString() no longer used after SetFileFieldValue.

  • Fix AssignCurrentSource: returns errorcode if can't find in the datasource (prevents GPF when a datafile is delete from the dct).

  • Don't change Filename extension (for rept output) automatically if FileName extension manually set to a customized text extension.

  • New class RightReportsEIP - handles EditInPlace on the update window (rather than the extension template). EIP template stuff moved to the RRUpdate template.

  • RightReportPreviewer now takes an options parameter (for AutoReport, AlwaysUsePreviewer).

  • DataManager generated files renamed to 5 chars of app name (like normal source generated files (rather than 3 chars of appname).

  • Fix for suppress field (where entire table was suppressed). Not consistently suppressing fields.

  • TPL fix for WebReports - only setsessionvalue for user prompted values if prompt is not hidden.

  • TPL fix - PrintOptions window - Email Option select also enables file type selection.

Version 1.64 beta ... 25 February 2011

  • New var NoRecords can be used when NoRecords are found (to print a NoRecords Band).

  • New method OverrideRRFormat allows specific field overriding code in the application.

  • Increased FieldValue (loc data field in the SetQueue) to 2048 - was clipping a fields value > 1024.

  • Image control consistently uses textvalue in the itemqueue (instead of ImageName).

  • Previewer - OnlyResizePages property allows other resizers to resize buttons, etc.

  • Printer - LinesPrinted counted correctly.

  • Printer - EmailAddress property

  • TPL change - allow PrintProc to be in an external dll.

  • TPL change - TNA stuff removed from template.

  • TPL change - if Makeover is disabled on the PrintPreviewer proc, then don't generate makeover code.

  • TPL fix - PrimarySort code was being generated into all methods.

  • TPL change - WebReportOptionsCode, added template embed points for optional code.

  • TPL fix - Output set in PrintOprtions was not causing Previewer to be hidden.

  • TPL fix - allow RRPrintOptions to have flaxible parameter names.

Version 1.63 beta ... 8 September 2010

  • NetTalk WebServer support. (Includes 2 new extension templates for the SetPrintOptions and PrintReport procedures). RightReportsPrint procedure accepts an optional group containing values for user variables. See JumpStart for details.

  • Template change - XML Export forces file and record boundaries in the save and load command (for xFiles change).

  • Template change - more embeds added to the generated procedure routines (in the PrintOptions window).

  • Tree Class fix - @G user variables were not displayed in the field list.

  • Class fix - PrimarySort, UserV, FileName properties increased to 252.

  • Class fix - LoadUserValue returns default if the GlobalClass is not initialized (NTWS support). PrintReport only sets the filename if the filename is passed. ShowUserPrompt sets the userPrompt control text.

  • Class Fix - SetFileNameExtension was not always picking out only the filename.

  • upgraded RightReports01.tpw to 1.65

Version 1.62 beta ... 17 August 2010

  • _CleanDataSourceQ - clears values out between printing.

  • GetFileFieldValue, Set - uses created string to return value (instead of any - which leaks mem).

  • Removed superfluous debug logging

  • SetFileWithKey - added DontClear parameter (if values are preset)

  • ChangeFieldName/BindFileRecord - allows a changes to be made in derived code (for filters).

  • OpenViewFile - viewfile record is cleared after view opened.

  • AssignServerFilter - Server Filter assignment fix. Also, Server order is set (must be an order). If order is not set, then result set was intermittent.

  • PropertiesGroup uses the same structure as the BE:CPropertiesGroupType (some variables lengths were mismatched)

  • FieldName lengths increased from (40 or 30) to 100, and pic lengths to 51.

  • Filters with '<somename>' instead of <somename> handled correctly.

  • SaveUserValue and LoadUserValue - Long UserValues (i.e. >255 chars) catered for.

  • Kill method frees and clears all var queues (for next report or report repeated in same thread session).

  • PrintReport - Wait2Window MDI attribute cleared so that PrintReport can be called from a SDI interface.

  • Both AutoReport and normal print use the same routines (in PrintReport).

  • Band queue ordered correctly (in some cases was not printing the header at the top.

  • ShowUserPrompts - AutoReport does not show, but values are primed correctly.

  • TPL change - added embed points. Init code moved to before OpenWindow (for autoReport). SendEmail Procedure code generated (if NetTalk exists in the app).

Version 1.61 beta ... 26 May 2010

  • ABC TXAs had a spurious file from the example app.

  • AlterUserPicture method (Printer class) - allows override of the default user field's picture in the Print Options window.

  • In Data class, pPropSQL parameter (in init methods) changed to a long.

  • Template fix - missing missing %UseRRPropSQL template var (regression in 1.59)

  • Support for older versions of PDFXTools

Version 1.60 beta ... 12 May 2010

See Note for 1.59. This version just contains a workaround for the template in clarion 7.1.

Version 1.59 beta ... 11 May 2010

Note: NO TXA import required if upgrading from 1.53 (although re-import of the previewer is recommended for additional report output file type support - see Add outputs to the Previewer window).
Note: You can create a lookup for a user variable on the PrintOptions window to enable the user to select a value for the user variable from a selection. See The_RightReportsPrintControls_Control_template for details.

General changes:

  • Previewer can select output (rather than PrintOptions window). New control template (RightReports_PrintPreviewOutput) to allow additional outputs to be supported by the previewer. HyperActive can preview files (like PDF) if added. INI File stores temp list of last used files (and last output selected). Preview controls group moved to above the preview panes (to allow for output controls below). Requires txa import. Uses WMFParser class (with assign target class) to handle report conversion to selected output.

Template Changes:

  • Previewer supports Page# / OfPages again (regression some time back).
  • You can select whether the PrintOptions window can still select the output (or whether it is only selected in the Previewer now). Controls on the PrintOptions window are hidden accordingly
  • In the PrintOptions window, a Runtime report variable can have an associated lookup procedure. So a lookup button will appear (like the date lookup) if the variable occurs as a User variable. This is setup in the PrintOptions control template on the Options tab (User Variable with Lookup).

Class changes:

  • If the RightReports tables are SQL, then the SQLFilter and SQLOrder are displayed in the primary and secondary loop options. Otherwise these fields are hidden.
  • Previewer class resizing - SizePages and ResizeWindow (new way) - uses 3 groups: 1 around the previewer controls, 1 around the previewer image panes, and one around the output controls. (the old way is still supported as well - making use of the new method OldResizeWindow).
  • New Methods: PrintOutput, AddOutput, Changeoutput, ChangeOutputFile (control Output possibilities of the Previewer), getLastFile, StoreLastFile, GetLastOutput, StoreLastOutput (used for saving between sessions), RemoveUnwantedPages.

Version 1.58 beta ... 21 April 2010

Note: NO TXA import required if upgrading from 1.53

Template changes:

  • Added generation of the REP:EnablePDF compile/omit flag (rather than in the class).
  • Only use the %HandcodedViews variable if it exists (i.e. to not declare views for tables requiring handcoded views)
  • Only generate OfficeInside code if the template is added and the features are not disabled.
  • Perform a refresh for the properties of a Secondary (when the Order is changed) immediately upon key change.
  • Move embeded code from the LookupPicture procedure to a control template (this means that upgraded code will be implemented into your app automatically rather than via a TXA import).
  • PrinterOptions template - Fix filename generation (when selecting a file). PDF/TXT extension auto-appended dependant on the status of the SendToPDF check, and Word and Excel filenames are generated if blank.
  • PrinterOptions template - SendToPDF saved and restored between sessions. Fix SendToPDF disable/hide status (for text/graphic reports). Only enable Word/Excel output if graphic report.

Class changes:

  • Editor Class - for text reports, destroy the region control, and create a box control in it's place (so that the region does not grab the events meant for the text controls of the bands)
  • Printer Class - set self.filename to the destination filename passed in the PrintReport method. Also clear the SendToPDFile flag if Word or Excel output is selected.
  • PrinterClass - suppress call to DrawImage (in PDF output) - causes GPF on output.
  • PrinterClass - fix Word and Excel output generation.
  • PrinterClass - Word/Excel/PDF output selection goes to the Previewer first (for page selection, etc) before printing out.
  • TreeEditorClass - Add a new secondary loop below the Primary.

Version 1.57 beta ... 31 March 2010

Note: NO TXA import required if upgrading from 1.53

Template changes:

  • Fixed %MPFunctions missing var error
  • In CloseEdit embed point (EIP template) call the refresh for refreshing the range values after editing a key and source file.
  • Set Debugging property
  • Move REP:EnablePDF declaration to the Project defines.
  • If OfficeInside is disabled, then don't make the OfficeInside functionality available to RightReports.
  • PrintReport controls template - fix filename generation (correct prefix dependant on the file type selected).
  • Save SendToPDF state between report outputs.
  • For Text reports, disable word and excel output generation.

Class changes:

  • TranslateText parameters switched (and TranlastionID made optional).
  • BuildTree - Set display for debug Header and Footer correctly.
  • NumberOfLines in properties change EditType to 0 (editable).
  • When selecting a different Key, the range prompts are changed at runtime (new method RefreshRangeValues).
  • When selecting a different source, the key is changed to User Selects and the range prompts are cleared.
  • Add TranslationText call to hard-coded text messages.
  • Take previous loop out of LoadOneToDefnFilesQ (not supported in most backends).
  • Fix for PDF output (now makes a pdf file). Note: Graphics are disabled at this stage.
  • Fixed Word and Excel output (disabled for text based reports).
  • Word and Excel reports are previewed first.

Version 1.56 beta ... 29 March 2010

Note: NO TXA import required if upgrading from 1.53

Template changes:

  • Binded Functions list automated by the MProj template (requires MultiProj version 2.80 to automate the functions list). Overrideable per function.
  • Split list of Variables off from list of Functions (for binding in reports).
  • GetLastDFIRecordNumber code for SQL compliant fetch (for last number). Uses a view to fetch the last number.
  • DatePicker can be specified in another app (Multi-DLL support).

Class changes:

  • New method GetLastDFIRecordNumber (so that derived code can be implementing in the app). Was using previous() - but not SQL compliant.
  • change DetailLen in BandQType queue to a long (rather than a byte).
  • GetBandFromQ - GetCondition, GetBandHeight, GetBandWidth, etc use this method to locate the correct BandQ record (removes duplicate code)
  • For text reports - add DetailLen item to the BandQ item list.
  • When looping through the DefnFiles (to create the tree of bands) clear the treeorder field to allow the set to start at the beginning.

Version 1.55 beta ... 4 March 2010

Note: NO TXA import required if upgrading from 1.53

Template changes:

  • Don't store INI resize values if outside the range.
  • New embed point In ImportReport routine (template generated code).

Class changes:

  • Improved resizing in the editor. Uses the sheetcontrol (rather than the window) as reference. MouseDown and Mouse Up events are handled in resize region (even if mousex and mousey return outside the region). Don't change cursor in other resize region if already resizing.
  • OpenPrintToFileAuto routine sets the text filename (if printing to text) before creating. New property AutoReport.

Version 1.54 beta ... 26 February 2010

Note: NO TXA import required if upgrading from 1.53

Template changes:

  • Template generated code disabled (if RightReports disabled).
  • Template fix - double up on single quotes in file description in generated code.

Class changes:

  • Use CriticalSection - either use NetTalkCritical Section (if NetTalk is added) or the ABC one. (New construct and destruct, wait and release methods to handle the critical section).
  • Transaltion support for 'None' (use property NoneText)
  • Adds all datasource names to the datasource names if Primary is selected as None.
  • UnlinkedField check uses relationqueue (rather than key queue). Additional limit fields must be assigned to secondary files in the unlinked fields.
  • Fix - create(ViewFile) is only called if the error is errorcode(2).
  • Undo feature in the Formula Editor (Uses CtrlZ and CtrlY - to a undo Q for the formula text). New method AddToUndoQ, construct, destruct.
  • EvalFQ caters for functions, stored within variables (also recursive variables).
  • SaveUserValue and LoadUserValue are used to load and save user values entered in the PrintReport options window between sessions. Destination, fileName, Landscape, Email, Printer, Primary Sort order are now stored/restored.
  • Fix - <> angle brackets not added to functions.
  • DefnCode property set in the printer init method.

Version 1.53 beta ... 9 December 2009 (NB: TXA import required)

   Note: 1.53a includes the assert to warn of a xFiles upgrade requirement. 

Note: You must re-import the TXAs. Unfortunately due to a Clarion bug, there's no way to avoid a compile error now that the templates need to start using the use variables for previously imported windows' populated controls. The new TXAs force a valid use variable in the controls that allow you (well RightReports actually) to use those use variables in code.

Summary:

Lots of little changes - but moved code from template to class, removed tna code, added description feature (for table select). Also fixed the date user lookup regression (from 1.52). Fix report import and import: Was not consistently importing reports correctly (Requires xFiles 2.00).

Template changes:

  • Template assigns use variables to properties (Print Options window).
  • Template calls AddRelations and AddDataSource with file descriptions (from the dct).
  • Printer window template - you can handcode a particular table's view if required (rather than get the template to do it).
  • Editor window template - assigns the sheetcontrol property to the sheet control (populated by the TXA)
  • Import template - IgnoreGroupTags property set (BandControls properties were not imported correctly).
  • Printer options Template - removed some TNA only code. Initalise (sic) called without passing the control handle of the first control.
  • Export Template - add order to views.
  • Export Template - correctly define the views to loop through the parent file and inner join to the child file for exporting.
  • Export Template - only project single fields from the parent files in the view (so that not all the fields are projected, thereby introducing duplicate field names in the tags).
  • Export Template - Split up Export routine - so that handcode can be embeded in to the routine as required.

Class Changes:

  • Class changes - AddDataSource method returns correctly whether the DataSourceQ was added to or simply updated.
  • Description field added to the files list (which means you can explain tables in the dictionary).
  • Range for a key - doesn't add quotes if quotes are already there.
  • Allow user fields to be assigned to the secondary ranges correctly.
  • Sort Queue - increased field lengths from 20 to 120.
  • Editor class change - SyncControlWithItem moved (for text reports) to new derived method DrawItem.
  • Resizing changes (editor window) - relative resizing was not working correctly. Sizing made relative to the RR sheet control. New property SheetControl contains the value of the sheet control populated by the TXA.
  • Previewer class - just disable not-required controls when 1 page is in the previewer output. Also disable controls if 0 pages in output.
  • Printeroptions class - default output to Screen. StoreUserPrompts uses local variable rather than stored property (otherwise doesn't always get cleared). UserControls properties (rather than assuming the order of the controls in the PrintOptions windows). Date lookup regression fixed.
  • Printer output class - if NextRecordFound fails, debug output. Delete translateClassifications method (TNA only). ShowPriSortQueue sets the pos of the primary order and hides if nec.

Version 1.52 beta ... 22 October 2009

No TXA import is necessary if you are upgrading from 1.50.

This release is primarily to integrate the version of RightReports used in TNA with the current version.

Template changes:

  • Template now uses the Object01.tpw - which creates runtime embed points for each method (for deriving locally).
    NOTE: This may mean that code written in the previous embed points gets orphaned. The affected procedure could be the RightReportsPrint procedure
  • Template change - Import Export options moved to the global template (only set in one place for both import and export).
  • New OverRideRRFormat method allows runtime change of format in the exe (i.e. a derive point).
  • Template change - allows custom functions to be added to the RightReports functions list from another dll (for multi-dll applications).
  • Editor window - variable and function queue sorting moved to the object.
  • UserEntry control ID variable - stores the ID of the entry controls for the PrintOptions window. Used to check if DatePicker must be called or not.
  • PrintOptions window - Primary Sort entry control resizing moved to the class.
  • TNA specific code removed from the template.
  • %SetFamily returns the family.
  • Simplified template #at inserts (put the #if into the where())
  • AssignGlobalClassPointer -
  • Import - check that a quote has not been escaped when importing.
  • Printer - ReportOptions moved to class properties (affects some methods that were being passed the options).
  • Printer - PrintReport split into 3 to enable code into places before and after the printreport command.
  • Printer class - call GlobalRRFromat (in picture generation so all formating is handled in one place).
  • Printer class - use AfterWaitWindow to add window dressing to the progress window (like makeover and drawheading, etc).
  • CallLoadClassification, PrimeUserPrompts, BindRest and other methods code (for TNA) - removed to TNA.
  • CancelButton - closes the print window (legacy).
  • NewMethod - CallUserLookup and CallUserDateLookup will be used in future to trigger a lookup for a user entry other than just a date.
  • Tree class - AddBuiltIns uses the gnereic method (rather than hardcoded).

RightReports class changes:

  • Construct method calls constructor. This allows code to be embedded in the construct method.
  • BuildGenericFieldQ calls moved from the template to the class.
  • Log method allows severity level of log - to allow exhaustive debugging to be removed.
  • GetFileFieldValue returns '' rather than all null chars if the field consists of nulls.
  • RRFormat, RRdeFormat, TimeStringToValue, OverrideRRFormat, TimevalueToString, Log methods all moved to the global class (so that custom code can be entered in one place).
  • AddItemToFQ method - allows custom addition of a field to the field queue.
  • New field in RelationQ - UpperRelationName (uppered when adding so that case-sensitive lookups on the queue can be performed).
  • in GetNumRecords (for progress when printing report) - test if the key is valid (prevents GPF) before using it.
  • In OpenSource - use 42h mode to open a datafile (was using 40h)
  • In OpenSource, GetViewFileHandle to override the handle for a file in a view (lke for the classifications virtual file in TNA).
  • In LoadFQ - was not loading internal functions into the field q (FQ)).
  • PrintReport parameter change - pPrintToFileDetail is a string handle, because the string needs to be changed in the method.

Version 1.51 beta ... 13 October 2009

No TXA import is necessary if you are upgrading from 1.50

  • Clarion7 template fix. Syntax in the template was incorrect.
  • Preview feature - double click on a page (in multipage view) jumps to a single page view of that page.

Version 1.50 beta ... 9 October 2009

A re-import of the RightReports txas is recommended for this release (should be the last one.

  • Data class (SetWithKey) - when calling view doesn't set the key
  • Data class (SetWithKey) - performs evaluate on the to and from values in case a formula is used.
  • FormulaEditor class - select the formulastringcontrol end at window open
  • FormulaEditor control template and class - alrt on formulastring control for CtrlA and MouseLeft2. Intelligent selecting (selects a whole variable or a whole formula and params or a whole word on double click).
  •  FormulaEditor class - Overwrite selected area when inserting variable/values/operators.
  • PrinterClass - fix range setting (SetPrimary method called with the correct values).
  • PrinterClass - calls SetWithKey after evaluating the to and from values.

Version 1.29 beta ... 6 October 2009

A re-import of the RightReports txas is recommended for this release.

  • TXA fix - excluded example code from the txas.
  • Printer.ShowUserPrompts - assert if controls on the Print window are not correctly ordered.
  • Print class - TakeEvent method to handle lookups (at this stage). Ultimately the template code will be moved to this method.
  • TNA classification template code removed from the print control template.
  • New Control template for the Print window (replaces the deprecated extension template).
  • Print control template - calls datepicker lookup directly (rather than through ABC template).

Version 1.28 beta ... 5 October 2009

NB - see release notes for 1.27

  • TXA fix - resizing in RightReportsUpdate window. Corrected control specific overrides.
  • Premier window (TXA) - added tips for controls and hot keys for those controls without.

Version 1.27 beta ... 5 October 2009

A re-import of the RightReports windows is recommended in this release.
This release requires Draw version 2.79 or higher.

  • New Previewer class and template.
  • Previewer fixes: window resizing, image stretching.
  • Previewer Features: turn on/off pages to print, zoom of all pages in multi-page display mode, zoom to one page (right-click menu), minzoom and max zoom properties allow easy customizable zoom limits.
  • New Formula editor class and template.
  • Formula Fixes: Always adds angle brackets to variables used in a formula.
  • Editor fixes: CallImageDialog does not change the path, copies file to current dir (was not saving the path previously), resizing bugs (especially when returning focus to the editor window), template uses variables to determine the controls (rather than fixed vals).
  • Editor Tree fixes: Add new item to below the current item, select new item. Delete item (calcs) doesn't change properties of exisitng items.
  • Editor changes: Selection method improved (always makes smallest control top most), SetCursor upon option selection, Resize canvas routine moved to a method.
  • New fields method: HandleEIP. Handles the checking of an added/changed field for a duplicate.
  • Editor template - remove additional superfluous #sheet control
  • EditInPlace change: Add spaceKey alert for editing.
  • Printer fixes - SetPrimary range - 3rd element was being set to 2nd from element.

Version 1.26 beta ... 25 May 2009

  • Template change - RightReportsPrint window matches controls correctly (fix for C7).
  • TXA change - removes invalid SEQ statement.

Version 1.24 beta ... 17 April 2009

  • RightReports globalclass - handles suppressed fields checking at runtime.
  • EditIn.tpl - Allow for derived queue structures. Allow for non-standard Browse class names (i.e. other than BRWx).
  • Range support in the primary loop in a file (editor window).

Version 1.23 beta ... 8 January 2009

Summary: Fixed - printing blank reports when file previously opened.

  • RightReports class change - RightReportsData based on RightReportsBase class.
  • New method - HandleError. Allows messages to be translated and handled in one place.
  • DisplayWarnings allows warnings to be displayed as messages (for debugging)
  • When Lookup file is changed, then the data is refreshed (was not adding the fields in a lookup initially).

Version 1.22 beta ... 23 December 2008

Summary: Fixed non-dispose of Draw object. Requires Draw 2.74 (so kill isn't called if init isn't called). Added translation ability (of messages).

  • RightReports class change - Re-instated the call to the dispose(Draw) method. This removes a memory leak.
  • RightReports base class - at this stage contains common logging features only. All right reports classes (not based on a class) are based on this class to enable logging throughout RightReports. Constructs call the parent.construct to set the logging.
  • New method: TranslateText used to translate text for messages in the RightReports classes.
  • Word and Excel report generation moved to the template (uses code generated in the PrintOtherOutput derived class).
  • New method: DisplayFile used to add template generated HyperActive code to display an output file after generation.
  • Fix - saves Linking Fields when a LinkTo parent is None.
  • Tpl change - detects Global HyperActive template addition and adds code to the Displayfile accordingly.
  • Tpl change - OfficeInside detection to template generated code (not compile equate).
  • Tpl change - embed points at 2500 moved to 2512 (reduces the possibility of template code overlap).
  • StartPrintSelection window - detects controls correctly (so prompts disabled and enabled correctly). Also primes filenames (Excel and Word correctly. Regression fix from 1.14

Version 1.21 beta ... 2 December 2008

Summary: Regression in  1.20 - causing GPF when deleting a report.

  • RightReports class change - Removed the call to the dispose(Draw) method temporarily. This imposes a small memory leak which will be fixed in due course - but prevents the GPF when deleting a report.
  • Template change - compute the INI file to use (from %INIFileName) - using the %StripPling function.
  • Template change - associate the RightReports local extensions with the global extension (requires the global extension addition).
  • RR class change - destroy the ImageControl in the destruct method.
  • RREditor class - destruct calls the parent destruct (i.e. the DrawPaint destruct)

Version 1.20 beta ... 1 December 2008

Summary: Solve memory leak (causing Editor to fail to draw controls), Resizing issue in the editor (cursor not tracking the resize bar correctly). RightReportsPreviewer has PgUp, PgDown, End, Home keys associated with the relevant buttons in the TXAs.

  • Enabled command-line switchable logging.
  • Dispose the Draw object in the destruct method of the RightReports class.
  • RightReportsEditor class kill method calls the parent.kill method - and destruct method calls the kill (if not called already).
  • RightReportsPrinter class disposes the PrintQueue and the SavQ properties.
  • RightReportsTree class disposes the DefnCalcsQ and the DelDefnFilesQ queues.
  • Template: RightReports_HResize and RightReports_VResizeControl templates have Min and Max report designer size (can be variables or constants).
  • TXAs update - RightReportsPreviewer has PgUp, PgDown, End, Home keys associated with the relevant buttons in the TXAs.

Version 1.19 beta ... 19 November 2008

  • Clarion 7 compatible install
  • Template and object change - remove reference to the Record Type groups. Just used the record groups themselves (without the over). Removed the Groups method.
  • Template change - use Template variables for the prefix and record - rather than hardcoded.
  • Class change - use :label rather than who when getting the variable contents from a file's record. Fix for SQL (using external names). Who was not matching the name correctly to the label.

Version 1.18 beta ... 12 November 2008

  • Could not edit the Local Fields condition and value
  • Internal improvements to filter
  • Lookups werent working in some cases
  • Formula editor cuts off report variable values at 255 - increased length of value fields to 1024. This requires a dictionary change (see the hints on dictionary changes):
    • In RRDefnFields, change the length of Value to 1024
    • Also change the length of ElseValue to 1024
  • Calendar buttons are working now on the print window
  • You need to re-import both the print and update windows for some of the above changes to take effect
  • Text-boxes are printing properly now on the printing side

Version 1.17 beta ... 10 November 2008

  • Made changes to the Local Variables List - the column order was wrong and the data was completely wrong
  • Made some changes to ImportTXR regarding importing the correct lookup and secondary file names
  • Changes made to the report structure were not always being saved anymore
  • Stopped the program freezing in Legacy when a report is imported from TXR
  • ImportTXR was filling in the key name with the filter value by mistake
  • Progress bar was not always displaying correctly when printing, but now it seems fine
  • You can select a variable type for Global and Local variables now again - the list was empty
  • Sorting by key works again - the records were printing in record order
  • Because of changes made to the update window you need to re-import the RightReportsUpdate procedure. You dont need to re-import all the windows though, so you can just import RightReportsUpdateABC.txa or RightReportsUpdateLegacy.txa.

Version 1.16 beta - 27 October 2008

  • For MSSQL tables, the RRDefinition record has become too large. Made the following changes:
    • Changed ServerOrder length from 1024 to 512
    • Changed SQLOrder length from 1024 to 512
  • Did the same for the RRDefnSecond table.
  • Some improvements in the ImportTXR procedure.
  • Deleting a record caused the update window's position to act chaotically out of control. Fixed this.

Version 1.15 beta - 22 October 2008

  • Fixed some issues relating to keys that have descending fields.
  • Opening files in Read Deny-Write mode now when printing.
  • Fixed some spontaneous resizing issues.
  • Added server-side filtering and field-order options for both primary and secondary files.
  • Added the built-in variables as permanent features to the Global Variables list.
  • Made some table changes (added fields to the end of the record declarations):

RRDefinition:               ServerFilter     string (1024)
                                 ServerOrder    string (1024)

RRDefnSecond:           ServerFilter      string (1024)
                                 ServerOrder     string(1024)

RRDefnFields:            NoEdit              long

See the FAQ on making RR table changes for tips on how the implement these changes. Also, if you are using FM2 or FM3, don't forget to increase your table version numbers.

  • The windows need to be re-imported (RightReportsFunctionsABC.txa or RightReportsFunctionsLegacy.txa)

Version 1.14 beta - 5 September 2008

  • Improvements to the progress window
  • Fixed ImportTXR - unknown filename 46 error.
  • Added report width and height options.
  • The PrintReport procedure has now for the greatest part been migrated into the RightReports classes, and the rest of the code is template-generated, in order to prevent the need for re-importing this procedure all the time. You still need to import the procedure though - in fact it needs to be re-imported for these changes to take effect. Import the RightReportsPrintABC.txa file (or RightReportsPrintLegacy.txa). Take note that importing these procedures will lose code in your embed points, make sure you save these.
  • Some updates to the docs and FAQ.
  • You can now resize an item on the graphic editor using any side of the bounding box, instead of just the bottom right corner.
  • Added some new sizing icons as well. You need the latest version of draw to see these changes (version 2.70).

Version 1.13 beta - 22 August 2008

  • More fixes the the window-going-off-screen problem - it seems stable now.
  • Fixed some makeover code in RightReportsPremier.
  • Some small amendments to the docs.
  • Created a RightReportsTablesSQL.txd file that you can import into your dictionary if you are using an SQL backend. You don't have to use this (especially if you have already imported the tables), but if you use the usual txd, take note that the Path Name for each file is a tps file and hence needs to be changed. Also, the Notes Memo for RRDefinition will then have to be changed to a String (1024) and moved to END OF THE RECORD.
  • Fixed some multiproj related bugs
  • Added a toggle button to the Editor. When you press it in, you see field pictures instead of field names. This only works for cases where the string ONLY contains a field (in angle brackets) and no other text. Some pictures may not yet look as desired - please contact us at support@capesoft.com with suggestions. You'll need to re-import the RightReportsFunctionsxxx.txa file for the button to appear on our screen.
  • Added a checkbox to the RightReportsUpdate procedure's local RightReports extension - allows you to specify that the Files List on the Files Tab will not be sorted alphabetically - rather, it will maintain the dictionary order.
  • You will no longer need to remove and re-add the Global Extension after re-importing the tables (should that ever happen again).
  • You need Draw Version 2.68 or later for this version of RightReports to run.

Version 1.12 beta - 19 August 2008

  • Removed the GetStringWidth error in the RightReportsPrint procedure (only appears when PDF is enabled) -a re-import of the RightReportsPrintxxx.txa is needed.

Version 1.11 beta - 19 August 2008

  • NB: Check the verion history for 1.09 for important table changes, etc.
  • Fixed the error where blobs were causing compile errors - blobs are ignored now.
  • Sped up the Global Extension loading process
  • Fixed an error relating to the Edit window disappearing - it was actually off the screen
  • Fixed the TXA file - it contained references to the Winevent Extension

Version 1.10 beta - 15 August 2008

  • See version 1.09 below
  • Changed the template to not include dimensioned fields

Version 1.09 beta - 15 August 2008

  • Major structural changes - put most of the template generated code into classes
  • Added the new Data Sources feature, allowing users to use data sources such as queues and view when designing reports.
  • Added the ability to specify Relationships between these data sources.
  • Changes made to the dictionary (see the FAQ on Dictionary Changes on how to incorporate these)
    • Fields added to RRDefinition and RRDefnSecond:
      • SQLOrder        string(1024)
    • Fields added to the PropertiesGroup of RRDefnBandControls:
      • Textbox             long
      • RTF                   long
  • Added the ability for you to specify whether a field should be placed on the report as a Text Box, with the option of enabling Rich Text Format.
  • Fixed some bugs related to pressing the escape key
  • Made changes allowing you to use related files that have no linking key specified in the dictionary
  • Users could not change variable names for some reason - fixed that
  • Note: You need X-Files version 1.74 or later for the import and export of this version of RightReports to work!
  • Note: You need at least version 2.63 of Draw for this version of RightReports to work!
  • Pictures involving leading symbols, such as currencies etc., work now.
  • Many local and global variables populated by RightReports have become obsolete. See the FAQ on this topic for steps to remove them.
  • Note: Many global embed points have been moved to a local level, and hence your code needs to be moved. Look here in the FAQ on how to do this.
  • Lots of changes were made to most of the imported procedures, so you need to re-import the RightReports procedures (including the Import and Export procedures, if you are using these).
 

Version 1.08 beta - 24 April 2008

  • Took out the stops in the RightReportsUpdate procedure
  • Added some resizing code to the RightReportsUpdate procedure. This is template-generated code. Just make sure that you have disabled the "Save and Retore Window Position" option on the procedure properties.
  • Added a new window to the editor allowing users to select the appropriate screen picture. It is called RightReportsLookupPic. So additions were made to the RightReportsUpdate window to ensure that the EditInPlace template calles this procedure when neccesary. So you will need to re-import this window, or add these changes to the window manually. You need to Import RightReportsFunctionsABC.txa (or RightReportsFunctionsLegacy.txa) to obtain this LooupPic window too.
  • Also added a new RightReportsEditFormula window, which is once again called to edit any formulae in the RightReportsUpdate window. Steps to be taken here are the same as for RightReportsLookupPic above.
  • Some updates to the docs were made.
  • Descending keys now work for primary and secondary loops too.

Version 1.07 beta - 16 April 2008

  • Note that you need the latest version of Draw (version 2.62 or later) for this version of RightReports. Otherwise you will get errors regarding the FitWidth, FitHeight and Clipped fields.
  • Made the following changes to the RightReports tables (see the FAQ on Dictionary Changes on how to incorporate these):
    • Changed the length of the following fields in RRDefinition
      • RRDFN:ReportOrder to 256
      • RRDFN:Description to 256
      • RRDFN:PraimryFIle to 256
      • RRDFN:To1, RRDFN:To2, RRDFN:To3 to 100
      • RRDFN:From1, RRDFN:From2, RRDFN:From3 to 100
      • RRDFN:FontName to 256
    • Made the following changes in RRDefnFiles:
      • RRDFI:Name length to 256
      • RRDFI:ParentFile length to 256
      • RRDFI:KeyName length to 1024
      • Added the following key: RRDFI:EntryTypeKey (ascending on DefnCode and EntryType fields)
    • Made the following changes to RRDefnBandControls (inside the PropertiesGroup)
      • Added RRDBC:FitWidth         long
      • Added RRDBC:FItHeight       long
      • RRDBC:TextValue length to 1024
    • Changed the folloing field lengths in RRDefnCalc
      • RRDFC:FieldName to 100
      • RRDFC:ElseFieldName to 100
    • Changed the folling field lengths in RRDefnSecond
      • RRDFS:FromValue1, RRDFS:FromValue2, RRDFS:FromValue3 to 100
      • RRDFS:ToValue1, RRDFS:ToValue2, RRDFS:ToValue3 to 100
    • Changed the following field lengths in RRDefnFields
      • RRDFL:Name to 100
    • Changed the following field lengths in RRDefnTotal
      • RRDTL:Name to 100
      • RRDTL:TotalName to 100
  • Fixed some bug relating to the font colour in the editor
  • Added code allowing you to export to Excel. You need Office Inside for this though. See the section on Exporting to Word and Excel.
  • Added some code to enable the SQL filter.
  • Added the ReportType property to the Report editor. The user can use this field if he has several types of reports he wants to group together.
  • Major changes to the ImportTXR procedure. It should be working much better now.
  • Added a prompt column to the local and global variables tab. Allows you to enter the prompts for use variables here.
  • Changed the Report Structure List so that the header and footer always appears at the top and bottom of this list respectively.
  • Primary Source's range prompts can now be edited successfully .
  • The Legacy parent file editor did not work.
  • Got rid of the flickering on the Print window.
  • Added the FitWidth and FitHeight properties. In particular, you can set FitWidth to ensure that a string control gets adjusted to the length of its contents when the report gets printed.
  • Added the Linking Fields property to Lookups that have no parent files. Basically, this allows you to do a lookup based on a custom relationship between files.

Version 1.06 beta - 29 February 2008

  • For ImportTXR, imported user variables now have prompts assigned to them
  • Set a default sort order in the report browse for mysql applications
  • Had problems with MySQL so had to rename a number of the table fields - all Order, Type and Condition fields.  So you will need to re-import the RightReports tables, and remove and re-add the global template. This will unfortunately mean you need to re-import the RightReportsFunctions.TXA file too. Alternatively, you can change the fields directly in the dictionary. Here are the changed fields:
  • RRDFN:Type became RRDFN:ReportType
  • RRDFN:Order became RRDFN:ReportOrder
  • RRDFB:Condition became RRDFB:BandCondition
  • RRDBC:Type became RRDBC:ControlType
  • RRDFC:Condition became RRDFC:CalcCondition
  • RRDFL:Condition became RRDFC:FieldCondition
  • RRDFL:Type became RRDFL:FieldType
  • RRDFL:Order became RRDFL:FieldOrder
  • RRDFI:Order became RRDFI:TreeOrder
  • RRDFI:Type became RRDFI:ItemType

In the latter case you will also need to import RightReportsPrint.TXA to incorporate these changes into the hand-coded RightReportsPrint procedure.

  • To make sure exported reports still import correctly regardless of these field name changes, I changed the export template a bit. For this to work you need the latest version of XFiles, version 1.65.

Version 1.05 beta - 15 February 2008

  • New Feature: Badly named fields in dictionary tables can now have friendly names in the report editor. See the section on Renaming Table Fields.
  • Added functionality allowing you to filter records in a file in the report at time of print. See Preventing Access to Table Records.
  • Was not compiling in Clarion 6.2 and 6.1 because of a call to SetOpenMode. Fixed this.
  • Key range prompts were not appearing for a secondary loop if the parent file was set to None. Fixed this.
  • Order Fields for the Primary Source was displaying incorrectly (%KeyField)
  • Added resizing code to the Legacy window. You'll need to re-import the RightReportsFunctionsLegacy.txa file should you wish to see these changes, though.
  • Added drag-n-drop functionality for global and local variables.
  • Minor tweaks to shipped examples
  • Added some documentation on how to add RightReports to a multi-DLL application

 

Version 1.04 beta - 24 January 2008

  • Minor template bug fixes
  • split the _rr.clw file into two, as some of these files were too big and causing segdef errors to occur during linking
  • Some tweaks to the ImportTXR function. Still a work in progress.
  • Added Primary Source range prompts.
  • Big fonts was making the editor crash, fixed this
  • Some minor changes to the RightReportsTables.txd file that you need to import. Includes things like unchecking "Exclude Empty Keys" on the primary keys.
  • Note: Made a change to the DefnCalcs file: you will need to reimport the RightReportsTables.txd file, or make these changes in the dictionary yourself (note that if you re-import the tables, you will need to re-import the RightReportsFunctions and remove and re-add the global Extension too). I deleted the Condition field, renamed Condition1 to Condition and deleted the surrounding group. The same goes for FieldName and Calculation fields.
  • I removed the groups in this file because FM3 (or Clarion) was not happy with the fact that there were variables over other variables within a group. This meant I needed to change the template prompts for these fields - I gave them new names. Then had to make some hardcode changes to RightReportsPrint. Hence you will need to reimport the RightReportsFunctions.txa file.
  • For imported reports, string heights and fonts were defaulting to zero.
  • Secondary loops in TXR files were not importing onto the right level.
  • Got FreeImage to include Legacy in its global Extension. Note: So you'd have to download the latest version of FreeImage for legacy to work.
  • Small changes to the edit window - e.g. the tabs are scrolling now.
  • Added Legacy support! Yay!
  • Note: You need to download the latest version of Draw (version 2.60) for this version of RightReports to work. Go here: http://www.capesoft.com/accessories/downloads.htm#draw

Version 1.03 beta - 30 November 2007

  • Some table fields and names were being used explicitly by the template - changed this to use the values as entered in the template options instead
  • Added template options allowing you to specify the file extension of exported reports
  • Minor template fixes
  • The page form wasn't printing as it should anymore because I fixed the background colours for bands - they were suddenly printing white instead of transparent. Added a transparent property to bands which defaults to 1 and is available in the properties listbox. Note: There were some changes made in Draw to accommodate this, so you need to install the latest version of Draw, namely 2.57.
  • Added a horizontal resizing control template for the update window - add this to allow users to resize the property sheet
  • Fixed some totalling issues - the displayed totals weren't being filtered according to the selected loop in the report structure list
  • Fixed some picture size issues in the calculation editor
  • Stopped rightreports from gpf'ing if an open angular bracket is encountered without a closing bracket. Note The change was made to RightReportsPrint. This means you need to re-import the RightReports functions.
  • Totalling is now available for the primary loop as well
  • Note Moved some things in #Localdata to %DataSection. This means you may get some compile warnings r.e. label duplicated. You can just delete the relevant local variables from via the Data button to get rid of this.
  • There was a problem with the color chooser, which was causing the colors to be low integers i.e. black always. Fixed that.
  • The Hide, BlockStart and BlockEnd values for the last detail on the report was being zeroed. Fixed that too.

Version 1.02 beta - 16 November 2007

  • Before there was an FQ module generated for each table in your dictionary. Now we have added an option on the Advanced Tab allowing you to specify how many tables per FQ module. It defaults to 5.
  • The Global Template CPCS and Report tabs were too long, so they got split into two
  • If you have a large dictionary, you would have been getting the error: Link Error: Too many segdef in file. This has been fixed - the size of some generated procedures have been reduced.

Version 1.01 beta - 12 November 2007

  • Removed the OtherOrder field from the template, as it is obsolete. Also edited the RRAbleOtherOrder routine.
  • Made changes to the RightReports template, as well as EditIn.tpl, that allows you to now change the default destination if you are sending the report to a file instead of the printer
  • Note Changes to RRDefinition table: Made the Filter field longer to 1024. Added an EditAccess property.
  • Note Changes to RRDefnBandControls table: Added Justify, Clipped and Picture fields for use with strings.
  • Note Changes to RRDefnSecond table: Changed the length of the Filter field to 1024 and added an SQLFilter field.
  • Note When you re-import the RightReports tables in order to incorporate the above changes, the Global Template will loose its table information, so you will need to remove and re-add the Global RightReports Extension. We don't intend making very many more changes to the tables, unless it really cant be avoided.
  • Changed the template so that the full prototype is included in the generated procedures.
  • The preview procedure was not returning a value, although it was expected to
  • Gave a horizontal scrollbar to the property list, a vertical scrollbar to the drop down appearing when you edit a property
  • There used to appear a stop if a string had a '<' without being followed by a '>' - this is now gone for graphic reports
  • Included the FreeImage dll in the demo install
  • Minor updates to the shipped example
  • Note Removed the proptotype for the RightReportsBrowse procedure
  • You can now specify a picture for a string, as well as a justification.
  • It is now possible to prevent people from editing a report, by setting the RRDFN:EditAccess property to 1. RightReports handles this by disabling all editing features on the update window. You can still view the report, though. The way the value of RRDFN:EditAccess is determined is up to you.
  • Enabled the use of other report previewers, besides the built-in RightReports one. You will find where to set this on the General Tab of the Global Template. Depending on your choice, options for the chosen Previewer will appear on a new Tab on the Global Template. Choices include IceTips,  CPCS and the default ABC previewer (or handcoded - like to RPM). Just remember to install the necessary 3rdparty Global Template, if required, as in the first three cases.
  • Completed round one of the Import TXR procedure. Please try it out and let us know if your TXR does not import as desired.
  • Added new Import and Export  procedures. You need xFiles 1.61 or later for this though.
  • Added template utilities for importing the RightReports functions

Version 1.00 beta - 17 September 2007

  • Major updates to the docs
  • Remove some non-editable field, like date and time modified, from the property editor
  • Added a tab for the Notes on the report rather than making it just another field in the property editor
  • Disabled the test button on the RightReportsUpdate window for now - Note that you need to re-import the RightReportsFunctions.txa file to see this change.
  • The parent files for secondary loops were sometimes being determined incorrectly
  • Fixed the key range prompts for secondary loops - they are now correct and refresh when then should
  • Changed some of the procedure prototypes in the generated code to take an rrfqtype queue as a parameter, rather than use a global queue
  • Fixed some problems causing link errors in certain situations - the problem was that certain file drivers and aliases were not considered tables when they should have been
  • In the previous release rrfq:condition was misspelt in the Global data. If you get a compile error of the sort: No matching prototype: evaluate(RightReportssimplify(a, rrfq)), this is what is causing it. The template should fix this but you may need to go in and back out of the global data.
  • On the Global General Tab you can now choose which report previewer to use - RightReports or ABC. You can also hand-code your own previewer code in the RightReportsPrint procedure.
  • Introduced the ability to hide tables and fields from the files list available to the user on the editor
  • Note: Made some changes to the dictionary: Removed the Guid fields from the imported RightReports tables. Also renamed all keys called "Key". You will probably want to delete your imported RightReports tables and re-import the new tables. Note: After doing this, go to the Global Extension, remove it and re-add it to your application. Otherwise all the fields disappear from the template and you will get millions of compile errors. You should probably also re-import the RightReports functions.
  • There was an error in the RightReportsPrint procedure that crept in, causing everything to print very small

Version 0.07 alpha - 27 August 2007

  • Fixed some problems relating to same-file relations and relations not using keys
  • RightReports now works with the latest version of makeover. Note this means it doesn't work with earlier versions of makeover where the Refresh procedure still didn't take any parameters.
  • You need to the older RightReports template named RepEdit if you have not already done so, otherwise Clarion will think the template registry has changed every time you reopen it.
  • Long table field names were being cut off and hence not evaluated correctly when printing
  • You can now use <formfeed> in a string on a graphic report
  • You can now drag and drop fields from the listbox on the Fields Tab onto the graphic report. Note that you need to re-import the RightReportsFunctions.txa file or set the drag and drop id's yourself as is done in the example. See the Fields list and also the region over the image with the scroll bars.
  • The RightReportsUpdate procedure now defaults to graphic reports when a new report is created
  • The Primary Source filter is now working
  • No longer need to re-open the report after a new table is selected for the fields tab to reflect this change
  • Lookup buttons on the RightReportsPrint window now work

Version 0.06 alpha - 20 July 2007

  • Now you can create a page form band for graphic reports - neat. A new button has been added to the RightReportsUpdate window.
  • Did some internal work on using the EntryType field of the RRDefinition table instead of the Type field
  • Wasn't shipping helps.ico with the install.  Note: Changed the name of that icon to repHelps.ico. Its used on the RightReportsPrint window's lookup buttons.

Version 0.05 alpha - 11 July 2007

  • There was a problem with an Unknown Template Type (RepEdit) message appearing when the example is opened - Note: If you got this error in your own application, make sure you re-import the RightReportsFunctions.txa file.
  • Fixed the text example (removed the blockstart from one of the details)

 

Version 0.04 alpha - 10 July 2007

  • No we do not know what happened to 0.02 and 0.03 alpha.
  • Renamed all global and local variables populated by RightReports to start with RR.
  • Renamed all the imported tables to start with RR to avoid name clashes. Prefixes also have RR added infront.
  • Also renamed all equates starting with REP to start with RR rather.
  • I know all this renaming is a pain but at least it was done early, and is now consistent. Apologies, of course.
  • There are only 7 procedures imported by RightReports now (as opposed to the previous amount which was over 50). The rest of the procedures are now generated a clw file which is compiled with your program: if URAPP was the first five characters of your application name, this clw file is called URAPP_rr.clw.
  • Three of the procedures removed were RightReportsBind (previously known as RightReportsBindRep), RightReportsUnbind (RightReportsUnbindRep) and RightReportsAddCustomFunctions. There are global embeds provided (with names the same as the procedure names) to embed the code you used to embed straight into these procedures.
  • There are global embed points for the embed points that existed in the rest of the procedures generated into that clw file now too.
  • Added support for text reports.
  • Note: Changed the name of the template in the registry from RepEdit to RightReports. If you have already implemented RightReports in a working app this means you need to export the app as text, look for all additions with the name RepEdit in it and change RepEdit to RightReports (only in the template name - you can leave the variables (e.g. %RepEdit) as is. Note: Make sure you unregister the old template before registering the new one. Otherwise the old one could possibly stay there and Clarion will think a new template has been registered every time you open an app.
  • Note: Changed the names of some of the embed points in the template. Hint: Look for orphaned embeds if you already had RightReports installed in a working app.
  • Fixed some mutli-dll bugs
  • Fixed some generate bugs - code was generating in the wrong place
  • Fixed some bugs relating to a file that has a relation pointing to itself
  • Some property box editor bugs were fixed
  • Now when you create a new detail while having selected a non-detail element in the report list, the detail appears in the correct place on the graphic editor
  • Drag and drop of table fields from the Fields Tab onto the graphic editing region is now possible
  • No longer need to re-open the window after changing the parent table to refresh dropdowns with lists of keys and child tables
  • The tables, keys and fields now get filled in on the global Extension and hold for all RightReports template instances rather than on the local Extension.
  • Various other bug fixes

Version 0.01 alpha - 1 May 2007

  • First release of RightReports.
table right side
table bottom  corner   table bottom  corner

 

 

table right side
table bottom  corner   table bottom corner



All content © Copyright CapeSoft Software