i-net Clear Reports

Content

The following chapters describes the various things to know when migrating from older versions of i-net Crystal-Clear to version 9.x of i-net Crystal-Clear.

API Changes

Added Constants

  • com.inet.report.Engine
    • EXPORT_BMP
    • EXPORT_GIF
    • EXPORT_JPG
    • EXPORT_PNG
  • com.inet.report.FormulaField
    • TREAT_NULL_AS_NULL
    • TREAT_NULL_BY_DEFAULT
    • TREAT_NULL_BY_EXCEPTION

Added Methods

  • com.inet.report.Field
    • duplicate(String)
  • com.inet.report.FormulaField
    • checkContext()
    • duplicate()
    • getNullBehavior()
    • setNullBehavior(int)
  • com.inet.report.PromptField
    • duplicate(String)
  • com.inet.report.SQLField
    • duplicate(String)
  • com.inet.report.SummaryInfo
    • getThumbnail()
    • setThumbnail(Image)
  • com.inet.report.SummaryField
    • duplicate(String)
  • com.inet.report.TableSource
    • getDatabaseField(int)

Methods and Constants deprecated as of Version 9

The following list includes the methods that are deprecated in version 9 and should no longer be used. Please consult the API documentation of the individual methods for more information about newer methods to use instead.

  • com.inet.report.Datasource
    • setup(String)
    • setup(DataSourceConfiguration)
  • com.inet.report.RDC
    • saveEngine(PrintWriter, Engine)

Removed deprecated Methods and Constants

The following methods had been deprecated for longer than 2 major versions and have now been entirely removed in version 9 of i-net Crystal-Clear.

  • com.inet.report.AbstractLineElement
    • getExtentToBottomOfSectionWhenPrinting()
  • com.inet.report.AbstractValueElement
    • getDateFirstSeperator()
    • setDateFirstSeperator(String)
    • getDateFirstSeperatorFormula()
    • setDateFirstSeperatorFormula(FormulaField)
    • getDatePrefixSeperator()
    • setDatePrefixSeperator(String)
    • getDatePrefixSeperatorFormula()
    • setDatePrefixSeperatorFormula(FormulaField)
    • getDateSecondSeperator()
    • setDateSecondSeperator(String)
    • getDateSecondSeperatorFormula()
    • setDateSecondSeperatorFormula(FormulaField)
    • getDateSuffixSeperator()
    • setDateSuffixSeperator(String)
    • getDateSuffixSeperatorFormula()
    • setDateSuffixSeperatorFormula(FormulaField)
    • getDateTimeSeperator()
    • setDateTimeSeperator(String)
    • getDateTimeSeperatorFormula()
    • setDateTimeSeperatorFormula(FormulaField)
    • getDayOfWeekSeperator()
    • setDayOfWeekSeperator(String)
    • getDayOfWeekSeperatorFormula()
    • setDayOfWeekSeperatorFormula(FormulaField)
    • getDecimalSeperatorsSymbol()
    • setDecimalSeperatorsSymbol(String)
    • getDecimalSeperatorsSymbolFormula()
    • setDecimalSeperatorsSymbolFormula(FormulaField)
    • getHourMinuteSeperator()
    • setHourMinuteSeperator(String)
    • getHourMinuteSeperatorFormula()
    • setHourMinuteSeperatorFormula(FormulaField)
    • getMinuteSecondSeperator()
    • setMinuteSecondSeperator(String)
    • getMinuteSecondSeperatorFormula()
    • setMinuteSecondSeperatorFormula(FormulaField)
    • getThousandSeperatorsSymbol()
    • setThousandSeperatorsSymbol(String)
    • getThousandSeperatorsSymbolFormula()
    • setThousandSeperatorsSymbolFormula(FormulaField)
    • getUseThousandSeperators()
    • setUseThousandSeperators(boolean)
    • getUseThousandSeperatorsFormula()
    • setUseThousandSeperatorsFormula(FormulaField)
  • com.inet.report.BorderProperties
    • getBottomLineStyleFormel()
    • getTopLineStyleFormel()
  • com.inet.report.Chart
    • CUSTOM_NUMER_FORMAT
    • getSort()
    • setdataValuesMinMax(double, double)
    • setSort(int)
  • com.inet.report.ChartFormatProperties
    • getDateFirstSeperator()
    • setDateFirstSeperator(String)
    • getDateFirstSeperatorFormula()
    • setDateFirstSeperatorFormula(FormulaField)
    • getDatePrefixSeperator()
    • setDatePrefixSeperator(String)
    • getDatePrefixSeperatorFormula()
    • setDatePrefixSeperatorFormula(FormulaField)
    • getDateSecondSeperator()
    • setDateSecondSeperator(String)
    • getDateSecondSeperatorFormula()
    • setDateSecondSeperatorFormula(FormulaField)
    • getDateSuffixSeperator()
    • setDateSuffixSeperator(String)
    • getDateSuffixSeperatorFormula()
    • setDateSuffixSeperatorFormula(FormulaField)
    • getDateTimeSeperator()
    • setDateTimeSeperator(String)
    • getDateTimeSeperatorFormula()
    • setDateTimeSeperatorFormula(FormulaField)
    • getDayOfWeekSeperator()
    • setDayOfWeekSeperator(String)
    • getDayOfWeekSeperatorFormula()
    • setDayOfWeekSeperatorFormula(FormulaField)
    • getDecimalSeperatorsSymbol()
    • setDecimalSeperatorsSymbol(String)
    • getDecimalSeperatorsSymbolFormula()
    • setDecimalSeperatorsSymbolFormula(FormulaField)
    • getHourMinuteSeperator()
    • setHourMinuteSeperator(String)
    • getHourMinuteSeperatorFormula()
    • setHourMinuteSeperatorFormula(FormulaField)
    • getMinuteSecondSeperator()
    • setMinuteSecondSeperator(String)
    • getMinuteSecondSeperatorFormula()
    • setMinuteSecondSeperatorFormula(FormulaField)
    • getThousandSeperatorsSymbol()
    • setThousandSeperatorsSymbol(String)
    • getThousandSeperatorsSymbolFormula()
    • setThousandSeperatorsSymbolFormula(FormulaField)
    • getUseThousandSeperators()
    • setUseThousandSeperators(boolean)
    • getUseThousandSeperatorsFormula()
    • setUseThousandSeperatorsFormula(FormulaField)
  • com.inet.report.CrossTab
    • getColTotalOnLeft()
  • com.inet.report.CrossTabCell
    • setHeightByFieldElements()
    • setWidthByFieldElement(int)
  • com.inet.report.DatabaseTables
    • addSproc(String, String[], int[])
    • addSproc(String, String, String[], int[])
    • addSqlSource(String)
    • addSqlSource(String, String)
    • getDistinct()
    • getPassword()
    • getUser()
    • setCatalog(String)
    • setColumnNames(String, String[])
    • setColumnTypes(String, int[])
    • setDistinct(boolean)
    • setDll(String)
    • setHost(String)
    • setPassword(String)
    • setSchema(String)
    • setURL(String)
    • setUser(String)
  • com.inet.report.Element
    • getBottomLineStyleFormel()
    • getToolTipsTextFormel()
    • getTopLineStyleFormel()
    • getWebSiteAddressFormel()
    • setWebSiteAddressFormula(FormulaField)
  • com.inet.report.Engine
    • getCatalog()
    • getConnection()
    • getDll()
    • getHost()
    • getPassword(int)
    • getPasswords()
    • getSchema()
    • getURL()
    • getUser(int)
    • getUsers()
    • setDll(String)
    • setHost(String)
    • setPassword(String, int)
    • setPasswords(Vector)
    • setSql(String, boolean)
    • setURL(String)
    • setUser(String, int)
    • setUsers(Vector)
  • com.inet.report.Fields
    • addDatabaseField(String)
    • addSortField( field, String)
  • com.inet.report.FormulaField
    • checkFormula(String, boolean, Engine, Field, Object, boolean)
  • com.inet.report.GeneralProperties
    • getToolTipsTextFormel()
  • com.inet.report.HyperlinkProperties
    • getWebSiteAddressFormel()
    • setWebSiteAddressFormula(FormulaField)
  • com.inet.report.JavaBean
    • getBeanProperty(String)
  • com.inet.report.LineProperties
    • getExtentToBottomOfSectionWhenPrinting()
  • com.inet.report.SortField
    • setSortDirectionFormula(String)
  • com.inet.report.TableSource
    • setColumnName(int idx, String)
    • setColumnType(int, int)
  • com.inet.report.ValueProperties
    • getDateFirstSeperator()
    • setDateFirstSeperator(String)
    • getDateFirstSeperatorFormula()
    • setDateFirstSeperatorFormula(FormulaField)
    • getDatePrefixSeperator()
    • setDatePrefixSeperator(String)
    • getDatePrefixSeperatorFormula()
    • setDatePrefixSeperatorFormula(FormulaField)
    • getDateSecondSeperator()
    • setDateSecondSeperator(String)
    • getDateSecondSeperatorFormula()
    • setDateSecondSeperatorFormula(FormulaField)
    • getDateSuffixSeperator()
    • setDateSuffixSeperator(String)
    • getDateSuffixSeperatorFormula()
    • setDateSuffixSeperatorFormula(FormulaField)
    • getDateTimeSeperator()
    • setDateTimeSeperator(String)
    • getDateTimeSeperatorFormula()s
    • setDateTimeSeperatorFormula(FormulaField)
    • getDayOfWeekSeperator()
    • setDayOfWeekSeperator(String)
    • getDayOfWeekSeperatorFormula()
    • setDayOfWeekSeperatorFormula(FormulaField)
    • getDecimalSeperatorsSymbol()
    • setDecimalSeperatorsSymbol(String)
    • getDecimalSeperatorsSymbolFormula()
    • setDecimalSeperatorsSymbolFormula(FormulaField)
    • getHourMinuteSeperator()
    • setHourMinuteSeperator(String)
    • getHourMinuteSeperatorFormula()
    • setHourMinuteSeperatorFormula(FormulaField)
    • getMinuteSecondSeperator()
    • setMinuteSecondSeperator(String)
    • getMinuteSecondSeperatorFormula()
    • setMinuteSecondSeperatorFormula(FormulaField)
    • getThousandSeperatorsSymbol()
    • setThousandSeperatorsSymbol(String)
    • getThousandSeperatorsSymbolFormula()
    • setThousandSeperatorsSymbolFormula(FormulaField)
    • getUseThousandSeperators()
    • setUseThousandSeperators(boolean)
    • getUseThousandSeperatorsFormula()
    • setUseThousandSeperatorsFormula(FormulaField)
  • com.inet.report.schedule.Scheduler
    • getEmailPassword()
    • setEmailPassword(String)
    • getEmailPop3Host()
    • setEmailPop3Host(String)
    • getEmailSender()
    • setEmailSender(String)
    • getEmailSmtpHost()
    • setEmailSmtpHost(String)
    • getEmailUser()
    • setEmailUser(String)

URL parameters are disallowed by default

Since version 9, for security reasons, only the following parameters are allowed by default in the report URL: “prompt”, “init” and “sproc”. To use other parameters in the report URL, like “datasource”, it could be necessary to unlock them in the Configuration Manager before using it.

Figure 1: Configuration Manager - Report URL Parameters

It is always possible to set values for all parameters in the checkProperties method on the server side. Java code samples showing this you can find in the “samples” directory of the documentation (if installed).

Evaluation Time of Formulas

The evaluation time of formulas has been changed in version 9 in order to provide better performance as well as be more consistent. The formula functions “WhileReadingRecords” and “WhilePrintingRecords” now have a slightly different effect on when the formula is evaluated, as well as on how the formula can be used.

If you use an older configuration with i-net Crystal-Clear version 9, then it is necessary to set the Compatibility Level to “compliant to version 9.x” to use the new behavior of “WhileReadingRecords” formulas. If you create a new configuration with version 9, then “compliant to version 9.x” is the default value.

Figure 2: Evaluation Time of Formulas
  • All formulas specified as “WhileReadingRecords” that are used in the report are now executed:
    • for each record
    • after all records are sorted and filtered but
    • before the rendering of the first section begins.
  • Variables used in formulas with the WhileReadingRecords evaluation time are not reset before the rendering starts so that the variables can be used in formulas with WhilePrintingRecords evaluation time, also.
  • Summaries, grouping and sorting are also computed prior to rendering, making it impossible to summarize or group on a “while printing” formula.
  • Formulas which include a summary can not have their evaluation be specified as “while reading” since the summary will not be computed until after computing the “while reading” records.

Because of the modified behavior it might be necessary to update your reports using the WhileReadingRecords function so that you get the same result as with previous i-net Crystal-Clear versions. It is unfortunately necessary to do this behavior modification because the old behavior was incorrect.

In order to figure out which reports need modification, we provide a tool called EvaluationTimeChecker with our Java source code samples (see: directory samples.formula) that can be installed during the setup, which will point you to any reports you might have which will have any changed behavior in version 9. For backwards compatibility, you have in the Configuration Manager the property “Compatibility Level”. Please set the value to “compliant to version 8.x” to keep the old formula evaluation time behavior.

Note that if two formulas have the same evaluation time, they are evaluated in the order they were created. Say you have two “before reading” formulas in your report header – the first one you created will be evaluated before the second one, even if the second one is positionally above the first.

Underlay Following Sections

The algorithm for “Underlay Following Sections” was rewritten to implement the correct definition. This can change the output of your reports if you were affected by bugs in the old implementation. One benefit is that you can now design reports with watermarks without any problems. If you want to create a watermark then you need only to add a first section to the report/page header and enable “Underlay Following Sections” for this section. You should place the image either in the report or the page header depending on if you want one watermark per report or one per page.

Improved Report File Format

Since version 9, i-net Crystal-Clear uses a zipped file format for the report templates (.rpt), similar to the OpenDocument zip file format. This new report file format was a prerequisite for new features like the Report Preview and translation resources per report. With this format the performance has been improved especially for large reports, because the file size is smaller and it is faster. Also, with this format we are open for further additions to the report templates.

 

© Copyright 1996 - 2023, i-net software; All Rights Reserved.