Getting Started
Adding CapeSoft RightReports to your Application
(JumpStart)
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\accessory\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: 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 Clarion\accessory\libsrc\win folder.
- TPS : Choose the RightReportsTables.dctx file or
SQL : RightReportsTablesSQL.dctx and Open it.
- Make sure you change the file drivers for the imported files (they
all start with RR) to the driver 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 Application | Import Txa ...
- Import the RightReportsFunctionsABC.txa or
RightReportsFunctionsLegacy.txa file in your
Clarion\accessory\libsrc\win 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 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). 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.
- Go to Global Extensions (in C6, you need to Click on the Global
button, then 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.
- Go back to your application tree.
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 don't do this, RightReports will only pick up
tables you've 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. Call the RightReportsBrowse procedure (no parameters). If your
application has a Frame, adding a Browse Reports option to one of the
menus might be an idea, and you'll probably want to start a thread if it's
a MDI application (if it's not, then you need to turn the MDI child off).
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.
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)
For PDF-Tools support, you must select the "Use the PDFTools Template"
checkbox.
then you need to add the code template to generate the pdf into the
Previewer embed points:
The template prompts should be as follows:
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.
The Imported RightReports Procedures
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.
Template Options
The Global Extension
Template
The Editor Control
Template
The Printer
Control Template
The Global Extension
The General Tab
- Disable All RightReports Features: Use
this for debugging.
- Enable Web Server in PrintReport: If you
have added
NetTalkk 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:): 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
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
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:
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
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.
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.
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 Override
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
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
- 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.
- Don't tick this: Used internally for
Capesofttapplications.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.
The Local Extension
The 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
- 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
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
- 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
- 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.
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.
Use this list to override the view creation for these tables selected. You
will need to handcode the views yourself.
Using The Report Editor
For a thorough overview on using the ReportEditor,
take a look at the training video:
http://www.clarionlivemedia.com/webinars/ClarionLive136_20111125_RobdeJagerOnRightReports.wmv
The Browse Window
The
RightReportsBrowse procedure lets you
browse the current reports in your program.
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 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 to the above and left of item B, it means that that item A is a
parent of item B.
- 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 TotalingTab: 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):
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.
Properties on the Properties Tab
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.
NOTE: You Must use spaces between variables and their equates:
(<PCRP:EXPORTED> <> 'Y' or null( <PCRP:EXPORTED> ))
and <PCRP:TRANTYPE> = 'Cr'
- 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.
- Centered: (Image Controls Only) Whether
the image should be centered.
- 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.
Advanced
Report-Editing Things
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:
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 Totaling, 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 they're 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 (1) or not (0).
NOTE: You must use quotes for the variable name to be checked
and the variable cannot be a run-time variable, it must be a
compiled variable (like a field in a file). |
changed('MyVariable') |
HEADER |
Returns if a variable has changed (1) or not (0) (first
instance is returned as a change).
NOTE: You must use quotes for the variable name to be checked
and the variable cannot be a run-time variable, it must be a
compiled variable (like a field in a file). |
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
Report and
Table Access Issues
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 of the Report Editor. 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. NOTE: Overed fields are automatically
suppressed.
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.
The Report Output
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 necessary details
here.
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.
Importing and
Exporting Reports
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
XFiless1.61 or later1.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 xFilessExtension to your application.Extension to
your application.
- The RightReportsImport and RightReportsExport procedures each has
a RightReports Extension that generates the necessary code. They
look something like this:
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.
Advanced: Embed Points
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
Initialize 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 Initialize
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.
Tips & FAQ
Question Summary
I'm getting
Compile Errors or
Runtime Errors
Importing Issues (Procedure and
TXD issues)
Programming Issues
Writing Reports
Getting Started: Check out
ClarionLive webinar 136
- 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.
- 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.
- I have a report that
reports on the Clocking's file. I want some users to not have access
to certain records in the Clocking's 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?
- I want to group certain
reports together and only display a given group in the reports
browse.
- When I add a new report, the data in the
Properties box is nonsensical, e.g. the report number is huge.
- How do I add today's date, or the time, to my
report?
- Can I use a global variable in my application
on a report? How?
- Sometimes I open the editor window, and the
controls are completely off the screen
- I have defined a view in the template, but
the Order By is requesting a key select, not a list of fields.
- After selecting the Primary File
when creating a report, none of the keys are available in the
drop-down.
- In SQL, there are "Server Order"
and "SQL Order" fields. Which should I use?
- How do I create a Report Header (i.e. a
header that only prints once per report)?
- How do I create a Report footer (i.e. a
footer that only prints once per report)?
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. You
can ignore this error, as this template is no longer required. You
probably created your RightReports enabled application with an early
version of RightReports, prior this template being included into the
RightReports template.
- 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, don't 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()
FilesQ.Level LONG
FilesQ.FileName STRING()
FilesQ.FieldName STRING()
FilesQ.FieldDetails STRING()
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 NetTalkWebServer 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.
- How do I use PDFTools to
generate my report output? Follow the steps in
Add_outputs_to_the_Previewer_window that pertain to the
PDF-Tools report to PDF generator.
- My totals
don't delete after I close (and re-open) the report editor.
You must re-import the txa. You have an old version of the imported
RightReportsUpdate procedure in your application.
- How do I create a browse
lookup for the user variable on my Print Options window?
You'll need to go to the RightReports Print Controls control template
on the RightReportsPrint window, and enter the name of the variable
(that will be the runtime user variable that is created in your
Report), the name of the lookup procedure to call, and the field
containing the variable (if the lookup is a browse, otherwise it
should return the value for the user variable). See
The_RightReportsPrintControls_Control_template for details.
You'd create the user variable as:
- How do I use the
RightReportsPreviewer for my SendTo report? You need to
redirect the preview to the RightReportsPreviewer in the
SendTo_Printer procedure. We do this in the AskPreview method as
follows:
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.
- My Report prints super
small/the font is super large. Check your default printer
page size. It could be set to a small label (or a large paper size).
Change it to default to a normal page.
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. If you've upgraded Nettalk to version 6.40 or higher,
then you need to change the output name of the pdf file, as the
default one uses a session ID (which changed to a string in 6.40) as
follows:
- How do I make the Date
picker button available for my Date user entry controls?
First, you need to make sure you've selected a date picker in the
RightReportsPrintControls control template:
Next, you need to make sure that your user variable (global or local)
has been defined with a date picture in the Report Editor:
Compile Errors
Check out general product
CompilerErrors.
- Warning: Level duplicated,
second used: RRPO:Destination (and 6 others)
In 1.53, there were 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.
License & Copyright
This template is copyright 2007-2024 by CapeSoft
Software. 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. CapeSoft Software and CapeSoft Electronics
(collectively trading as CapeSoft), their employees and dealers explicitly
accept no liability for any loss or damages which may occur from using
this package. Use of this package constitutes agreement with this license.
This package is used entirely at your own risk.
Use of this product implies your acceptance of this, along with the
recognition of the copyright stated above. In no way will CapeSoft , 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.
For the full EULA see
https://capesoft.com/eula.html
Support
CapeSoft Support |
Email |
|
Telephone |
087 828 0123
+27 87 828 0123 |
Version History
Download latest version
here.
You should be using at least version 4.35 of
Draw.
Download the latest Draw
here.
Version 2.09 - 5 February 2024
- Update: Make DESTRUCT method compatible with Draw 4.35
- Internal: Update to Capexx.tpw version 4.31
Version 2.08 - 20 October
2022
- Fix: Importing of really old XML files (with no prefixes) would fail
if on xFiles 2.93 or later.
Version 2.07 - 11 February 2022
- Fix: When Creating details, XPOS and YPOS were not explicitly being
set to 0. From Clarion 11.1 these values are no longer implicitly set
to 0.
Version 2.06 - 25 May 2021
Version 2.05 - 3 November 2020
- Fix: Update to #AT to prevent local method declarations being added
to global objects.
- Added the ability to select which outputs to support (if all are
present), and to support basic word export functionality.
- Added support to utilize a word doc template for a header doc.
- Fix: Evaluate a band condition before evaluating the strings in a
band.
Version 2.04 - 8 September 2020
- Change: The property ThisDraw type changed from &Draw to
&DrawClass to be compatible with Draw version 4.22 (to be
compatible with Clarion 11.0.13622)
Version 2.03 - 12 August 2020
- Fix: Regression in 2.02 (incorrect disposal of an ANY field)
Version 2.02 - 12 March 2020
- Change: incorporate generated procedures into the RightReports.clw
(application_rr.clw no longer generated and included).
- Fix: prior to disposing queues with assigned ANY fields, first set
the ANYs to null.
- Change: Enable grid (requires Draw 4.21)
- Fix: RightReportsUpdate window was resizing incorrectly after
deleting or adding a band control.
- Include the aberror.inc in the RightReportsData.inc file
- Fix for not adding debug lines for the debug output when debugging a
text report.
- When printing a report, prioritize images, then boxes then other
controls (was printing a box control over a string control).
- Remove old C55 compile omit code.
- Fix incorrect inclusion of aberror.inc in the RightReportsTree.inc
file
- You can now use EasyResize (with splitter bars) in the
RightReportsUpdate window (rather than the RightReports resizer).
Version 2.01 - 18 December 2019
- Fix: Support for Premiere Previewer
Version 2.00 - 25 March 2019
- Add a default location to export the XML file in the "Export a
report to an XML file" template.
- In the RightReportsPrint procedure, you can now derive (and
override) the GetDefaultOutputDirectory for automated report
generation to "print" the file to a default location other than the
current path.
Version 1.99 - 18 February 2019
- Fix for Drag and Drop in the Report Editor.
- New function: SetProgressPercent. Can be used to manually set the
progress bar percentage.
Version 1.98 - 16 February 2017
- Add ability to support custom joins in a view used in RightReports.
- Support for Premiere
- Support for MultiProj defines (in Clarion 10).
- Allow a function to be available for printing, but not editing.
- Leave the GUID available for reports use.
- RightReportsChangedWork - static queue changed to a threaded static
queue.
- Fix - using local field pointer in place of Global fields in some
places.
- Support Justify in controls other than strings.
- ABC uses file manager for ReportDefinitions file transactions
(rather than file).
- Support drop into text reports from the fields.
- PrintPreviewerControlOutput - select dependant on passed parameter.
Post to Print/Save button if window must be hidden. Split procedure
definitions to allow embed code.
- RightReports_PrintPreview - New variable: %CloseWindowAfterOutput
(force close after save/print).
- Suppress the use of criticalsection classes.
- RightReports class - new method : InitFileManagers to set the
Version 1.97 GOLD 25 February 2015
- Installer supports Clarion 10
- Unnecessary use of %cwversion removed.
Version 1.96 GOLD 11 July 2014
- When choosing a multi-page layout in the previewer, extra spots are
hidden if there are insufficient pages.
- Background of pages in previewer forced to White.
Version 1.95 GOLD 14 May 2014
NOTE: See note from 1.65 if you are upgrading from 1.64 or earlier.
Embed points standardized (was generating in different orders each
time). This may mean that your embed code in the RightReportsUpdate code
(in the derived methods) has changed. So for example, you may have had
some code in the local procedure:
this now needs to be moved to the correct position.
The way to determine the correct position, is to save a copy of your
generated clw file, and then compare the generated file to the saved copy
and move the embeds until the code is generated in the correct order as it
was before.
Fix for evaluating a numeric calculation (when assigning a runtime field
calculated variable's value - where the value is a formula containing
other runtime variables).
Version 1.94 GOLD 31 March 2014
NOTE: See note from 1.65 if you are upgrading from 1.64 or earlier.
Version 1.93 GOLD 10 February 2014
- Change to show PDF Tools users what to do when upgrading to PDF
Tools 4 or higher.
Version 1.92 GOLD 29 October 2013
- Fix: Clarion6 TXD import workaround for UserOption import bug on
last Alias table
- Fix: Import Procedures button disabled after importing RRprocedures
(to allow separate import of Import/Export procedures).
- PlugValue method: Formulae can now contain functions in the values.
- Template Fix: Set %RRFamily when %SetFamily is called (prevents
legacy code being generated before %RRFamily is set).
Version 1.91 GOLD ...
NOTE: See note from 1.65 if you are upgrading from 1.64 or earlier.
- Fix: Template error: Unknown value %SetFamily
- Add: Template buttons to import Right Reports Txa and Import/Export
Txa
- Change: Some global template options moved to simplify and
standardise.
- Update form tweaked. init and open files and translations moved to
the derived .setup method. This is to handle import from "template"
report in the PrimeFields method.
- Vresize and Hresize init code (update report template) changed to
different priority. Clarion was not always generating both (at the
same priority embed).
- Template fix in import - when overwriting an existing report, was
not overwriting the band controls correctly (after import).
- Template fix in report import - don't overwrite global fields when
importing a report. A bad global field import will impact all the
reports.
- Import procedure provides for a parameter (in order to import a
specific pre-selected report xml file). To make the most of this
feature, you need to add the following parameters to the prototype of
the RightReportsImport procedure: (<string pFileName>,<string
pOverrideReport>)
Version 1.90 GOLD ... 8 August 2013
NOTE: See note from 1.65 if you are upgrading from 1.64 or earlier.
- Include fixed TXA for Clarion 8 support.
- If an image is created using default height and/or width, don't set
to 50/50 (keep 0/0 to use the base height/width of the image).
- Template variable %TempField renamed to %TempRRField (clash with
another 3rdparty tool if Clarion generator got it's context mixed up).
- Template fix - for alternative names of custom functions (to be made
available in reports), add the alternative name (not just the function
name) to the list of available functions.
- Template change - Import procedure - when importing global fields,
don't update the global fields already there, just use the existing
ones. Note: requires a primary key on the RRDefnFields table.
- Template fix - %Family was used before declared in some cases
(Clarion 8).
Version 1.89 GOLD ... 3 July 2013
NOTE: See note from 1.65 if you are upgrading from 1.64 or earlier.
- Template fix for NetTalk 7.10 and above.
- Template fix for Multi-Proj projects in C7 and up (was not including
the project defines and the clw files in the compile).
Version 1.88 GOLD ... 2 May 2013
NOTE: See note from 1.65 if you are upgrading from 1.64 or earlier.
- Clarion 9 compatible build
- Fix for incorrect pictures for file fields (sometimes) - if file was
used in a view then the field was added twice into the internal fields
queue (one with the correct picture and one with @s255). This meant
that not always was the correct picture used in displaying the field
in the report.
- Template tweak - for Clarion 8, use the ABC method name for deriving
code into the embed point (rather than the where clause, that seems to
be eratic).
Version 1.87 GOLD ... 6 March 2013
NOTE: See note from 1.65 if you are upgrading from 1.64 or earlier.
- RightReports Template - fix regression where if a field was not in
the includefields list (and the includefields list was not used) then
the field was suppressed from reports.
Version 1.86 GOLD ... 5 March 2013
NOTE: See note from 1.65 if you are upgrading from 1.64 or earlier.
- RightReports Template - suppress overed fields. Also, in some cases
NoReports fields were still permitted in the field list.
- RightReportsPrinter class - regression fix (1.83) in text reports -
was printing extra lines at the bottom of a blank page.
Version 1.85 GOLD ... 7 February 2013
NOTE: See note from 1.65 if you are upgrading from 1.64 or earlier.
- RightReportsPrinter fix - RRLoadLookup. clear(self.LookupQ) - was
sporadically GPFing when a lookup was on None (file) - a leftover
pointer could exist when adding the fields to the lookup queue.
- Remove added DOS driver addition to the project (superfluous).
Version 1.84 GOLD ... 6 February 2013
NOTE: See note from 1.65 if you are upgrading from 1.64 or earlier.
- PrintToFile changed to DOS (rather than ASCII).
- Detect OI presence (and version) at start of generation (not just on
the #prepare).
- SendKeyToLookupQ,SendKeyNameToLookupQ takes a handle to the queue
(rather than the queue).
- RRprintqueueType line is len 1024 and has LineLen parameter (also
RRsbConType has a textlen field). Text reports are no longer clipped,
but the LineLen keeps track of the len and outputs accordingly.
- RightReportsPrinter.PrintReport - All graphics reports go through
previewer (although hidden if necessary).
- Reports must never use obsolete PDFGenerator class. Always use the
previewer PDF generator.
- New method: PrintReportWindowTimer - allows for a "callback" event
during print output generation for derived code in the template (for
example to send a heart beat using NetTalk to a controlling
application).
- SendEmail called for Graphics reports after print (if forced using
Previewer and Email option selected).
- RightReportsPrinter Class: New properties: HidePreviewer (use this
to call the previewer, but hide it and auto output - additional
parameter to the AutoReport, which
Version 1.83 GOLD ... 4 January 2013
NOTE: See note from 1.65 if you are upgrading from 1.64 or earlier.
- RightReportsPrinter Class: New properties: HidePreviewer (use this
to call the previewer, but hide it and auto output - additional
parameter to the AutoReport, which allows a non-AutoReport to hide the
previewer), PrePrimed - Set if you don't want the user properties
loaded in the PrepareWindow method, RRPrintOptionsGroupType -
landscape property added to the group (allowing landscape to be passed
to the Previewer).
RightReportsPrinter Class: Changes - don't default Destination to 'S'
on construct; PrimeDestination method tweaked (self.destination not
overridden there); Initalise procedure does LoadOFQ whether in
Webserver app or not; ShowUserPrompts sets the UserControlPicutre (for
the usercontrol) if not already set; PrepareWindow - Load destination
(if not preprimed)
Version 1.82 GOLD ... 4 December 2012
NOTE: See note from 1.65 if you are upgrading from 1.64 or earlier.
- RightReports TPL - Fix for OfficeInside 4. Exports to excel and word
correctly.
- RightReportsPrinter class fix - if a variable contains < in the
text, don't reconcile to a variable.
Version 1.81 GOLD ... 27 November 2012
NOTE: See note from 1.65 if you are upgrading from 1.64 or earlier.
- RightReports TPL - Support for detecting OfficeInside 4 (and using
correct property names).
Version 1.80 GOLD ... 8 October 2012
NOTE: See note from 1.65 if you are upgrading from 1.64 or earlier.
Version 1.79 GOLD ... 17 August 2012
NOTE: See note from 1.65 if you are upgrading from 1.64 or earlier.
- RightReportsPrinter - if primary sort has keys, then don't populate
None in the order.
- SetFileWithKey - Do away with (1=1) in the filter (optimize the view
engine so that the filter matches the order and the key, otherwise can
be slow in some instances.
- AssignServerFilters - fix GPF (dynamic index that did not have field
assigned).
- AssignServerFilters - if a field exists in the manual filter, then
don't apply the filter automatically as well. Also apply the UPPER()
attribute to any fields in the manual filter where the key is case
insensitive (makes the view go faster).
- IsInParentArea - restore the original item queue if it was already
loaded.
- RightReportsPrinter.EvalFQ - evaluate (that contains a function)
could be returning an errorcode from the function, rather than from
the evaluate.
- RightReportsPrinter.AddBlankParm - only add an extra blank parameter
if it is at the end of a functioncall (not some other evaluate error).
Also built array protection for a possible GPF
- RightReportsPrinter.SetSecondary - set secondary linked fields to
the filter after setting the primary fields (optimize the view).
- RightReportsTree class uses equates rather than numeric values
(makes the classes more readable).
- Template change - prevent the control drop from occurring in the
editor outside a band control co-ordinates.
- Template support for the PDFXToolsReport (was just the
PDFXToolsGlobal template before) template
- Template change - if printreport window is hidden, and destination
is not set (or is set to screen) then force to file.
Version 1.78 GOLD ... 14 February 2012
NOTE: See note from 1.65 if you are upgrading from 1.64 or earlier.
- LINENUMBER local variable to the editor class - only useful for text
reports though.
- Disable printing old text controls (if exists in a graphic report).
- CRLF is stripped off the calculation variable name.
- BuildGenericFieldQ derived procedure in the Editor (with embeds),
even if no custom variables are added.
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 Previewselects output checkbox on globalselects
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 dependent 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
(dependenton output selected) where destination is pre-selected.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 - totalingrequired upper case total fields.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
totaling).
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 font style (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 and the 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 flexibleparameter
names.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 xFilesschange).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 embeddedcode from thecode 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 dependenton the status of theon
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 dependent on the file type selected).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).
- Translationsupport for 'None' (use propertysupport 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
embededd 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
formatting 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 generic 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), min zoom
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 existing
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 weren't 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 don't 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
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 version 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:
- Fields added to the PropertiesGroup of RRDefnBandControls:
- 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 Restore 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 calls this procedure when necessary. 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 LookupPic 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 following field lengths in RRDefnCalc
- RRDFC:FieldName to 100
- RRDFC:ElseFieldName to 100
- Changed the following 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
- 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:
https://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 totaling 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 prototype 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.