|
Страници по тази тема: 1 | 2 | (покажи всички)
Тема
|
Izpisvane na number
|
|
Автор |
VBDEV (непознат) |
Публикувано | 31.01.05 23:42 |
|
Пичове имате ли да ми услужите с някакъв модул за изписване на числата като текст, примерно като се въведе 123,60лв да го изпише като стодвадесет и три лв. и 60 ст.
Може да е на C , VB или Paskal
Благодарско предварително.
| |
Тема
|
Re: Izpisvane na number
[re: VBDEV]
|
|
Автор |
Щиpлиц (разузнавач) |
Публикувано | 01.02.05 09:11 |
|
Разбира се. Дори мисля, че вече съм го поствал тук. Погледни в темата горе Tips&Tricks.
Ако не можеш да го намериш, след час ще имам време да ти го пусна като модул.
П.П. Сори, няма го там. Сега ще го постна...
...
Файл: modNum2Word.bas
Ползва се: N2W 342.76
(в кода на програмата)
Съдържание:
Option Base 1
Private cResult As String
Private lAnd As Boolean
Function N2W(nNumber As Double) As String
Dim cNumber As String
Dim nGroups As Integer
Dim n As Integer
Dim nDiv As Integer
cResult = ""
nNumber = nNumber * 100
nDiv = nNumber Mod 100
nNumber = nNumber \ 100
lAnd = False
cNumber = Trim(Str(nNumber))
Do Until Len(cNumber) >= 12
cNumber = "0" & cNumber
Loop
nGroups = Int(Len(cNumber) / 3)
For n = 1 To nGroups
Call ProcGroup(Val(Mid(cNumber, n * 3 - 2, 3)), 5 - n)
Next
If nDiv > 0 Then
N2W = LTrim(cResult) + " лв. и " + Str(nDiv) + " ст."
Else
N2W = LTrim(cResult) + " лв."
End If
End Function
Private Sub ProcGroup(nNumber, nGroup)
cGroupS = Array("", " хиляда", " милион", " трилион")
cGroupM = Array("", " хиляди", " милиона", " трилиона")
c3_9 = Array(" три", " четири", " пет", " шест", " седем", " осем", " девет")
c10_19 = Array(" десет", " единаесет", " дванадесет", " тринадесет", " четиринадесет", _
" петнадесет", " шестнадесет", " седемнадесет", " осемнадсесет", " деветнадесет")
c2X_9X = Array(" двадесет", " тридесет", " четиридесет", " петдесет", " шестдесет", _
" седемдесет", " осемдесет", " деветдесет")
c0XX_9XX = Array("", " сто", " двеста", " триста", " четиристотин", " петстотин", _
" шестотин", " седемстотин", " осемстотин", " деветстотин")
Dim n, nleft, nRight1, nRight2, nMid As Integer
Dim lMidNo1 As Boolean
nleft = Int(nNumber / 100)
nRight1 = nNumber Mod 10
nRight2 = nNumber Mod 100
nMid = Int((nNumber Mod 100) / 10)
lMidNo1 = True
If nGroup = 1 And lAnd And nleft > 0 And nRight2 = 0 Then cResult = cResult + " и"
cResult = cResult + c0XX_9XX(nleft + 1)
If (Between(nRight2, 1, 20) Or _
InSet(nRight2, 30, 40, 50, 60, 70, 80, 90)) And (lAnd Or nleft > 0) Then
cResult = cResult + " и"
End If
If nMid > 1 Then
cResult = cResult + c2X_9X(nMid - 1)
If nRight1 > 0 Then cResult = cResult + " и"
ElseIf nMid = 1 Then
lMidNo1 = False
cResult = cResult + c10_19(nRight2 - 9)
End If
If Between(nRight1, 3, 9) And lMidNo1 Then cResult = cResult + c3_9(nRight1 - 2)
If nRight1 = 1 And lMidNo1 Then
If nGroup <> 2 Or nNumber > 1 Then cResult = cResult + " един"
End If
If nRight1 = 2 And lMidNo1 Then cResult = cResult + Iif(nGroup = 2, " две", " два")
If nGroup > 1 And nNumber > 0 Then
lAnd = True
cResult = cResult + Iif(nNumber > 1, cGroupM(nGroup), cGroupS(nGroup))
End If
End Sub
Private Function Between(xValue, xLo, xUp) As Boolean
If xValue >= xLo And xValue <= xUp Then
Between = True
Else
Between = False
End If
End Function
Private Function InSet(xValue, ParamArray xArray())
Dim n
For n = LBound(xArray) To UBound(xArray)
If xValue = xArray(n) Then
InSet = True
Exit For
End If
Next
End Function
Щирлиц<P ID="edit"><FONT class="small"><EM>Редактирано от Щиpлиц на 01.02.05 09:17.</EM></FONT></P>Редактирано от Щиpлиц на 01.02.05 09:19.
| |
Тема
|
Re: Izpisvane na number
[re: Щиpлиц]
|
|
Автор | niki (Нерегистриран) |
Публикувано | 01.02.05 19:10 |
|
zdrasti
nowobranec sym w access-a, no imam i az edna forma w koqto trqbwa da ima slowom cifrite. Bi li obqsnil kyde da paste-na tozi kod koito si pusnal?
| |
Тема
|
Re: Izpisvane na number
[re: niki]
|
|
Автор |
Щиpлиц (разузнавач) |
Публикувано | 01.02.05 20:45 |
|
Ако ти трябва за Access, ще трябва да се допише още една функция от 5 реда.
Кода се копира като текст, и се записва в .BAS файл, който добавяш към проекта. Във VBA под Excel или Access можеш да си отвориш нов модул (или ако имаш някакъв общ модул), в който да наринеш този код. Работи.
Щирлиц
| |
Тема
|
На полето,
[re: niki]
|
|
Автор |
Smile (мълчалива) |
Публикувано | 02.02.05 10:14 |
|
в което пишеш цифрата натискаш properties и си избираш условие on enter, on change.... и като кликнеш срещу него ти се появява малко меню, от което избираш event procedure - отваря се editor и там пляскаш тази процедура. Преди това текстовто поле трябва да си го създал във формата (ако е примерно с име slovom), адреса на полето е me!slovom, и в него трябва да сложиш резултата от процедурата т.е. да напишеш me!slovom=едикаквоси.
| |
Тема
|
Re: На полето,
[re: Smile]
|
|
Автор | Niki (Нерегистриран) |
Публикувано | 02.02.05 19:33 |
|
Smile, опитах да вкарам в процедурата поствана от Щирлиц и описана от теб, но нещо не става. Може ли да ти пратя на emaila базата ми да я погледнеш и ако можеш да направиш словом някоя от цифрите? Архива е около 200 КВ?
| |
Тема
|
Давай
[re: Niki]
|
|
Автор |
Smile (мълчалива) |
Публикувано | 03.02.05 09:22 |
|
smilem@abv.bg
И пиши subject щото като нищо ще те резна.
Редактирано от Smile на 03.02.05 11:32.
| |
Тема
|
Re: Izpisvane na number
[re: Щиpлиц]
|
|
Автор |
DDeli (Maya - 25.11.02) |
Публикувано | 06.02.05 16:32 |
|
А пък на мен ми трябва да изписва сложом на ангийски (в инвойсите). Някой да има идея?![](http://i.dirbg.com/clubs/icons/tongue.gif) ![](http://i.dirbg.com/clubs/icons/tongue.gif) ![](http://i.dirbg.com/clubs/icons/tongue.gif)
| |
Тема
|
Ама тая функция на Щирлиц нещо не работи!
[re: Щиpлиц]
|
|
Автор | USER (Нерегистриран) |
Публикувано | 06.02.05 22:44 |
|
Пуснах я тая функция аз и като и подам параметър 12 тя ми връща
сто сто сто сто тринадесет лв. :))
| |
Тема
|
Re: Ама тая функция на Щирлиц нещо не работи!
[re: USER]
|
|
Автор |
Щиpлиц (разузнавач) |
Публикувано | 07.02.05 11:07 |
|
А тези редове има ли ги там:
Option Base 1
Private cResult As String
Private lAnd As Boolean
?
Без Option Base 1 няма да тръгне нормално. ;о)
Щирлиц
| |
Тема
|
Изпратих ти
[re: Niki]
|
|
Автор |
Smile (мълчалива) |
Публикувано | 07.02.05 13:08 |
|
базата.
Налага се да почерпиш![](http://i.dirbg.com/clubs/icons/tongue.gif)
| |
Тема
|
Re: Ама тая функция на Щирлиц нещо не работи!
[re: Щиpлиц]
|
|
Автор | USER (Нерегистриран) |
Публикувано | 07.02.05 21:00 |
|
Сработи. Обаче ако сложиш примерно 20 милиона дава грешка (препълване)!
| |
Тема
|
Re: Ама тая функция на Щирлиц нещо не работи!
[re: USER]
|
|
Автор |
VBDEV (непознат) |
Публикувано | 07.02.05 21:24 |
|
Всичко си бачка.
Ако на чавек не му утърва този вид на Source
може сам даго пипне тук там и да си го направи както иска.
За без пари толкова, даже е много.
| |
Тема
|
To
[re: USER]
|
|
Автор |
Smile (мълчалива) |
Публикувано | 08.02.05 07:49 |
|
и мама може да ти сдъфква храната и тогава да ти я слага в устичката, но обикновено не го прави![](http://i.dirbg.com/clubs/icons/mad.gif)
| |
Тема
|
Re: Izpisvane na number
[re: Щиpлиц]
|
|
Автор |
SimonP (comment) |
Публикувано | 13.06.05 18:49 |
|
Мда, ама не работи правилно - 101 000 го изписва като сто и един хиляди лева, а на всичкото отгоре над 19 милиона (не, че някой ще го пише във фактура де) не работи - дава овърфлоу... Опитах се да го поправя кода, всичко е ок, но... работи само ако десетичния знак примерно е "." или "," :) Не познавам толкова добре ексела и VBA програмирането, но ако имаше променлива която е = decimal symbol.. :)
Edit: Хаха и с това се преборих :) вече мога да го бройкам какъв е символа и функцията ми работи по-добре от оригинала на Щирлиц :) Ето как
-> Запетайката = Application.International(xlDecimalSeparator)
Хубавото на лошото и лошото на хубавото е, че все някога свършват.Редактирано от SimonP на 13.06.05 20:00.
| |
Тема
|
Ето и моят ревизиран код
[re: SimonP]
|
|
Автор |
SimonP (comment) |
Публикувано | 15.06.05 17:31 |
|
Мда, моят ревизиран код ще почака :) Открих една крешка и вината не е моя, но програмата като цяло изписва словом число с 12 символа, което означава, че трябва да си поиграя да сложа една проверка и ако някой въведе 13 да му изпише "това е космическа сума и аз не знам как се брои до толкова"
Направо ме е срам от мене ;)
Хубавото на лошото и лошото на хубавото е, че все някога свършват.Редактирано от SimonP на 15.06.05 17:36.
| |
Тема
|
Re: Izpisvane na number
[re: VBDEV]
|
|
Автор | Bob (Нерегистриран) |
Публикувано | 15.06.05 18:15 |
|
Пращам ти кода,който използвам много отдавна.Сигурно може да се оптимизира,ама много ме мързи.Я кво хубаво време е навън...само за риба
P.S. Направил съм го само до 999.99лв. Предполагам няма да те затрудни да си го направиш и за повече
Public Function Slowom(number) As String
Dim drob As Single, cqlo As Integer, p_dec As Integer, prow As Integer, Pe1 As Integer
cqlo = Fix(number)
drob = number - cqlo
If drob > 0 Then
drob = drob * 100
prow = 1
If drob > 19 Then
str2 = nad_20(drob, "ñòîòèíêè")
Else
str2 = pod_20(drob, "ñòîòèíêè")
End If
End If
p_dec = Right(cqlo, 2)
If p_dec > 19 Then
str3 = nad_20(p_dec, "ëåâà")
Else
str3 = pod_20(p_dec, "ëåâà")
End If
If cqlo > 99 Then
Pe1 = 1
Select Case Left(cqlo, 1)
Case 1
str4 = "ñòî"
Case 2
str4 = "äâåñòà"
Case 3
str4 = "òðèñòà"
Case 4
str4 = "÷åòèðèñòîòèí"
Case 5
str4 = "ïåòñòîòèí"
Case 6
str4 = "øåñòñòîòèí"
Case 7
str4 = "ñåäåìñòîòèí"
Case 8
str4 = "îñåìñòîòèí"
Case 9
str4 = "äåâåòñòîòèí"
End Select
End If
If Pe1 = 0 Then
If prow = 1 Then
Slowom = str3 & " è " & str2
Else
Slowom = str3
End If
Else
If prow = 1 Then
Slowom = str4 & " è " & str3 & " è " & str2
Else
Slowom = str4 & " è " & str3
End If
End If
End Function
Function nad_20(num, mm) As String
First = Left(num, 1)
Select Case First
Case 2
str_2 = "äâàäåñåò"
Case 3
str_2 = "òðèäåñåò"
Case 4
str_2 = "÷åòèðèäåñåò"
Case 5
str_2 = "ïåòäåñåò"
Case 6
str_2 = "øåñòäåñåò"
Case 7
str_2 = "ñåäåìäåñåò"
Case 8
str_2 = "îñåìäåñåò"
Case 9
str_2 = "äåâåòäåñåò"
End Select
Select Case Right(num, 1)
Case 0
prow = 1
Case 1
If mm = "ëåâà" Then
str_3 = " åäèí"
Else
str_3 = " åäíà"
End If
Case 2
If mm = "ëåâà" Then
str_3 = " äâà"
Else
str_3 = " äâå"
End If
Case 3
str_3 = " òðè"
Case 4
str_3 = " ÷åòèðè"
Case 5
str_3 = " ïåò"
Case 6
str_3 = " øåñò"
Case 7
str_3 = " ñåäåì"
Case 8
str_3 = " îñåì"
Case 9
str_3 = " äåâåò"
End Select
If prow = 1 Then
nad_20 = str_2 & " " & mm
Else
nad_20 = str_2 & " è " & str_3 & " " & mm
End If
End Function
Function pod_20(num, mm)
Dim prom As Integer
prom = num
Select Case prom
Case 1
If mm = "ëåâà" Then
str_1 = " åäèí"
Else
str_1 = " åäíà"
End If
Case 2
If mm = "ëåâà" Then
str_1 = " äâà"
Else
str_1 = " äâe"
End If
Case 3
str_1 = " òðè"
Case 4
str_1 = " ÷åòèðè"
Case 5
str_1 = " ïåò"
Case 6
str_1 = " øåñò"
Case 7
str_1 = " ñåäåì"
Case 8
str_1 = " îñåì"
Case 9
str_1 = " äåâåò"
Case 10
str_1 = " äåñåò"
Case 11
str_1 = " åäèíàäåñåò"
Case 12
str_1 = " äâàíàäåñåò"
Case 13
str_1 = " òðèíàäåñåò"
Case 14
str_1 = " ÷åòèðèíàäåñåò"
Case 15
str_1 = " ïåòíàäåñåò"
Case 16
str_1 = " øåñòíàäåñåò"
Case 17
str_1 = " ñåäåìíàäåñåò"
Case 18
str_1 = " îñåìíàäåñåò"
Case 19
str_1 = " äåâåòíàäåñåò"
End Select
pod_20 = str_1 & " " & mm
End Function
![](http://i.dirbg.com/clubs/icons/smile.gif)
| |
|
Страници по тази тема: 1 | 2 | (покажи всички)
|
|
|