Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Частица "And" в сумме прописью, нужна помощь / 6 сообщений из 6, страница 1 из 1
16.03.2004, 12:32
    #32443271
Alkush
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Частица "And" в сумме прописью, нужна помощь
Такая ситуация, в счетах для бухгалтерии нужно писать сумму прописью по всем правилам. Скрипт, который я переделал с русского на Английский выдает это: 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
16.03.2004, 14:00
    #32443565
ппп
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Частица "And" в сумме прописью, нужна помощь
Посмотри
http://msa.polarcom.ru/bricks.htm
...
Рейтинг: 0 / 0
16.03.2004, 14:16
    #32443605
sv80
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Частица "And" в сумме прописью, нужна помощь
Быстрый вариант заменить "million" на "million and ", "thousand" на "thousand and " и т.д. но устроит ли он тебя когда будет ровно 1 милион и тысяча без копеейк и рублей:):):). Тогда нужно будет обрезать последние три буквы если они равны "and".
...
Рейтинг: 0 / 0
16.03.2004, 14:22
    #32443625
sv80
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Частица "And" в сумме прописью, нужна помощь
И зачем использовать 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
16.03.2004, 14:27
    #32443646
Темный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Частица "And" в сумме прописью, нужна помощь
Как вариант - проверять в каждом условии, исключая перове st пустая или нет. Если пустая, то ничего не делать, если нет, то забабахивать туда слово and
...
Рейтинг: 0 / 0
16.03.2004, 16:07
    #32443932
Alkush
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Частица "And" в сумме прописью, нужна помощь
Спасибо, я воспользовался "Быстрым вариантом заменить "million" на "million and ", "thousand" на "thousand and"
Пока все работает, позже покумекаю как это сделать более грамотно.
А на этом сайте:http://msa.polarcom.ru/bricks.htm я был
Есть только один скрипт на Английском и тот почему-то у меня не заработал
Еще раз “огромное” спасибо
Честно скажу, трудно что-то делать если не знаешь "мат. часть" :Ю)
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Частица "And" в сумме прописью, нужна помощь / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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