Гость
Map
Форумы / Отчетные системы [игнор отключен] [закрыт для гостей] / Как написать число прописью / 8 сообщений из 8, страница 1 из 1
16.03.2005, 14:06
    #32963397
Gaver
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как написать число прописью
У меня есть поле типа number мне нужно что бы число писалось прописью. Например в поле есть значение 150 нужно что бы было "Сто пятьдесят"
Подскажите пожалуйста какую функцию можно использовать
...
Рейтинг: 0 / 0
16.03.2005, 14:51
    #32963556
Gaver
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как написать число прописью
Забыл сказать что речь идет о Crystal Reports
...
Рейтинг: 0 / 0
16.03.2005, 15:10
    #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
16.03.2005, 15:10
    #32963631
gerss
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как написать число прописью
GaverУ меня есть поле типа number мне нужно что бы число писалось прописью. Например в поле есть значение 150 нужно что бы было "Сто пятьдесят"
Подскажите пожалуйста какую функцию можно использовать

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

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

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

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

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


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