Клубове Дир.бг
powered by diri.bg
търси в Клубове diri.bg Разширено търсене

Вход
Име
Парола

Клубове
Dir.bg
Взаимопомощ
Горещи теми
Компютри и Интернет
Контакти
Култура и изкуство
Мнения
Наука
Политика, Свят
Спорт
Техника
Градове
Религия и мистика
Фен клубове
Хоби, Развлечения
Общества
Я, архивите са живи
Клубове Дирене Регистрация Кой е тук Въпроси Списък Купувам / Продавам 11:40 19.06.24 
Компютри и Интернет
   >> Visual Basic
*Кратък преглед

Страници по тази тема: 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



А пък на мен ми трябва да изписва сложом на ангийски (в инвойсите). Някой да има идея?



Тема Ама тая функция на Щирлиц нещо не работи!нови [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



базата.
Налага се да почерпиш



Тема 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



и мама може да ти сдъфква храната и тогава да ти я слага в устичката, но обикновено не го прави



Тема 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, "&#241;&#242;&#238;&#242;&#232;&#237;&#234;&#232;")
Else
str2 = pod_20(drob, "&#241;&#242;&#238;&#242;&#232;&#237;&#234;&#232;")
End If
End If
p_dec = Right(cqlo, 2)
If p_dec > 19 Then
str3 = nad_20(p_dec, "&#235;&#229;&#226;&#224;")
Else
str3 = pod_20(p_dec, "&#235;&#229;&#226;&#224;")
End If
If cqlo > 99 Then
Pe1 = 1
Select Case Left(cqlo, 1)
Case 1
str4 = "&#241;&#242;&#238;"
Case 2
str4 = "&#228;&#226;&#229;&#241;&#242;&#224;"
Case 3
str4 = "&#242;&#240;&#232;&#241;&#242;&#224;"
Case 4
str4 = "&#247;&#229;&#242;&#232;&#240;&#232;&#241;&#242;&#238;&#242;&#232;&#237;"
Case 5
str4 = "&#239;&#229;&#242;&#241;&#242;&#238;&#242;&#232;&#237;"
Case 6
str4 = "&#248;&#229;&#241;&#242;&#241;&#242;&#238;&#242;&#232;&#237;"
Case 7
str4 = "&#241;&#229;&#228;&#229;&#236;&#241;&#242;&#238;&#242;&#232;&#237;"
Case 8
str4 = "&#238;&#241;&#229;&#236;&#241;&#242;&#238;&#242;&#232;&#237;"
Case 9
str4 = "&#228;&#229;&#226;&#229;&#242;&#241;&#242;&#238;&#242;&#232;&#237;"
End Select
End If
If Pe1 = 0 Then
If prow = 1 Then
Slowom = str3 & " &#232; " & str2
Else
Slowom = str3
End If
Else
If prow = 1 Then
Slowom = str4 & " &#232; " & str3 & " &#232; " & str2
Else
Slowom = str4 & " &#232; " & 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 = "&#228;&#226;&#224;&#228;&#229;&#241;&#229;&#242;"
Case 3
str_2 = "&#242;&#240;&#232;&#228;&#229;&#241;&#229;&#242;"
Case 4
str_2 = "&#247;&#229;&#242;&#232;&#240;&#232;&#228;&#229;&#241;&#229;&#242;"
Case 5
str_2 = "&#239;&#229;&#242;&#228;&#229;&#241;&#229;&#242;"
Case 6
str_2 = "&#248;&#229;&#241;&#242;&#228;&#229;&#241;&#229;&#242;"
Case 7
str_2 = "&#241;&#229;&#228;&#229;&#236;&#228;&#229;&#241;&#229;&#242;"
Case 8
str_2 = "&#238;&#241;&#229;&#236;&#228;&#229;&#241;&#229;&#242;"
Case 9
str_2 = "&#228;&#229;&#226;&#229;&#242;&#228;&#229;&#241;&#229;&#242;"

End Select

Select Case Right(num, 1)
Case 0
prow = 1
Case 1
If mm = "&#235;&#229;&#226;&#224;" Then
str_3 = " &#229;&#228;&#232;&#237;"
Else
str_3 = " &#229;&#228;&#237;&#224;"
End If
Case 2
If mm = "&#235;&#229;&#226;&#224;" Then
str_3 = " &#228;&#226;&#224;"
Else
str_3 = " &#228;&#226;&#229;"
End If
Case 3
str_3 = " &#242;&#240;&#232;"
Case 4
str_3 = " &#247;&#229;&#242;&#232;&#240;&#232;"
Case 5
str_3 = " &#239;&#229;&#242;"
Case 6
str_3 = " &#248;&#229;&#241;&#242;"
Case 7
str_3 = " &#241;&#229;&#228;&#229;&#236;"
Case 8
str_3 = " &#238;&#241;&#229;&#236;"
Case 9
str_3 = " &#228;&#229;&#226;&#229;&#242;"
End Select
If prow = 1 Then
nad_20 = str_2 & " " & mm
Else
nad_20 = str_2 & " &#232; " & 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 = "&#235;&#229;&#226;&#224;" Then
str_1 = " &#229;&#228;&#232;&#237;"
Else
str_1 = " &#229;&#228;&#237;&#224;"
End If
Case 2
If mm = "&#235;&#229;&#226;&#224;" Then
str_1 = " &#228;&#226;&#224;"
Else
str_1 = " &#228;&#226;e"
End If
Case 3
str_1 = " &#242;&#240;&#232;"
Case 4
str_1 = " &#247;&#229;&#242;&#232;&#240;&#232;"
Case 5
str_1 = " &#239;&#229;&#242;"
Case 6
str_1 = " &#248;&#229;&#241;&#242;"
Case 7
str_1 = " &#241;&#229;&#228;&#229;&#236;"
Case 8
str_1 = " &#238;&#241;&#229;&#236;"
Case 9
str_1 = " &#228;&#229;&#226;&#229;&#242;"
Case 10
str_1 = " &#228;&#229;&#241;&#229;&#242;"
Case 11
str_1 = " &#229;&#228;&#232;&#237;&#224;&#228;&#229;&#241;&#229;&#242;"
Case 12
str_1 = " &#228;&#226;&#224;&#237;&#224;&#228;&#229;&#241;&#229;&#242;"
Case 13
str_1 = " &#242;&#240;&#232;&#237;&#224;&#228;&#229;&#241;&#229;&#242;"
Case 14
str_1 = " &#247;&#229;&#242;&#232;&#240;&#232;&#237;&#224;&#228;&#229;&#241;&#229;&#242;"
Case 15
str_1 = " &#239;&#229;&#242;&#237;&#224;&#228;&#229;&#241;&#229;&#242;"
Case 16
str_1 = " &#248;&#229;&#241;&#242;&#237;&#224;&#228;&#229;&#241;&#229;&#242;"
Case 17
str_1 = " &#241;&#229;&#228;&#229;&#236;&#237;&#224;&#228;&#229;&#241;&#229;&#242;"
Case 18
str_1 = " &#238;&#241;&#229;&#236;&#237;&#224;&#228;&#229;&#241;&#229;&#242;"
Case 19
str_1 = " &#228;&#229;&#226;&#229;&#242;&#237;&#224;&#228;&#229;&#241;&#229;&#242;"
End Select
pod_20 = str_1 & " " & mm


End Function





Страници по тази тема: 1 | 2 | (покажи всички)
*Кратък преглед
Клуб :  


Clubs.dir.bg е форум за дискусии. Dir.bg не носи отговорност за съдържанието и достоверността на публикуваните в дискусиите материали.

Никаква част от съдържанието на тази страница не може да бъде репродуцирана, записвана или предавана под каквато и да е форма или по какъвто и да е повод без писменото съгласие на Dir.bg
За Забележки, коментари и предложения ползвайте формата за Обратна връзка | Мобилна версия | Потребителско споразумение
© 2006-2024 Dir.bg Всички права запазени.