Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
сумма прописью
|
|||
|---|---|---|---|
|
#18+
Уважаемые господа, есть ли у кого готовое решение такой задачи: есть цифры например сумма денег в цифрах,а надо получить строку со словами выражающими эту сумму ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2005, 07:54 |
|
||
|
сумма прописью
|
|||
|---|---|---|---|
|
#18+
если решений готовых нет, напишу сам принимаю рекомендации. вводная это будет хп ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2005, 07:56 |
|
||
|
сумма прописью
|
|||
|---|---|---|---|
|
#18+
нужно на SQL в виде хранимой процедуры, у меня есть на VB6 в виде модуля .bas его прицепляю пользуйтесь(ManySTR.rar), если есть интерес хранимую процедуру хочу написать для ASA8(Version 8.0.2.4308) на диалекте Watcom-SQL С уважением Александр Плотников. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2005, 10:34 |
|
||
|
сумма прописью
|
|||
|---|---|---|---|
|
#18+
panuУважаемые господа, есть ли у кого готовое решение такой задачи: есть цифры например сумма денег в цифрах,а надо получить строку со словами выражающими эту сумму Ваш адрес? Процедура есть ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2005, 10:45 |
|
||
|
сумма прописью
|
|||
|---|---|---|---|
|
#18+
мой адрес panu@online.nsk.su хотя можно и скрипт прицепить к сообщению, но как хотите. С уважением Александр Плотников. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2005, 10:53 |
|
||
|
сумма прописью
|
|||
|---|---|---|---|
|
#18+
panu пишет: > мой адрес panu@online.nsk.su > хотя можно и скрипт прицепить к сообщению, но как хотите. Действительно, ведь многим было бы интересно (например мне :) ). Может быть (если конечно можно) выложите примерчик скрипта? Posted via ActualForum NNTP Server 1.1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2005, 13:07 |
|
||
|
сумма прописью
|
|||
|---|---|---|---|
|
#18+
сожалею но владелец скрипта Vinogradov не дал явного разрешения на публикацию своей интелектуальной собственности, если будет угодно всевышнему (моему шефу) и у меня будет время напишу свой скрипт и выложу обещаю. кстати в работе скрипта обнаружил ошибку: последняя цифра до запятой не анализируется и после запятой полное игнорирование цифр. С уважением Александр Плотников. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2005, 13:42 |
|
||
|
сумма прописью
|
|||
|---|---|---|---|
|
#18+
Типа заменить Set на Select и подумать? Сам даже не смотрел. Просто валялось. /*************************************************************************/ /* NumPhrase function for MSSQL2000 */ /* Gleb Oufimtsev (dnkvpb@nm.ru) */ /* http://www.gvu.newmail.ru */ /* Moscow Russia 2001 */ /*************************************************************************/ CREATE function NumPhrase (@Num BIGINT, @IsMaleGender bit=1) returns varchar(255) as begin declare @nword varchar(255), @th tinyint, @gr smallint, @d3 tinyint, @d2 tinyint, @d1 tinyint if @Num<0 return '*** Error: Negative value' else if @Num=0 return 'Ноль' /* особый случай */ while @Num>0 begin set @th=IsNull(@th,0)+1 set @gr=@Num%1000 set @Num=(@Num-@gr)/1000 if @gr>0 begin set @d3=(@gr-@gr%100)/100 set @d1=@gr%10 set @d2=(@gr-@d3*100-@d1)/10 if @d2=1 set @d1=10+@d1 set @nword=case @d3 when 1 then ' сто' when 2 then ' двести' when 3 then ' триста' when 4 then ' четыреста' when 5 then ' пятьсот' when 6 then ' шестьсот' when 7 then ' семьсот' when 8 then ' восемьсот' when 9 then ' девятьсот' else '' end +case @d2 when 2 then ' двадцать' when 3 then ' тридцать' when 4 then ' сорок' when 5 then ' пятьдесят' when 6 then ' шестьдесят' when 7 then ' семьдесят' when 8 then ' восемьдесят' when 9 then ' девяносто' else '' end +case @d1 when 1 then (case when @th=2 or (@th=1 and @IsMaleGender=0) then ' одна' else ' один' end) when 2 then (case when @th=2 or (@th=1 and @IsMaleGender=0) then ' две' else ' два' end) when 3 then ' три' when 4 then ' четыре' when 5 then ' пять' when 6 then ' шесть' when 7 then ' семь' when 8 then ' восемь' when 9 then ' девять' when 10 then ' десять' when 11 then ' одиннадцать' when 12 then ' двенадцать' when 13 then ' тринадцать' when 14 then ' четырнадцать' when 15 then ' пятнадцать' when 16 then ' шестнадцать' when 17 then ' семнадцать' when 18 then ' восемнадцать' when 19 then ' девятнадцать' else '' end +case @th when 2 then ' тысяч' +(case when @d1=1 then 'а' when @d1 in (2,3,4) then 'и' else '' end) when 3 then ' миллион' when 4 then ' миллиард' when 5 then ' триллион' when 6 then ' квадрилион' when 7 then ' квинтилион' else '' end +case when @th in (3,4,5,6,7) then (case when @d1=1 then '' when @d1 in (2,3,4) then 'а' else 'ов' end) else '' end +IsNull(@nword,'') end end return upper(substring(@nword,2,1))+substring(@nword,3,len(@nword)-2) end GO /*************************************************************************/ /* RubPhrase function for MSSQL2000 */ /* Gleb Oufimtsev (dnkvpb@nm.ru) */ /* http://www.gvu.newmail.ru */ /* Moscow Russia 2001 */ /*************************************************************************/ CREATE function RubPhrase (@Value money) returns varchar(255) as begin declare @rpart bigint, @rattr tinyint, @cpart tinyint, @cattr tinyint set @rpart=floor(@Value) set @rattr=@rpart%100 if @rattr>19 set @rattr=@rattr%10 set @cpart=(@Value-@rpart)*100 if @cpart>19 set @cattr=@cpart%10 else set @cattr=@cpart return dbo.NumPhrase(@rpart,1)+' рубл' +case when @rattr=1 then 'ь' when @rattr in (2,3,4) then 'я' else 'ей' end+' ' +right('0'+cast(@cpart as varchar(2)),2)+' копе' +case when @cattr=1 then 'йка' when @cattr in (2,3,4) then 'йки' else 'ек' end end GO /*************************************************************************/ /* UsdPhrase function for MSSQL2000 */ /* Gleb Oufimtsev (dnkvpb@nm.ru) */ /* http://www.gvu.newmail.ru */ /* Moscow Russia 2001 */ /*************************************************************************/ CREATE function UsdPhrase (@Value money) returns varchar(255) as begin declare @dpart bigint, @dattr tinyint, @cpart tinyint, @cattr tinyint set @dpart=floor(@Value) set @dattr=@dpart%100 if @dattr>19 set @dattr=@dattr%10 set @cpart=(@Value-@dpart)*100 if @cpart>19 set @cattr=@cpart%10 else set @cattr=@cpart return dbo.NumPhrase(floor(@Value),1)+' доллар' +case when @dattr=1 then '' when @dattr in (2,3,4) then 'а' else 'ов' end +' США '+right('0'+cast(@cpart as varchar(2)),2)+' цент' +case when @cattr=1 then '' when @cattr in (2,3,4) then 'а' else 'ов' end end ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2005, 15:11 |
|
||
|
сумма прописью
|
|||
|---|---|---|---|
|
#18+
извените уважаемые читатели приношу публичную благодарность Vinogradov за предоставленный скрипт С уважением Александр Плотников. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2005, 15:15 |
|
||
|
сумма прописью
|
|||
|---|---|---|---|
|
#18+
Извините, но разве нельзя прицепить DLL прямо к ASA? В виде ExternalProc? А таких DLL-ей есть туча в сети; некоторые на всех языках... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2005, 21:29 |
|
||
|
сумма прописью
|
|||
|---|---|---|---|
|
#18+
АстралопитекИзвините, но разве нельзя прицепить DLL прямо к ASA? В виде ExternalProc? А таких DLL-ей есть туча в сети; некоторые на всех языках... Можно, но я бы не рискнул - слишком большой риск навернуть сервер во время работы из за какой нибудь ошибки в DLL. Ну а вообще то конечно желательно такую DLL прицепить к клиенту/отчетнику, раз уж они не позволяют на своем языке написать сумму прописью, что конечно для них жирный минус. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2005, 23:13 |
|
||
|
сумма прописью
|
|||
|---|---|---|---|
|
#18+
Уважаемые господа, прошу прощения предложенное решение с внешней DLL к серверу или такую функцию встраивать в клиента уже старо как мир и довольно некрасиво. ведь современные базы данных это не просто хранилище. я полагаю, что данную опцию весьма целесообразно иметь именно в БД, а не в клиентах или в DLL, по причине удобства использования. я так думаю. С уважением Александр Плотников. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2005, 06:06 |
|
||
|
сумма прописью
|
|||
|---|---|---|---|
|
#18+
panuУважаемые господа, прошу прощения предложенное решение с внешней DLL к серверу или такую функцию встраивать в клиента уже старо как мир и довольно некрасиво. ведь современные базы данных это не просто хранилище. я полагаю, что данную опцию весьма целесообразно иметь именно в БД, а не в клиентах или в DLL, по причине удобства использования. я так думаю. С уважением Александр Плотников. А никогда не тестировали производительность подобных извратов?... В этой функции очень много вычислительной работы и нихрена нет работы собственно с данными. Вынос таких вещей вещей external procedure - нормальный подход... Да, и еще замечание. В случае, когда система многовалютная, то делается табличка склонений валют и : USD: 1 доллар, 2 доллара, 5 долларов RUR: 1 рубль, 2 рубля, 5 рублей, EUR: 1 евро, 2 евра, 5 еврей (шутка) Аналогично с центами Как-то проще получается :)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2005, 10:12 |
|
||
|
|

start [/forum/topic.php?fid=55&msg=33037311&tid=2013676]: |
0ms |
get settings: |
6ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
56ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
| others: | 222ms |
| total: | 370ms |

| 0 / 0 |
