powered by simpleCommunicator - 2.0.29     © 2024 Programmizd 02
Map
Форумы / Отчетные системы [игнор отключен] [закрыт для гостей] / Как написать число прописью
8 сообщений из 8, страница 1 из 1
Как написать число прописью
    #32963397
Gaver
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У меня есть поле типа number мне нужно что бы число писалось прописью. Например в поле есть значение 150 нужно что бы было "Сто пятьдесят"
Подскажите пожалуйста какую функцию можно использовать
...
Рейтинг: 0 / 0
Как написать число прописью
    #32963556
Gaver
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Забыл сказать что речь идет о Crystal Reports
...
Рейтинг: 0 / 0
Как написать число прописью
    #32963628
Djoon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как вариант можно использовать функцию на сервере БД и получать уже от туда число прописью. Например в нашей системе так реализовано.
например для Oracla
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
CREATE OR REPLACE  FUNCTION "NUMBER2WORD" (source IN 
    NUMBER) RETURN varchar2 is
result VARCHAR2( 300 );
begin
   -- k - копейки
  result := ltrim(to_char( source,
    '9,9,,9,,,,,,9,9,,9,,,,,9,9,,9,,,,9,9,,9,,,.99')) || 'k';
  -- t - тысячи; m - милионы; M - миллиарды;
  result := replace( result, ',,,,,,', 'eM');
  result := replace( result, ',,,,,', 'em');
  result := replace( result, ',,,,', 'et');
  -- e - единицы; d - десятки; c - сотни;
  result := replace( result, ',,,', 'e');
  result := replace( result, ',,', 'd');
  result := replace( result, ',', 'c');
  --
  result := replace( result, '0c0d0et', '');
  result := replace( result, '0c0d0em', '');
  result := replace( result, '0c0d0eM', '');
  --
  result := replace( result, '0c', '');
  result := replace( result, '1c', 'сто ');
  result := replace( result, '2c', 'двести ');
  result := replace( result, '3c', 'триста ');
  result := replace( result, '4c', 'четыреста ');
  result := replace( result, '5c', 'пятьсот ');
  result := replace( result, '6c', 'шестьсот ');
  result := replace( result, '7c', 'семьсот ');
  result := replace( result, '8c', 'восемьсот ');
  result := replace( result, '9c', 'девятьсот ');
  --
  result := replace( result, '1d0e', 'десять ');
  result := replace( result, '1d1e', 'одиннадцать ');
  result := replace( result, '1d2e', 'двенадцать ');
  result := replace( result, '1d3e', 'тринадцать ');
  result := replace( result, '1d4e', 'четырнадцать ');
  result := replace( result, '1d5e', 'пятнадцать ');
  result := replace( result, '1d6e', 'шестнадцать ');
  result := replace( result, '1d7e', 'семьнадцать ');
  result := replace( result, '1d8e', 'восемнадцать ');
  result := replace( result, '1d9e', 'девятнадцать ');
  --
  result := replace( result, '0d', '');
  result := replace( result, '2d', 'двадцать ');
  result := replace( result, '3d', 'тридцать ');
  result := replace( result, '4d', 'сорок ');
  result := replace( result, '5d', 'пятьдесят ');
  result := replace( result, '6d', 'шестьдесят ');
  result := replace( result, '7d', 'семьдесят ');
  result := replace( result, '8d', 'восемьдесят ');
  result := replace( result, '9d', 'девяносто ');
  --
  result := replace( result, '0e', '');
  result := replace( result, '5e', 'пять ');
  result := replace( result, '6e', 'шесть ');
  result := replace( result, '7e', 'семь ');
  result := replace( result, '8e', 'восемь ');
  result := replace( result, '9e', 'девять ');
  --
  result := replace( result, '1e.', 'один рубль ');
  result := replace( result, '2e.', 'два рубля ');
  result := replace( result, '3e.', 'три рубля ');
  result := replace( result, '4e.', 'четыре рубля ');
  result := replace( result, '1et', 'одна тысяча ');
  result := replace( result, '2et', 'две тысячи ');
  result := replace( result, '3et', 'три тысячи ');
  result := replace( result, '4et', 'четыре тысячи ');
  result := replace( result, '1em', 'один миллион ');
  result := replace( result, '2em', 'два миллиона ');
  result := replace( result, '3em', 'три миллиона ');
  result := replace( result, '4em', 'четыре миллиона ');
  result := replace( result, '1eM', 'один милиард ');
  result := replace( result, '2eM', 'два милиарда ');
  result := replace( result, '3eM', 'три милиарда ');
  result := replace( result, '4eM', 'четыре милиарда ');
  --
  result := replace( result, '11k', '11 копеек');
  result := replace( result, '12k', '12 копеек');
  result := replace( result, '13k', '13 копеек');
  result := replace( result, '14k', '14 копеек');
  result := replace( result, '1k', '1 копейка');
  result := replace( result, '2k', '2 копейки');
  result := replace( result, '3k', '3 копейки');
  result := replace( result, '4k', '4 копейки');
  --

  if not (substr(result, 1 , 1 )='.') then
  result := replace( result, '.', ' рублeй ');
  else
  result := replace( result, '.', 'ноль рублeй ');
  end if;
  result := replace( result, 't', 'тысяч ');
  result := replace( result, 'm', 'миллионов ');
  result := replace( result, 'M', 'милиардов ');
  result := replace( result, 'k', ' копeeк');
  --
  RETURN(result);

end;
Тут только для для рублей но это не так важно
...
Рейтинг: 0 / 0
Как написать число прописью
    #32963631
gerss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GaverУ меня есть поле типа number мне нужно что бы число писалось прописью. Например в поле есть значение 150 нужно что бы было "Сто пятьдесят"
Подскажите пожалуйста какую функцию можно использовать

GaverЗабыл сказать что речь идет о Crystal Reports

Никакую из встроенных. Только писать самому. Смотри в сторону написания внешних пользовательских функций.

PS: Приходилось такое делать, но не уверен, что смогу найти исходники на Delphi. Вечером дома посмотрю - может нарою...
...
Рейтинг: 0 / 0
Как написать число прописью
    #32963895
Gaver
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
[quot Djoon]как вариант можно использовать функцию на сервере БД и получать уже от туда число прописью. Например в нашей системе так реализовано.
например для Oracla

А у вас система случайно не Парус
...
Рейтинг: 0 / 0
Как написать число прописью
    #32964252
Djoon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А у вас система случайно не Парус
Нет у нас своя разработка для сосдания отчетов применяеться Cristal
...
Рейтинг: 0 / 0
Как написать число прописью
    #32965926
gean
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GaverА у вас система случайно не Парус
Если у вас установлен Парус, то используйте функцию PrMoneyToStr()
...
Рейтинг: 0 / 0
Как написать число прописью
    #32966188
Gaver
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
gean GaverА у вас система случайно не Парус
Если у вас установлен Парус, то используйте функцию PrMoneyToStr()

Именно этой функцией я и воспользовался. Всем большое спасибо!
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Отчетные системы [игнор отключен] [закрыт для гостей] / Как написать число прописью
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]