oracle формы 12. как отобразить начальный ноль десятичных чисел - PullRequest
1 голос
/ 07 апреля 2020

I sh для отображения десятичных чисел (из запроса) в текстовые элементы. если я установлю

:TXT_ITEM := '0,000123456789'

, это работает. Но, если :TXT_ITEM привязано к числовому полю c таблицы, значение отображается как ,000123456789.

Я пытаюсь принудительно отформатировать число в нескольких триггерах (после изменения, когда новое -записать экземпляр, пост-текст ...), безуспешно. С другой стороны, установка format_mask приведет к тому, что в моей базе данных будет задано количество десятичных цифр.

Как получить начальный ноль для отображения?

Ответы [ 2 ]

0 голосов
/ 08 апреля 2020

Кажется, что соответствующие данные цифры c в таблице имеют тип

NUMBER(13,12) 

, в этом случае достаточно установить атрибут TXT_ITEM s Format Mask в Data части Property Palette as

0D000000000000

с точностью 13 и шкалой значений 12.

Учитывая, что часть шкалы зафиксирована, вы можете добавить больше нулей перед символом D в зависимости от Значение точности вашего столбца, например, два нуля до D сохраняются для NUMBER(14,12) или три нуля для NUMBER(15,12).

0 голосов
/ 07 апреля 2020

Посмотрите, поможет ли какой-либо из этих двух вариантов.

Пример данных:

SQL> create table test as
  2    (select 12.34 col             from dual union all
  3     select 0.1234003             from dual union all
  4     select -13.43432203          from dual union all
  5     select 0.00012345221         from dual union all
  6     select -0.002412428238234821 from dual
  7    );

Table created.

SQL> desc test;
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 COL                                                NUMBER

SQL> select col,
  2    regexp_replace(col, '^(-?)([.,])', '\10\2') result1,
  3    rtrim(to_char(col, 'fm90D999999999999999999999'), '.') result2
  4  from test;

       COL RESULT1                   RESULT2
---------- ------------------------- -------------------------
     12,34 12,34                     12,34
  ,1234003 0,1234003                 0,1234003
-13,434322 -13,43432203              -13,43432203
,000123452 0,00012345221             0,00012345221
-,00241243 -0,002412428238234821     -0,002412428238234821

SQL>

Как их использовать в формах? Точно так же - вы бы, например,

select regexp_replace(col, '^(-?)([.,])', '\10\2')
  into :block.text_item
  from your_table
  where some_condition;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...