Kbase P148333: Report Builder displays a warning that the format of a field has too many digits after creating a SQ
Autor |
  Progress Software Corporation - Progress |
Acesso |
  Público |
Publicação |
  22/06/2009 |
|
Status: Unverified
SYMPTOM(s):
Report Builder displays a warning that the format of a field has too many digits after creating a SQL-92 View
WARNING: Format for field <fld> has too many digits - Format has been changed from '<fld_format>' to '>>>>>>>9.9999999'
Report Builder continues working as normally after clearing the warning
FACT(s) (Environment):
SQL-92 View has been created with the same name as a database table used in the Report Builder report
Table and View contain numeric fields
Warning does not occur if the View is given a different name to the table
Warning does not occur when running the same report with the Report Builder Runtime Engine
Progress 9.x
Windows
CAUSE:
The ABL Format generated for decimal fields referenced in the View is doubled compared to the Format used for decimal fields in the database table. Report Builder is SQL-89-based so detects and uses both the Table and the View when analyzing the database schema. When Report Builder queries the database to get schema information, the query that it runs returns all fields from both the Table and the View because they have the same name. Since the fields from the View are returned after those of the Table, the Table Formats are overridden and replaced.
Report Builder has a 15 digit limit for decimal fields and exceeding this will generate the warning message that is seen. Report Builder will automatically set the Format to a normal value and continue.
FIX:
Option #1
Explicitly CAST the field to the correct data-type and set its format in the SQL statement that creates the View. For example:
CAST("credit-limit" AS decimal(10,3))
Option #2
Rename the View, giving it a different name to the database table.
Option #3
Live with the Warning message; it does not affect Report Builder functionality once cleared and is not generated by the Runtime Engine.