powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Частица "And" в сумме прописью, нужна помощь
6 сообщений из 6, страница 1 из 1
Частица "And" в сумме прописью, нужна помощь
    #32443271
Alkush
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Такая ситуация, в счетах для бухгалтерии нужно писать сумму прописью по всем правилам. Скрипт, который я переделал с русского на Английский выдает это: One hundred forty two thousand nine hundred eighteen Baht 83 satang only
а нужно, One hundred forty two thousand and nine hundred eighteen Baht & 83 satang only
Скрипт, который я переделал приведен ниже
Помогите, может я что забыл исправить или добавить

Код: 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.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
Option Compare Database
Option Explicit
Dim a1( 9 ) As String
Dim a2( 9 ) As String
Dim a3( 9 ) As String
Dim a4( 9 ) As String

Public Function props$(chislo#)
Dim t As Long
Dim b As Long
Dim K As Long
Dim ch$, st$, S1$
Dim a#, ass%
t =  0 : b =  0 : K =  0 : a# =  0 : ass% =  0 
a1( 1 ) =  "one hundred" : a1( 2 ) =  "two hundred" 
a1( 3 ) =  "three hundred" : a1( 4 ) =  "four hundred" 
a1( 5 ) =  "five hundred" : a1( 6 ) =  "six hundred" 
a1( 7 ) =  "seven hundred" : a1( 8 ) =  "eight hundred" 
a1( 9 ) =  "nine hundred" 
a2( 1 ) =  "ten" : a2( 2 ) =  "twenty" 
a2( 3 ) =  "thirty" : a2( 4 ) =  "forty" 
a2( 5 ) =  "fifty" : a2( 6 ) =  "sixty" 
a2( 7 ) =  "seventy" : a2( 8 ) =  "eighty" 
a2( 9 ) =  "ninety" 
a3( 1 ) =  "eleyen" : a3( 2 ) =  "twelve" 
a3( 3 ) =  "thirteen" : a3( 4 ) =  "fourteen" 
a3( 5 ) =  "fifteen" : a3( 6 ) =  "sixteen" 
a3( 7 ) =  "seventeen" : a3( 8 ) =  "eighteen" 
a3( 9 ) =  "nineteen" 
a4( 1 ) =  "one" : a4( 2 ) =  "two" 
a4( 3 ) =  "three" : a4( 4 ) =  "four" 
a4( 5 ) =  "five" : a4( 6 ) =  "six" 
a4( 7 ) =  "seven" : a4( 8 ) =  "eight" 
a4( 9 ) =  "nine" 
t = Int(chislo#)
a# = chislo# - t
ass% = Int(a# *  100 )
If Int(a# *  100 ) +  1  - a# *  100  <  0 . 5  Then
ass% = ass% +  1 
End If
If ass% =  0  Then
S1$ = Chr$( 32 ) +  "00 " + Chr$( 32 ) +  "satang only" 
Else
If ass% <  10  Then
S1$ = Chr$( 32 ) +  "0 " + LTrim(Str(ass%)) + Chr$( 32 ) +  "satang only" 
Else
S1$ = Chr$( 32 ) + Str(ass%) + Chr$( 32 ) +  "satang only" 
End If
End If
st$ = Chr$( 32 )
If t >  1000000  Then
b = Int(t /  1000000 )
t = t - b *  1000000 
st$ = Chr$( 32 ) + st$ + itos$(b,  0 )
K = b -  100  * Int(b /  100 )
If K >=  11  And K <=  14  Then
st$ = st$ + Chr$( 32 ) +  "million" 
Else
K = b -  10  * Int(b /  10 )
Select Case K
Case  0 ,  5  To  9 
st$ = st$ + Chr$( 32 ) +  "million" 
Case  2  To  4 
st$ = st$ + Chr$( 32 ) +  "million" 
Case  1 
st$ = st$ + Chr$( 32 ) +  "million" 
End Select
End If
End If
If t >=  1000  Then
b = Int(t /  1000 )
t = t - b *  1000 
st$ = st$ + itos$(b,  1 )
K = b -  100  * Int(b /  100 )
If K >=  11  And K <=  14  Then
st$ = st$ + Chr$( 32 ) +  "thousand" 
Else
K = b -  10  * Int(b /  10 )
Select Case K
Case  0 ,  5  To  9 
st$ = st$ + Chr$( 32 ) +  "thousand" 
Case  2  To  4 
st$ = st$ + Chr$( 32 ) +  "thousand" 
Case  1 
st$ = st$ + Chr$( 32 ) +  "thousand" 
End Select
End If
End If
b = t
If t <>  0  Then
st$ = st$ + itos$(b,  0 )
End If
b = t
K = b -  100  * Int(b /  100 )
If K >=  11  And K <=  15  Then
st$ = st$ + Chr$( 32 ) +  "Baht" 
Else

K = b -  10  * Int(b /  10 )
Select Case K
Case  0 ,  5  To  9 
st$ = st$ + Chr$( 32 ) +  "Baht" 
Case  2  To  4 
st$ = st$ + Chr$( 32 ) +  "Baht" 
Case  1 
st$ = st$ + Chr$( 32 ) +  "Baht" 
End Select
End If
st$ = LTrim$(st$)
st$ = UCase$(Left$(st$,  1 )) + Right$(st$, Len(st$) -  1 )
props$ = st$ + S1$
End Function

Function itos$(n, p)
Dim t As Integer
Dim i As Integer
Dim st$
i =  0 
t = n
If t >=  100  Then
i = Int(t /  100 )
st$ = a1(i)
t = t - i *  100 
End If
Select Case t
Case Is >=  20 
i = Int(t /  10 )
st$ = st$ + Chr$( 32 ) + a2(i)
t = t - i *  10 
Case  11  To  19 
i = t -  10 
st$ = st$ + Chr$( 32 ) + a3(i)
t =  0 
Case  10 
st$ = st$ + Chr$( 32 ) + a2( 1 )
t =  0 
Case Else
End Select
Select Case t
Case  1 ,  2 
If p <>  1  Then
st$ = st$ + Chr$( 32 ) + a4(t)
Else
If t =  1  Then
st$ = st$ + Chr$( 32 ) +  "one" 
Else
st$ = st$ + Chr$( 32 ) +  "two" 
End If
End If
Case  3  To  9 
st$ = st$ + Chr$( 32 ) + a4(t)
Case Else
End Select
itos$ = Chr$( 32 ) + st$
End Function
...
Рейтинг: 0 / 0
Частица "And" в сумме прописью, нужна помощь
    #32443565
ппп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Посмотри
http://msa.polarcom.ru/bricks.htm
...
Рейтинг: 0 / 0
Частица "And" в сумме прописью, нужна помощь
    #32443605
sv80
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Быстрый вариант заменить "million" на "million and ", "thousand" на "thousand and " и т.д. но устроит ли он тебя когда будет ровно 1 милион и тысяча без копеейк и рублей:):):). Тогда нужно будет обрезать последние три буквы если они равны "and".
...
Рейтинг: 0 / 0
Частица "And" в сумме прописью, нужна помощь
    #32443625
sv80
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И зачем использовать Select если операторы все равно идентичны?????
Код: 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.
Select Case K
Case  0 ,  5  To  9 
st$ = st$ + Chr$( 32 ) +  "million" 
Case  2  To  4 
st$ = st$ + Chr$( 32 ) +  "million" 
Case  1 
st$ = st$ + Chr$( 32 ) +  "million" 
End Select
.....
Select Case K
Case  0 ,  5  To  9 
st$ = st$ + Chr$( 32 ) +  "thousand" 
Case  2  To  4 
st$ = st$ + Chr$( 32 ) +  "thousand" 
Case  1 
st$ = st$ + Chr$( 32 ) +  "thousand" 
End Select
.......

Select Case K
Case  0 ,  5  To  9 
st$ = st$ + Chr$( 32 ) +  "Baht" 
Case  2  To  4 
st$ = st$ + Chr$( 32 ) +  "Baht" 
Case  1 
st$ = st$ + Chr$( 32 ) +  "Baht" 
End Select

Хотя кажется знаю ответ в русском варианте тут еще наверное склоняли милионы, тысячи, рубли.:):):)
...
Рейтинг: 0 / 0
Частица "And" в сумме прописью, нужна помощь
    #32443646
Фотография Темный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как вариант - проверять в каждом условии, исключая перове st пустая или нет. Если пустая, то ничего не делать, если нет, то забабахивать туда слово and
...
Рейтинг: 0 / 0
Частица "And" в сумме прописью, нужна помощь
    #32443932
Alkush
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, я воспользовался "Быстрым вариантом заменить "million" на "million and ", "thousand" на "thousand and"
Пока все работает, позже покумекаю как это сделать более грамотно.
А на этом сайте:http://msa.polarcom.ru/bricks.htm я был
Есть только один скрипт на Английском и тот почему-то у меня не заработал
Еще раз “огромное” спасибо
Честно скажу, трудно что-то делать если не знаешь "мат. часть" :Ю)
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Частица "And" в сумме прописью, нужна помощь
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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