delphifiredacdisplayformat

Delphi FireDAC TFDQuery DisplayFormat


I have some problems related to FormatOptions. I have a sales screen and after migrating to Firedac(Previous was IBO), full values (ex .: 100.00, 52.00) began to appear like this:

(IBO) 100.00 52.00

(FireDAC) 100 52

I tried to make use of MapRules using the following configuration:

SourceDataType dtBCD
TagetDataType dtBCD
PrecMax 18
PrecMin 1
ScaleMax 5
ScaleMin 0

I actived the OwnMapRules option, but the display remains the same. So I tried to make use of fmtDisplayNumeric property. Informing a ',0.00' fix my problem in parts, why limit the display to two decimals places, but there are fields that have more than 2 decimal places. Also, my Integer fields are showing decimal places on the display.

I tried to create a rule in MapRules for Integer fields, but the problem remains.

What should I do in such cases?

Thanks in advance!


Solution

  • MapRules had nothing to-do with display formatting. It translates a driver data type into the data type you want to use in the application and vice versa.

    The IBO components have a specific behaviour for numeric fields. They treat it as a currency field, depending on the numeric scale. See IBO documentation.

    By default, Firedac uses the Regional Settings to format the output. You can read how to change this behaviour in this paper.