Newsgroup: it.comp.lang.visual-basic
Titolo: da 1500 a millecinquecento

--
la butto li'...
tanto male non fà..
da access come posso trasformare una casella numerica es 1.500 nella
relativa scritta ?
potete postare il codice da inserire in evento ?
ho gia postato nl sito accesss e mi hanno postato un MDB bestiale!
troppo complicato per me
scusate spero di essere stato chiaro non conosco bene vb
grazie molte
Sent via Deja.com 
http://www.deja.com/
Before you buy.



 scusate spero di essere stato chiaro non conosco bene vb
Se non ricordo male dovresti trovarlo sul Sito comune di questo ng:
 
http://www.murialdo.it/it_lang_vb
e tempo fa l'ho visto anche sul sito italiano microsoft di office. Se hai
problemi rifatti vivo.
--
Ciao.
Maurizio
--------
?SPQR(C)
 X
--------

 wrote in message
8tmaq3$fig$1...@nnrp1.deja.com...



//
'///////////////////////////////////////////////////////////////////////////////
Option Explicit
' Language constants.
Public Const langItalian = 1
Public Const langEnglish = 2
Public Const langFrench = 3
Public Const langGerman = 4
Function Cur2Str(ByVal StartValue As Variant, ByVal Language As Byte)
As String
    Const MAXLEN = 12 'DON'T CHANGE!
    Dim strValue As String
    Dim strResult As String
    Dim n100 As Integer ' x00
    Dim n10 As Integer  ' 0x0
    Dim n1 As Integer   ' 00x
    Dim i As Integer ' Counter in For..Next loop.
    Dim sNumberStrings As Variant
    Select Case Language
        Case langItalian
            sNumberStrings = Array _
            ("Zero", "Uno", "Due", "Tre", "Quattro", "Cinque", "Sei",
"Sette", "Otto", "Nove", _
            "Dieci", "Undici", "Dodici", "Tredici", "Quattordici",
"Quindici", "Sedici", "Diciassette", "Diciotto", "Diciannove", _
            "Venti", "Trenta", "Quaranta", "Cinquanta", "Sessanta",
"Settanta", "Ottanta", "Novanta", _
            "Cento", "Duecento", "Trecento", "Quattrocento",
"Cinquecento", "Seicento", "Settecento", "Ottocento", "Novecento", _
            "Mille", "Mila", "UnMilione", "Milioni", "UnMiliardo",
"Miliardi", "** Valore non calcolabile **")
        Case langEnglish
            sNumberStrings = Array _
            ("Zero", "One", "Two", "Three", "Four", "Five", "Six",
"Seven", "Eight", "Nine", _
            "Ten", "Eleven", "Twelve", "Thirteen", "Fourteen",
"Fifteen", "Sixteen", "Seventeen", "Eighteen", "Nineteen", _
            "Twenty", "Thirty", "Forty", "Fifty", "Sixty", "Seventy",
"Eighty", "Ninety", _
            "Onehundred", "Twohundred", "Threehundred", "Fourhundred",
"Fivehundred", "Sixhundred", "Sevenhundred", "Eighthundred",
"Ninehundred", _
            "Onethousand", "Thousand", "OneMillion", "Millions",
"OneBillion", "Billions", "** Value not calculable **")
        Case langFrench
            sNumberStrings = Array _
            ("Zero", "Un", "Deux", "Trois", "Quatre", "Cinq", "Six",
"Sept", "Huit", "Neuf", _
            "Dix", "Onze", "Douze", "Treize", "Quatorze", "Quinze",
"Seize", "Dixsept", "Dixhuit", "Dixneuf", _
            "Vingt", "Trente", "Quarante", "Cinquante", "Soixante",
"Soixantedix", "Quatrevingts", "Quatrevingtdix", _
            "Cent", "Deuxcents", "Troiscents", "Quatrecents",
"Cinqcents", "Sixcents", "Septcents", "Huitcents", "Neufcents", _
            "Mille", "Mille", "UnMillion", "Million", "UnMilliard",
"Milliard", "** Valeur pas calculable **")
        Case langGerman
            sNumberStrings = Array _
            ("Null", "Ein", "Zwei", "Drei", "Vier", "Fünf", "Sechs",
"Sieben", "Acht", "Neun", _
            "Zehn", "Elf", "Zwölf", "Dreizehn", "Vierzehn",
"Fünfzehn", "Sechzehn", "Siebzehn", "Achtzehn", "Neunzehn", _
            "Zwanzig", "Dreißig", "Vierzig", "Fünfzig", "Sechzig",
"Siebzig", "Achtzig", "Neunzig", _
            "Hundert", "Zweihundert", "Dreihundert", "Vierhundert",
"Fünfhundert", "Sechshundert", "Siebenhundert", "Achthundert",
"Neunhundert", _
            "Tausend", "Tausend", "EineMillion", "Millionen",
"EineMilliarde", "Milliarden", "** Unberechenbarer Wert **")
    End Select
 
    ' Controlli iniziali
    ' (gestisce fino a 999.999.999.999)
    If ((Len(StartValue) > MAXLEN) Or Not IsNumeric(StartValue)) Then
        Cur2Str = sNumberStrings(43)
        Exit Function
    End If
    If (Val(StartValue) = 0) Then
        Cur2Str = sNumberStrings(0)
        Exit Function
    End If
    StartValue = Format(StartValue, String(MAXLEN, "0"))
    strResult = ""
    ' Inizio conversione
    For i = 1 To (MAXLEN \ 3)
        strValue = Mid$(StartValue, i * 3 - 2, 3)
        n100 = Val(Mid$(strValue, 1, 1))
        n10 = Val(Mid$(strValue, 2, 1))
        n1 = Val(Mid$(strValue, 3, 1))
 
        ' ----- Centinaia
        If (n100 > 0) Then strResult = strResult & sNumberStrings(n100
+ 27)
        ' ----- Decine e Unita'
        ' Tratta in modo differente i numeri [1..9], [10..19],
[20..99].
        If (n10 = 0) Then '[1..9]
            If (n1 > 0) Then strResult = strResult &
sNumberStrings(n1)
        ElseIf (n10 = 1) Then '[10..19]
            strResult = strResult & sNumberStrings(10 + n1)
        Else 'If (n10 > 1) Then '[20..99]
            If ((Language = langGerman) And (n1 <> 0)) Then
                ' TEDESCO: un numero compreso tra 21 e 99 non
terminante con
                ' 0, si scrive prima il numero che indica le unità,
poi "und" ("e" in
                ' tedesco) e poi il numero che indica le decine, tutto
attaccato
                strResult = strResult & sNumberStrings(n1) & "Und" &
sNumberStrings(n10 + 18)
            Else
                strResult = strResult & sNumberStrings(n10 + 18)
                ' ITALIANO: correzione per decine con unita' = 1 o 8;
                ' troncamento dell'ultima vocale delle decine:
VentiUno -> VentUno
                If (Language = langItalian) Then
                    If ((n1 = 1) Or (n1 = 8)) Then strResult =
Left(strResult, Len(strResult) - 1)
                End If
                ' ----- Unita' (solo se le decine<>10)
                If ((n1 > 0) And (n10 <> 1)) Then strResult =
strResult & sNumberStrings(n1)
            End If
        End If
        ' Ultimi aggiustamenti
        ' Aggiunge Miliardi, Milioni e Mila (oppure 1Miliardo,
1Milione, Mille).
        If (i < 4) Then
            If (strValue = "001") Then ' 1000
                strResult = Left(strResult, Len(strResult) -
Len(sNumberStrings(1)))
                strResult = strResult & sNumberStrings(44 - (i * 2) -
1)
            ElseIf (strValue <> "000") Then ' x000
                strResult = strResult & sNumberStrings(44 - (i * 2))
            End If
        End If
    Next
    ' TEDESCO: se l'ultima cifra e' 1, si scrive Eins, non Ein.
    If (Language = langGerman) Then
        If (Right(strResult, 3) = sNumberStrings(1)) Then strResult =
strResult & "s"
    End If
    Cur2Str = strResult
End Function

 wrote in message
8tp405$tdr$1...@lacerta.tiscalinet.it...

non so se è adatta alle tue necessità(access!)
prova questa function
il numero in ingresso è in X (max 999999999)
la stringa in uscita è in ST
in origine l'avevo scritta in assembler per Amiga e
poi l'ho tradotta in vb6 senza nessuna ottimizzazione
penso che sia possibile scrivere un codice più compatto di questo.
Se trovi qualche errore segnalalo tramite email.
ciao e buon lavoro.
Dim A(5), B(9), C(9), D(9), E(9), ST, X
Function conv()
A(1) = "cento"
A(2) = "0"
A(3) = "mila"
A(4) = "milioni"
A(5) = "lire"
E(1) = "mille"
E(2) = "unmilione"
B(1) = "uno"
B(2) = "due"
B(3) = "tre"
B(4) = "quattro"
B(5) = "cinque"
B(6) = "sei"
B(7) = "sette"
B(8) = "otto"
B(9) = "nove"
C(1) = "dieci"
C(2) = "venti"
C(3) = "trenta"
C(4) = "quaranta"
C(5) = "cinquanta"
C(6) = "sessanta"
C(7) = "settanta"
C(8) = "ottanta"
C(9) = "novanta"
D(1) = "undici"
D(2) = "dodici"
D(3) = "tredici"
D(4) = "quattordici"
D(5) = "quindici"
D(6) = "sedici"
D(7) = "diciassette"
D(8) = "diciotto"
D(9) = "diciannove"
L = Len(X)
T = 9 - L
q = "000000000"
X = Mid(q, 1, T) & X
F = 0
ST = ""
On L GoTo p1, p2, p3, p4, p5, p6, p7, p8, p9
p9: y = Val(Mid(X, 1, 1))
If y > 0 Then
If y = 1 Then
ST = ST + A(y)
Else
ST = ST & B(y) & A(1)
End If
End If
p8: y = Val(Mid(X, 2, 1))
If y > 0 Then
    If y = 1 Then
    F = 1
    Y1 = Val(Mid(X, 3, 1))
        If Y1 = 0 Then
        ST = ST & C(Y1 + 1)
        Else
        ST = ST & D(Y1)
        End If
    Else
    ST = ST & C(y)
    End If
End If
p7: If F = 0 Then
y = Val(Mid(X, 3, 1))
If y = 1 Then
l1 = Len(ST)
ST = Mid(ST, 1, l1 - 1)
ST = ST & Mid(B(y), 1, 2) & A(4)
If Len(X) = 7 Then
ST = ST & E(2)
End If
Else
ST = ST & B(y) & A(4)
End If
End If
p6: y = Val(Mid(X, 4, 1))
If y > 0 Then
    If y = 1 Then
    ST = ST & A(y)
    Else
    ST = ST & B(y) & A(1)
    End If
End If
p5: y = Val(Mid(X, 5, 1))
F = 0
If y > 0 Then
    If y = 1 Then
    Y1 = Val(Mid(X, 6, 1))
    F = 1
    If Y1 = 0 Then
        ST = ST & C(Y1 + 1) & A(3)
        Else
        ST = ST & D(Y1) & A(3)
        End If
    Else
    ST = ST & C(y)
    End If
End If
p4: y = Val(Mid(X, 6, 1))
If F = 0 Then
If X > 0 Then
If y = 1 Then
ST = Mid(ST, 1, Len(ST) - 1) & B(y) & A(3)
Else
ST = ST & B(y) & A(3)
End If
End If
End If
p3: y = Val(Mid(X, 7, 1))
If y > 0 Then
If y = 1 Then
ST = ST & A(y)
Else
ST = ST & B(y) & A(1)
End If
End If
p2: y = Val(Mid(X, 8, 1))
F = 0
If y > 0 Then
    If y = 1 Then
    Y1 = Val(Mid(X, 9, 1))
    F = 1
    If Y1 = 0 Then
        ST = ST & C(Y1 + 1) & A(5)
        Else
        ST = ST & D(Y1) & A(5)
        End If
    Else
    ST = ST & C(y)
    End If
End If
p1: y = Val(Mid(X, 9, 1))
If F = 0 Then
If y > 0 Then
If y = 1 Then
ST = Mid(ST, 1, Len(ST) - 1)
End If
ST = ST & B(y) & A(5)
Else
ST = ST & A(5)
End If
End If
End Function
ma...@intercom.it

--
la butto li'...
tanto male non fŕ..
x ronny
veramente serviva per mia sorella , io Visual Basic c c++ java visualrpg
access ecc. ecc. li ho solo guardati da lontano e mai avuto il tempo di
approfondire purtroppo!!
per ringraziarti della risposta:
č meglio non postare e lasciar credere agli altri di esserre stupidi,
che postare e togliere ogni dubbio...
la versione opriginale č:
e meglio tacere e lasciare che gli altri ci credano stupidi che aprir
bocca e togliere ogni dubbio..
ciao ci risentiamo in it.comp.as400
