Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Dobra funkcija ali nece da radi

[es] :: Access :: Dobra funkcija ali nece da radi

[ Pregleda: 4411 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Mauzer
Beograd

Član broj: 17183
Poruke: 23
*.ptt.yu



Profil

icon Dobra funkcija ali nece da radi08.07.2004. u 20:39 - pre 247 meseci
Nasao sam na netu modul za konvertovanje brojeva u reci koji je neophodan za izvestaj tipa fakture ali nece da radi.Izbacuje mi gresku #Name?.Probao sam sve i svasta ali nece pa nece,a u excelu radi besprekorno. Evo code pa ako neko zna u cemu je problem neka pomogne
Code:
Function slovima(broj)

If broj = 0 Then rez = "nula"

ReDim imebr(9)
imebr(1) = "jedan"
imebr(2) = "dva"
imebr(3) = "tri"
imebr(4) = "cetiri"
imebr(5) = "pet"
imebr(6) = "sest"
imebr(7) = "sedam"
imebr(8) = "osam"
imebr(9) = "devet"

rez = ""
celi = Int(broj)
dec = ((broj - celi) * 100) Mod 100
cbr = Str(celi)
duzina = 16 - Len(cbr)
cbroj = String(duzina, "0") & Right(cbr, Len(cbr) - 1)

i = 1

Do While i < 15
 tric = Mid(cbroj, i, 3)
 trojka = Val(tric)
 If tric <> "000" Then
  cs = Val(Mid(tric, 1, 1))
  cd = Val(Mid(tric, 2, 1))
  cj = Val(Mid(tric, 3, 1))
  Select Case cs
   Case 2
    rez = rez & "dve"
   Case Is > 2
    rez = rez & imebr(cs)
  End Select

  Select Case cs
   Case 1
    rez = rez & "stotinu"
   Case 2, 3, 4
    rez = rez & "stotine"
   Case Is > 4
    rez = rez & "stotina"
  End Select

  If cj = 0 Then sl1 = "" Else sl1 = imebr(cj)

  Select Case cd
   Case 4
    rez = rez & "cetr"
   Case 6
    rez = rez & "sez"
   Case 5
    rez = rez & "pe"
   Case 9
    rez = rez & "deve"
   Case 2, 3, 7, 8
    rez = rez & imebr(cd)
   Case 1
    sl1 = ""
    Select Case cj
     Case 0
      rez = rez & "deset"
     Case 1
      rez = rez & "jeda"
     Case 4
      rez = rez & "cetr"
     Case Else
      rez = rez & imebr(cj)
    End Select
   If cj > 0 Then rez = rez & "naest"
  End Select

  If cd > 1 Then rez = rez & "deset"

  If (i = 4 Or i = 10) And cd <> 1 Then
   If cj = 1 Then
    sl1 = "jedna"
   ElseIf cj = 2 Then
    sl1 = "dve"
   End If
  End If

  rez = rez & sl1

  Select Case i

   Case 1
    rez = rez & "bilion"
    If cj > 1 Or cd = 1 Then rez = rez & "a"

   Case 4
    rez = rez & "milijard"
    If ((trojka Mod 100) > 11 And (trojka Mod 100) < 19) Then
     rez = rez & "i"
    ElseIf cj = 1 Then
     rez = rez & "a"
    ElseIf cj > 4 Or cj = 0 Then
     rez = rez & "i"
    ElseIf cj > 1 Then
     rez = rez & "e"
    End If

   Case 7
    rez = rez & "milion"
    If ((trojka Mod 100) > 11 And (trojka Mod 100) < 19) Or cj <> 1 Then
     rez = rez & "a"
    End If

   Case 10
    rez = rez & "hiljad"
    If ((trojka Mod 100) > 11 And (trojka Mod 100) < 19) Or cj = 1 Then
     rez = rez & "a"
    ElseIf trojka = 1 Then
     rez = rez & "u"
    ElseIf cj > 4 Or cj = 0 Then
     rez = rez & "a"
    ElseIf cj > 1 Then
     rez = rez & "e"
    End If

  End Select
 End If
 i = i + 3
Loop

slovima = rez & Str(dec) & "/100"

End Function
 
Odgovor na temu

Daks
Tu Tamo

Član broj: 2310
Poruke: 88
*.as54.bi.bih.net.ba.



Profil

icon Re: Dobra funkcija ali nece da radi08.07.2004. u 22:50 - pre 247 meseci
Kod mene funkcija radi (vec je koristim duže vrijeme). Mozda je ne pozivaš dobro.

Probaj slijedeće:

Otvori novi modul "modSlovima" i kopiraj funkciju tamo.
Na formi kreiraj dva text box-a. Prvom daj ime Broj i postavi mu default value na 0.
Drugom dodijeli funciju u Control Source: =Slovima([Broj]).

Pozdrav
 
Odgovor na temu

Mauzer
Beograd

Član broj: 17183
Poruke: 23
*.ptt.yu



Profil

icon Re: Dobra funkcija ali nece da radi09.07.2004. u 01:14 - pre 247 meseci
Proradila

Hvala puno !

Pozdrav.
 
Odgovor na temu

Daks
Tu Tamo

Član broj: 2310
Poruke: 88
*.as54.bi.bih.net.ba.



Profil

icon Re: Dobra funkcija ali nece da radi09.07.2004. u 10:40 - pre 247 meseci

Mislim da nebi bilo lose prebaciti je u Access Bazu Znanja!!!
 
Odgovor na temu

Zidar
Canada

Moderator
Član broj: 15387
Poruke: 3085
*.eqao.com



+79 Profil

icon Re: Dobra funkcija ali nece da radi09.07.2004. u 13:34 - pre 247 meseci
Prebaceno u Bazu Znanja

:-)
 
Odgovor na temu

Mauzer
Beograd

Član broj: 17183
Poruke: 23
*.ptt.yu



Profil

icon Re: Dobra funkcija ali nece da radi11.07.2004. u 11:29 - pre 247 meseci
Evo funkcije i za engleski:
Code:

Function English (ByVal N As Currency) As String
    Const Thousand = 1000@
    Const Million = Thousand * Thousand
    Const Billion = Thousand * Million
    Const Trillion = Thousand * Billion

    If (N = 0@) Then English = "zero": Exit Function

    Dim Buf As String: If (N < 0@) Then Buf = "negative " Else Buf = ""
    Dim Frac As Currency: Frac = Abs(N - Fix(N))
    If (N < 0@ Or Frac <> 0@) Then N = Abs(Fix(N))
    Dim AtLeastOne As Integer: AtLeastOne = N >= 1

    If (N >= Trillion) Then
        Debug.Print N
        Buf = Buf & EnglishDigitGroup(Int(N / Trillion)) & " trillion"
        N = N - Int(N / Trillion) * Trillion ' Mod overflows
        If (N >= 1@) Then Buf = Buf & " "
    End If
    
    If (N >= Billion) Then
        Debug.Print N
        Buf = Buf & EnglishDigitGroup(Int(N / Billion)) & " billion"
        N = N - Int(N / Billion) * Billion ' Mod still overflows
        If (N >= 1@) Then Buf = Buf & " "
    End If

    If (N >= Million) Then
        Debug.Print N
        Buf = Buf & EnglishDigitGroup(N \ Million) & " million"
        N = N Mod Million
        If (N >= 1@) Then Buf = Buf & " "
    End If

    If (N >= Thousand) Then
        Debug.Print N
        Buf = Buf & EnglishDigitGroup(N \ Thousand) & " thousand"
        N = N Mod Thousand
        If (N >= 1@) Then Buf = Buf & " "
    End If

    If (N >= 1@) Then
        Debug.Print N
        Buf = Buf & EnglishDigitGroup(N)
    End If

    If (Frac = 0@) Then
        Buf = Buf & " exactly"
    ElseIf (Int(Frac * 100@) = Frac * 100@) Then
        If AtLeastOne Then Buf = Buf & " and "
        Buf = Buf & Format$(Frac * 100@, "00") & "/100"
    Else
        If AtLeastOne Then Buf = Buf & " and "
        Buf = Buf & Format$(Frac * 10000@, "0000") & "/10000"
    End If

    English = Buf
End Function

' Support function to be used only by English()
Private Function EnglishDigitGroup (ByVal N As Integer) As String
    Const Hundred = " hundred"
    Const One = "one"
    Const Two = "two"
    Const Three = "three"
    Const Four = "four"
    Const Five = "five"
    Const Six = "six"
    Const Seven = "seven"
    Const Eight = "eight"
    Const Nine = "nine"
    Dim Buf As String: Buf = ""
    Dim Flag As Integer: Flag = False

    'Do hundreds
    Select Case (N \ 100)
    Case 0: Buf = "":  Flag = False
    Case 1: Buf = One & Hundred: Flag = True
    Case 2: Buf = Two & Hundred: Flag = True
    Case 3: Buf = Three & Hundred: Flag = True
    Case 4: Buf = Four & Hundred: Flag = True
    Case 5: Buf = Five & Hundred: Flag = True
    Case 6: Buf = Six & Hundred: Flag = True
    Case 7: Buf = Seven & Hundred: Flag = True
    Case 8: Buf = Eight & Hundred: Flag = True
    Case 9: Buf = Nine & Hundred: Flag = True
    End Select
   
    If (Flag <> False) Then N = N Mod 100
    If (N > 0) Then
        If (Flag <> False) Then Buf = Buf & " "
    Else
        EnglishDigitGroup = Buf
        Exit Function
    End If
      
    'Do tens (except teens)
    Select Case (N \ 10)
    Case 0, 1: Flag = False
    Case 2: Buf = Buf & "twenty": Flag = True
    Case 3: Buf = Buf & "thirty": Flag = True
    Case 4: Buf = Buf & "forty": Flag = True
    Case 5: Buf = Buf & "fifty": Flag = True
    Case 6: Buf = Buf & "sixty": Flag = True
    Case 7: Buf = Buf & "seventy": Flag = True
    Case 8: Buf = Buf & "eighty": Flag = True
    Case 9: Buf = Buf & "ninety": Flag = True
    End Select
   
    If (Flag <> False) Then N = N Mod 10
    If (N > 0) Then
        If (Flag <> False) Then Buf = Buf & "-"
    Else
        EnglishDigitGroup = Buf
        Exit Function
    End If
    
    'Do ones and teens
    Select Case (N)
    Case 0: ' do nothing
    Case 1: Buf = Buf & One
    Case 2: Buf = Buf & Two
    Case 3: Buf = Buf & Three
    Case 4: Buf = Buf & Four
    Case 5: Buf = Buf & Five
    Case 6: Buf = Buf & Six
    Case 7: Buf = Buf & Seven
    Case 8: Buf = Buf & Eight
    Case 9: Buf = Buf & Nine
    Case 10: Buf = Buf & "ten"
    Case 11: Buf = Buf & "eleven"
    Case 12: Buf = Buf & "twelve"
    Case 13: Buf = Buf & "thirteen"
    Case 14: Buf = Buf & "fourteen"
    Case 15: Buf = Buf & "fifteen"
    Case 16: Buf = Buf & "sixteen"
    Case 17: Buf = Buf & "seventeen"
    Case 18: Buf = Buf & "eighteen"
    Case 19: Buf = Buf & "nineteen"
    End Select

    EnglishDigitGroup = Buf
End Function



Pozdrav
 
Odgovor na temu

Daks
Tu Tamo

Član broj: 2310
Poruke: 88
*.as54.bi.bih.net.ba.



Profil

icon Re: Dobra funkcija ali nece da radi11.07.2004. u 22:16 - pre 247 meseci
Jos da nam je napraviti funkciju koja bi umjesto da ispise broj slovima izgovarala isti.

Vjerovatno je veoma komplikovano.

Ima li ko ideju kako to uraditi? :)

 
Odgovor na temu

Daks
Tu Tamo

Član broj: 2310
Poruke: 88
*.as54.bi.bih.net.ba.



Profil

icon Re: Dobra funkcija ali nece da radi13.07.2004. u 11:05 - pre 247 meseci

Zar niko nema ideju?
 
Odgovor na temu

Zidar
Canada

Moderator
Član broj: 15387
Poruke: 3085
*.eqao.com



+79 Profil

icon Re: Dobra funkcija ali nece da radi13.07.2004. u 13:27 - pre 247 meseci
Snimi svaku rec koja ti treba kao zvucni fajl (WAW?) i onda u bazi znanja vidi kako se pozivaju zvucni fajlovi pa pozivaj kako ti koji treba.

:-)
 
Odgovor na temu

[es] :: Access :: Dobra funkcija ali nece da radi

[ Pregleda: 4411 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.