Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: Harsefeld am April 02, 2015, 09:49:47

Titel: Zahl zu Wort nach Word
Beitrag von: Harsefeld am April 02, 2015, 09:49:47
Hallo,

ich hab ein kleines Problem.

Ich möchte eine Zahl aus Access in ein Wordformular übertragen. Diese Zahl muss aber als Text wiederholt werden .. also 20 = Zwanzig .. 133 = Einhunderdreiunddreißig.

Bislang habe ich das Ganze über einen Bericht ausgegeben, aber ich möchte es umstellen, da der Bericht häufiger auf Änderungenangepasst werden muss und dies in Word leichter geht. Bisher hatte ich hierfür eine Funktion eingerichtet .. diese funktioniert aber nicht bei der Übergabe zu Word.

Function ZahlzuText(Number)
Number = Abs(Fix(Number)) 'Vergesse Nachkommastellen
If Number = 0 Then ZahlzuText = "Null": Exit Function
Dim Chr(12) As String, Block As Integer, z As Integer, hz As Integer, ze As Integer, zz As Integer, EZ As Integer
Dim ztext As String, t As String, Bst1 As String, Wortrest As String, WLänge As Variant

Chr(0) = "": Chr(1) = "ein": Chr(2) = "zwei": Chr(3) = "drei"
Chr(4) = "vier": Chr(5) = "fünf": Chr(6) = "sechs": Chr(7) = "sieben"
Chr(8) = "acht": Chr(9) = "neun": Chr(10) = "zehn": Chr(11) = "elf"
Chr(12) = "zwölf"
For Block = 3 To 1 Step -1 'Millionen,Tausender,Hunderter-Block
    'extrahiere Hunderter-Blöcke in z:
    z = (Number Mod (10 ^ (Block * 3))) \ 10 ^ ((Block - 1) * 3)
    If z > 0 Then 'Blockwert >0
        'bestimme HunderterZiffer in HZ, ZehnerZiffer in ZZ
        'ZehnerundEinerZahl in ZE und die EinerZiffer in EZ:
        hz = z \ 100: ze = z Mod 100: zz = ze \ 10: EZ = z Mod 10
        ztext$ = "" 'der Zahltext für einen Hunderter-Block
        If hz > 0 Then 'Es gibt Hunderter
            ztext$ = Chr(hz) & "hundert"
            If ze > 0 And ze < 10 Then ztext$ = ztext$ & "und" 'z.B 303
        End If
        'die Hunderter sind gesetzt. Setzte nun Zehner und Einer:
        If ze > 0 Then 'Falls es überhaupt Zehner/Einer gibt
            If ze < 13 Then    'Zehner/Einer<13
                If Block = 1 And Number > 999 And z < 10 Then 'Hunderter-Block
                    ztext$ = ztext$ & "und" 'xxx.00v zu "und" v
                End If
                ztext$ = ztext$ & Chr(ze)
            Else   'Zehner/Einer = 13-99
                If EZ > 0 Then    'zunächst die Einer
                    If EZ = 7 And zz = 1 Then
                        ztext$ = ztext$ & "sieb" 'Siebzehn statt siebenzehn
                    Else
                        ztext$ = ztext$ & Chr(EZ)
                    End If
                    If zz > 1 Then ztext$ = ztext$ & "und" 'z.B. drei "und" zwanzig
                End If
                If zz = 1 Then
                    ztext$ = ztext$ + "zehn"
                ElseIf zz = 2 Then
                    ztext$ = ztext$ + "zwanzig"
                ElseIf zz = 3 Then
                    ztext$ = ztext$ + "dreißig"
                ElseIf zz = 6 Then
                    ztext$ = ztext$ + "sechzig"
                ElseIf zz = 7 Then
                    ztext$ = ztext$ + "siebzig"
                Else
                    ztext$ = ztext$ & Chr(zz) & "zig"
                End If
               
            End If
        End If
        t$ = ""
        If Block = 3 Then
            t$ = "Millionen"
            If Right(ztext$, 3) = "ein" Then ztext$ = ztext$ + "e": t$ = "million"
        ElseIf Block = 2 Then
            If Right(ztext$, 3) = "ein" And z <> 1 Then ztext$ = ztext$ + "s"
            t$ = "tausend"
        ElseIf Block = 1 Then
            If Right(ztext$, 3) = "ein" Then ztext$ = ztext$ + "s"
        End If
        ZahlzuText = ZahlzuText & ztext$ & t$
        Bst1 = Left(ZahlzuText, 1)
        Bst1 = UCase(Bst1)
        WLänge = Len(ZahlzuText)
        WLänge = WLänge - 1
        Wortrest = (Right(ZahlzuText, WLänge))
        ZahlzuText = Bst1 + Wortrest
               
    End If
Next
End Function
Titel: Re: Zahl zu Wort nach Word
Beitrag von: Harsefeld am April 02, 2015, 09:59:46
Hallo,

Kommando zurück .. ich hab das Problem gefunden.
Titel: Re: Zahl zu Wort nach Word
Beitrag von: MaggieMay am April 02, 2015, 11:36:31
Hallo,

was auch immer die Lösung deines wie auch immer gearteten Problems sein mag, CHR() ist eine Access-Funktion und sollte nicht für eigene Deklarationen verwendet werden.