REPCoder Changelog

What's new in REPCoder 9.60

Jan 12, 2015
  • The report description is no longer limited to 1000 characters. Now it is compressed in SFM or SFR file and has no limitation.
  • In REPCoder script language (calculated fields):
  • Variables of TEXT type are now passed by pointer between functions resulting in much faster execution of the scripts.
  • A new operator: "+=" was introduced. It is mainly intended to concatenate TEXT variables. It works much faster because of using realloc function instead of malloc and memcpy. It is similar to the "+=" operator in the C++ std::string class.
  • New predefined variables (similar to ROW_NUMBER): ROW_COUNT, ROW_TYPE.
  • ROW_NUMBER - This is a predefined variable of the NUMERIC(0) type, that returns the current row number of the SQL query result.
  • ROW_COUNT - This is a predefined variable of the NUMERIC(0) type, that returns the total number of rows in the SQL query result, or the number of rows in a group when the query is sorted with ORDER BY. It is used inside the aggregate rows (ROW_TYPE: -1, 1,2,3,...).
  • ROW_TYPE - This is a predefined variable of the INT type, that returns the type of a row: 0 - standard rows; 1 - the total aggregate row of the SQL query result; 1,2,3,... - group aggregate rows of a sorted SQL query result this is the aggregate rank - position in the ORDER BY clause).
  • SUM_..., $MIN_..., $MAX_... - special input fields:
  • In the INPUT section, for aggregate rows, you can use special fields with names starting witch $SUM_, $MIN_, $MAX_. The rest of the name is the name of the corresponding SQL field, (example: $SUM_salary, $MIN_birthdate, $MAX_age). They represent SUM, MIN, MAX of the SQL field in the entire result set (ROW_TYPE = -1) or in aggregate groups due to ORDER BY clause (ROW_TYPE = 1,2,3,...). But in the standard records (ROW_TYPE = 0) these fields have NULL values. These special input fields are used only to calculate some needed statistics in the aggegate rows (ROW_TYPE = -1, 1,2,3,...). In this case the calculated OUTPUT fields for these rows must have names starting with $$$ (example: $$$sumofsalary, $$$minbirthdate.
  • $$$... - special output fields:
  • For example: $$$sumofsalary, $$$minbirthdate, $$$avgsalary
  • They are special OUTPUT fields, that are accessible only in the grouping and total aggregate rows (ROW_TYPE = 1,2,3,... or ROW_TYPE = -1) of the SQL result. For standard records (ROW_TYPE = 0) these fields have NULL values. To calculate these fields you should normally use the special INPUT fields that have names starting with $SUM_, $MIN_, $MAX_. In the body of a script (LOCAL section) you can use conditional expressions (IF, ELSEIF, ELSE) depending on the value of ROW_TYPE.
  • Example: IF( ROW_TYPE != 0 ) { do something 1 ... } ELSE { do something 2 ... } IMPORTANT: To calculate some average value you need to divide a sum value by the ROW_COUNT predefined variable, that returns the number of records in a group (ROW_TYPE = 1,2,3,...) or in the entire result set (ROW_TYPE = -1).
  • Support for very long MEMO data was added:
  • Now it can be divided into many pages. This feature was already available in the previous version: 9.50.
  • New API functions in REPCODER.DLL:
  • repc_get_report_desc_len
  • repc_alloc_report_desc
  • repc_free_memory
  • repc_set_dialog_fonts
  • repc_create_result
  • repc_create_result_param
  • repc_admin_setup
  • "REPCoder Admin" version 1.0 was created and released:
  • It is a reporting server based on REPCODER.DLL and Firebird (or InterBase) SQL server. This package (repcoder_admin.zip) can be dowloaded seperately.

New in REPCoder 9.30 (Dec 3, 2012)

  • A programming interface for Java was added using jna.jar - currently Windows only
  • A new sample report was added: "Report 23 - data transfer"
  • Internal improvements