Доброго времени суток, Посетитель!
|
|
|
|
|
|
|
|
|
вид форума:
|
|
|
|
| чисто поржать, а может и найдёт своё продолжение в ваших разрабтках/усовершенствованиях!
создаем таблицу :)
pcode = числовой
pname = текст
pmask = текст
lang = текст
capcur = текст
capcop = текст
cap2 = текст
cap3 = текст
cap4 = текст
данные в csv:
pcode;pname;pmask;lang;capcur;capcop;cap2;cap3;cap4
0;ноль;0;ru;рублей;копеек;тисяч;миллионов;миллиардов
1;одна;0;ru;рублей;копейка;тысяча;;
2;две;0;ru;рублей;копейки;тысячи;;
3;три;0;ru;рублей;копейки;тысячи;миллиона;миллиарда
4;четыре;0;ru;рублей;копейки;тысячи;миллиона;миллиарда
5;пять;0;ru;рублей;копейки;тысяч;миллионов;миллиардов
6;шесть;0;ru;рублей;копейки;тысяч;миллионов;миллиардов
7;семь;0;ru;рублей;копейки;тысяч;миллионов;миллиардов
8;восемь;0;ru;рублей;копейки;тысяч;миллионов;миллиардов
9;девять;0;ru;рублей;копейки;тысяч;миллионов;миллиардов
10;десять;00;ru;рублей;копейки;тысяч;миллионов;миллиардов
11;одиннадцать;00;ru;рублей;копеек;тысяч;миллионов;миллиардов
12;двенадцать;00;ru;рублей;копеек;тысяч;миллионов;миллиардов
13;тринадцать;00;ru;рублей;копеек;тысяч;миллионов;миллиардов
14;четирнадцать;00;ru;рублей;копеек;тысяч;миллионов;миллиардов
15;пятнадцать;00;ru;рублей;копеек;тысяч;миллионов;миллиардов
16;шестнадцать;00;ru;рублей;копеек;тысяч;миллионов;миллиардов
17;семнадцать;00;ru;рублей;копеек;тысяч;миллионов;миллиардов
18;восемнадцать;00;ru;рублей;копеек;тысяч;миллионов;миллиардов
19;девятнадцать;00;ru;рублей;копеек;тысяч;миллионов;миллиардов
20;двадцать;00;ru;рублей;копеек;тысяч;миллионов;миллиардов
30;тридцать;00;ru;рублей;копеек;тысяч;миллионов;миллиардов
40;сорок;00;ru;рублей;копеек;тысяч;миллионов;миллиардов
50;пятьдесят;00;ru;рублей;копеек;тысяч;миллионов;миллиардов
60;шестьдесят;00;ru;рублей;копеек;тысяч;миллионов;миллиардов
70;семьдесят;00;ru;рублей;копеек;тысяч;миллионов;миллиардов
80;восемьдесят;00;ru;рублей;копеек;тысяч;миллионов;миллиардов
90;девяносто;00;ru;рублей;копеек;тысяч;миллионов;миллиардов
100;сто;000;ru;рублей;копеек;тысяч;миллионов;миллиардов
200;двести;000;ru;рублей;копеек;тысяч;миллионов;миллиардов
300;триста;000;ru;рублей;копеек;тысяч;миллионов;миллиардов
400;четиреста;000;ru;рублей;копеек;тысяч;миллионов;миллиардов
500;пятьсот;000;ru;рублей;копеек;тысяч;миллионов;миллиардов
600;шестьсот;000;ru;рублей;копеек;тысяч;миллионов;миллиардов
700;семьсот;000;ru;рублей;копеек;тысяч;миллионов;миллиардов
800;восемьот;000;ru;рублей;копеек;тысяч;миллионов;миллиардов
900;девятьсот;000;ru;рублей;копеек;тысяч;миллионов;миллиардов
1000000;один;0000000;ru;рубль;;;миллион;
2000000;два;0000000;ru;рубля;;;миллиона;
3000000;три;0000000;ru;рубля;;;миллиона;
4000000;четыре;0000000;ru;рубля;;;миллиона;
1000000000;один;0000000000;ru;рублей;;;;миллиард
2000000000;два;0000000000;ru;рублей;;;;миллиарда
0;ноль;0;ua;гривень;копiйок;тисяч;мiльонiв;мiльярдiв
1;одна;0;ua;гривня;копiйка;тисяча;;
2;дві;0;ua;гривнi;копiйки;тисячi;;
3;три;0;ua;гривнi;копiйки;тисячi;мiльона;мiльярда
4;чотири;0;ua;гривнi;копiйки;тисячi;мiльона;мiльярда
5;п'ять;0;ua;гривень;копiйок;тисяч;мiльонiв;мiльярдiв
6;шість;0;ua;гривень;копiйок;тисяч;мiльонiв;мiльярдiв
7;сім;0;ua;гривень;копiйок;тисяч;мiльонiв;мiльярдiв
8;вісім;0;ua;гривень;копiйок;тисяч;мiльонiв;мiльярдiв
9;дев'ять;0;ua;гривень;копiйок;тисяч;мiльонiв;мiльярдiв
10;десять;00;ua;гривень;копiйок;тисяч;мiльонiв;мiльярдiв
11;одинадцать;00;ua;гривень;копiйок;тисяч;мiльонiв;мiльярдiв
12;дванадцять;00;ua;гривень;копiйок;тисяч;мiльонiв;мiльярдiв
13;тринадцять;00;ua;гривень;копiйок;тисяч;мiльонiв;мiльярдiв
14;чотирнадцять;00;ua;гривень;копiйок;тисяч;мiльонiв;мiльярдiв
15;п'ятнадцять;00;ua;гривень;копiйок;тисяч;мiльонiв;мiльярдiв
16;шістнадцять;00;ua;гривень;копiйок;тисяч;мiльонiв;мiльярдiв
17;сімнадцять;00;ua;гривень;копiйок;тисяч;мiльонiв;мiльярдiв
18;вісімнадцять;00;ua;гривень;копiйок;тисяч;мiльонiв;мiльярдiв
19;дев'ятнадцять;00;ua;гривень;копiйок;тисяч;мiльонiв;мiльярдiв
20;двадцять;00;ua;гривень;копiйок;тисяч;мiльонiв;мiльярдiв
30;тридцять;00;ua;гривень;копiйок;тисяч;мiльонiв;мiльярдiв
40;сорок;00;ua;гривень;копiйок;тисяч;мiльонiв;мiльярдiв
50;п'ятдесят;00;ua;гривень;копiйок;тисяч;мiльонiв;мiльярдiв
60;шістдесят;00;ua;гривень;копiйок;тисяч;мiльонiв;мiльярдiв
70;сімдесят;00;ua;гривень;копiйок;тисяч;мiльонiв;мiльярдiв
80;вісімдесят;00;ua;гривень;копiйок;тисяч;мiльонiв;мiльярдiв
90;дев'яносто;00;ua;гривень;копiйок;тисяч;мiльонiв;мiльярдiв
100;сто;000;ua;гривень;копiйок;тисяч;мiльонiв;мiльярдiв
200;двісті;000;ua;гривень;копiйок;тисяч;мiльонiв;мiльярдiв
300;триста;000;ua;гривень;копiйок;тисяч;мiльонiв;мiльярдiв
400;чотириста;000;ua;гривень;копiйок;тисяч;мiльонiв;мiльярдiв
500;п'ятьсот;000;ua;гривень;копiйок;тисяч;мiльонiв;мiльярдiв
600;шістьсот;000;ua;гривень;копiйок;тисяч;мiльонiв;мiльярдiв
700;сімсот;000;ua;гривень;копiйок;тисяч;мiльонiв;мiльярдiв
800;вісімсот;000;ua;гривень;копiйок;тисяч;мiльонiв;мiльярдiв
900;дев'ятьсот;000;ua;гривень;копiйок;тисяч;мiльонiв;мiльярдiв
1000000;один;0000000;ua;гривень;копiйок;;мiльон;
2000000;два;0000000;ua;гривень;копiйок;;мiльона;
1000000000;один;0000000000;ua;гривень;копiйок;;;мiльярд
2000000000;два;0000000000;ua;гривень;копiйок;;;мiльярда
|
вот функция :) вроде работает.... только копейки не выдает :) но место под них там в коде есть... я себе доработаю... а вы пока подЫвытесь (посмотрите по украински)
'?propeace(1971.26)
Public Function propeace(amount@, Optional lang$ = "ua")
Dim rs As DAO.Recordset
Dim varvar() As Variant
Dim pp$, ret$, i&, ar, ad, am, vl, chk&
amount = CCur(amount)
am = Split(amount, Mid(amount, Len(CStr(Int(amount))) + 1, 1)) 'котлеты-отдельно, мухи-отдельно
'-- триадим деньги :)
pp = Format(Int(am(0)), "000\|000\|000\|000")
ar = Split(pp, "|")
'-- загрузить шаблоны на
ReDim varvar(0)
Set rs = CurrentDb.OpenRecordset("select * from _propeace where lang='" & lang & "' order by pcode")
If Not rs.EOF Then
rs.MoveLast: rs.MoveFirst
ReDim varvar(rs.Fields.Count, rs.RecordCount)
varvar = rs.GetRows(rs.RecordCount)
End If
If UBound(varvar) = 0 Then propeace = "#Ошибка инициализации: шаблон не найден": Exit Function
'-- сразу считаем, что у нас в карманах нольнах :)
ret = varvar(1, 0) & " " & varvar(4, 0)
'-- а теперь разберемся, насколько это верно
If UBound(ar) = 3 And am(0) > 0 Then
ret = "": pp = ""
If Int(ar(0)) > 0 Then 'миллиардыах@еть
ad = Split(Format(Int(ar(0)), "0\|0\|0"), "|")
If Int(ar(0)) > 0 Then
vl = ad(0) * 100: GoSub s4var
If chk >= 11 And chk <= 19 Then
vl = chk: pp = "1G": GoSub s4var
Else
vl = ad(1) * 10: GoSub s4var
vl = ad(2) * 1: pp = "1G": GoSub s4var
End If
End If
End If
If Int(ar(1)) > 0 Then 'мульёны
ad = Split(Format(Int(ar(1)), "0\|0\|0"), "|")
If Int(ar(2)) > 0 Then
vl = ad(0) * 100: GoSub s4var
If chk >= 11 And chk <= 19 Then
vl = chk: pp = "1M": GoSub s4var
Else
vl = ad(1) * 10: GoSub s4var
vl = ad(2) * 1: pp = "1M": GoSub s4var
End If
End If
End If
If Int(ar(2)) > 0 Then 'тыдыщи
ad = Split(Format(Int(ar(2)), "0\|0\|0"), "|")
If Int(ar(2)) > 0 Then
vl = ad(0) * 100: GoSub s4var
chk = (ad(1) & ad(2)) * 1
If chk >= 11 And chk <= 19 Then
vl = chk: pp = "1K": GoSub s4var
Else
vl = ad(1) * 10: GoSub s4var
vl = ad(2) * 1: pp = "1K": GoSub s4var
End If
End If
End If
If Int(ar(3)) > 0 Then 'ссотни
ad = Split(Format(Int(ar(3)), "0\|0\|0"), "|")
If Int(ar(3)) > 0 Then
vl = ad(0) * 100: GoSub s4var
chk = (ad(1) & ad(2)) * 1
If chk >= 11 And chk <= 19 Then
vl = chk: pp = "end": GoSub s4var
Else
vl = ad(1) * 10: GoSub s4var
vl = ad(2) * 1: pp = "end": GoSub s4var
End If
End If
End If
End If 'end-of-money
'--если есть мелочь, то здесь разгребём
If UBound(am) > 0 Then 'мелочь
ad = Split(Format(Int(am(1)), "0\|0"), "|")
If Int(am(1)) > 0 Then
ad(0) = ad(0) * 10
ad(1) = ad(1) * 1
'vl = ad(1) * 1: GoSub s4var
'ret = ret & " 00 " & varvar(5, 0)
End If
Else
ret = ret & " 00 " & varvar(5, 0)
End If
propeace = ret
Exit Function
s4var:
If vl = 0 Then pp = "": Return
For i = rs.RecordCount - 1 To 1 Step -1
Select Case pp
Case "1M"
vl = IIf(vl = 1 Or vl = 2, vl * 1000000, vl)
Case "1G"
vl = IIf(vl = 1 Or vl = 2, vl * 1000000000, vl)
Case "end"
If lang = "ru" Then '--както некрасиво, но пока так :)
vl = IIf(Choose(vl, 1, 2, 3, 4), vl * 1000000, vl)
End If
End Select
If varvar(0, i) = vl Then
If vl < 10 Then
Select Case pp
Case "end"
ret = ret & " " & varvar(1, i) & " " & varvar(4, i)
Case "1K"
ret = ret & " " & varvar(1, i) & " " & varvar(6, i)
Case "1M"
ret = ret & " " & varvar(1, i) & " " & varvar(7, i)
Case "1G"
ret = ret & " " & varvar(1, i) & " " & varvar(8, i)
Case Else
ret = ret & " " & varvar(1, i)
End Select
Else
Select Case pp
Case "end"
ret = ret & " " & varvar(1, i) & " " & varvar(4, i)
Case "1K"
ret = ret & " " & varvar(1, i) & " " & varvar(6, i)
Case "1M"
ret = ret & " " & IIf(vl = 1000000 Or vl = 2000000, varvar(7, i), "")
Case "1G"
ret = ret & " " & IIf(vl = 1000000000 Or vl = 2000000, varvar(8, i), "")
Case Else
ret = ret & " " & varvar(1, i)
End Select
End If
Exit For
End If
Next i
pp = ""
Return
End Function
|
| |
|
| |
|
|
|
| Магистр, я моск сломать.
А эти 4 кусочка в цикл не получится загнать?
If Int(ar(0)) > 0 Then 'миллиардыах@еть
ad = Split(Format(Int(ar(0)), "0\|0\|0"), "|")
If Int(ar(0)) > 0 Then
vl = ad(0) * 100: GoSub s4var
If chk >= 11 And chk <= 19 Then
vl = chk: pp = "1G": GoSub s4var
Else
vl = ad(1) * 10: GoSub s4var
vl = ad(2) * 1: pp = "1G": GoSub s4var
End If
End If
End If
If Int(ar(1)) > 0 Then 'мульёны
ad = Split(Format(Int(ar(1)), "0\|0\|0"), "|")
If Int(ar(2)) > 0 Then
vl = ad(0) * 100: GoSub s4var
If chk >= 11 And chk <= 19 Then
vl = chk: pp = "1M": GoSub s4var
Else
vl = ad(1) * 10: GoSub s4var
vl = ad(2) * 1: pp = "1M": GoSub s4var
End If
End If
End If
If Int(ar(2)) > 0 Then 'тыдыщи
ad = Split(Format(Int(ar(2)), "0\|0\|0"), "|")
If Int(ar(2)) > 0 Then
vl = ad(0) * 100: GoSub s4var
chk = (ad(1) & ad(2)) * 1
If chk >= 11 And chk <= 19 Then
vl = chk: pp = "1K": GoSub s4var
Else
vl = ad(1) * 10: GoSub s4var
vl = ad(2) * 1: pp = "1K": GoSub s4var
End If
End If
End If
If Int(ar(3)) > 0 Then 'ссотни
ad = Split(Format(Int(ar(3)), "0\|0\|0"), "|")
If Int(ar(3)) > 0 Then
vl = ad(0) * 100: GoSub s4var
chk = (ad(1) & ad(2)) * 1
If chk >= 11 And chk <= 19 Then
vl = chk: pp = "end": GoSub s4var
Else
vl = ad(1) * 10: GoSub s4var
vl = ad(2) * 1: pp = "end": GoSub s4var
End If
End If
End If
|
| |
|
| |
|
|
|
| да можно! :) я не хотелъ
пока рассматриваю просто идею :) вроде работоспособная :)
доделать бы ;)
табличку создай - всё поймёшь ;) | |
|
| |
HiProg.com - Технологии программирования
|