Newsgroup: it.comp.appl.access
Titolo: conversione numeri in testo

>>Inserito da 
http://www.forumsforyou.com/p/it.comp.appl.access/
Scusate il disturbo, ma da qualche giorno sto cercando di risolvere questo problema: ho una query dalla quale emergono i giorni di assenza del personale. Orbene, ora mi serve che unitamente all'indicazione numerica dei giorni (es: 9) appaia scritto "nove" in testo.ho visto una soluzione sul "
sitocomune.com
" ma è molto complessa - comprendendo anche ipotesi connesse alla valuta - mentre a me serve una funzione semplice, dove una volta richiesto il parametro del numero come "integer" mi restituisca la versione testuale in "string".
Confido nella vostra disponibilità.... Grazie a tutti
----------------------------------------
Inviato dal servizio gratuito 
http://www.forumsforyou.com
RSS e notizie associate.Provalo anche tu
Segnala gli abusi ad 
ab...@forumsforyou.com
----------------------------------------

>>Inserito da 
http://www.forumsforyou.com/p/it.comp.appl.access/
Da qualche giorno sto cercando di risolvere questo problema: ho una query dalla quale emergono i giorni di assenza del personale. Orbene, ora mi serve che unitamente all'indicazione numerica dei giorni (es: 9) appaia scritto "nove" in testo.ho visto una soluzione sul "
sitocomune.com
" ma è molto complessa - comprendendo anche ipotesi connesse alla valuta - mentre a me serve una funzione semplice, dove una volta richiesto il parametro del numero come "integer" mi restituisca la versione testuale in "string".


 Confido nella vostra disponibilità.... Grazie a tutti
www.sitocomune.com
 Sezione General
6.63 Convertire numeri in testo (12 => Dodici)
Ciao.
-- 
Sergio MAZZA 

>>Inserito da 
http://www.forumsforyou.com/p/it.comp.appl.access/
Ti ringrazio per la pronta risposta Sergio, ma la soluzione che mi hai proposto l'avevo già vista sul sito e la trovo di difficile applicazione. Per questo motivo, speravo di poter trovare una funzione molto più semplice dove venga richiesto come parametro solo il numero (es.: 9) e restituisca la relativa conversione in testo (es: nove). 
Tieni presente che tutto questo deve essere fatto all'interno di una query.... Grazie


>>Inserito da 
http://www.forumsforyou.com/p/it.comp.appl.access/
Ti ringrazio per la pronta risposta Sergio, ma la soluzione che mi hai proposto l'avevo già vista sul sito e la trovo di difficile applicazione. Per questo motivo, speravo di poter trovare una funzione molto più semplice dove venga richiesto come parametro solo il numero (es.: 9) e restituisca la relativa conversione in testo (es: nove). 
Tieni presente che tutto questo deve essere fatto all'interno di una query.... Grazie
----------------------------------------


 query.... Grazie
Deve essere rimaneggiata ma funziona...
Ciao.
-- 
Sergio MAZZA 

>>Inserito da 
http://www.forumsforyou.com/p/it.comp.appl.access/
ok.. ci provo.. grazie Sergio.. 


 ok.. ci provo.. grazie Sergio..
Inserisci tutto in un modulo e inserisci anche questa funzione:
'---
Function daNumeroAtesto(numero As Integer, Optional testoInLingua As Byte = 
1) As String
Dim sNumberValue As String, sCaseValue As String, numeroInTesto As String
EuroCheque numero, sNumberValue, numeroInTesto, testoInLingua
daNumeroAtesto = numeroInTesto
End Function
'---
Nella query crei un campo calcolato con il richiamo alla funzione:
es.
giornoInTesto: daNumeroAtesto([giorno];1)
Ciao.
-- 
Sergio MAZZA 

>>Inserito da 
http://www.forumsforyou.com/p/it.comp.appl.access/
ti rigrazio Sergio per la soluzione fornita. 
Nel frattempo, comunque, seguendo la tua indicazione, avevo rivisto le funzioni indicate dal "
sitocomune.it
" arrivando ad utilizzarne solo una, depurandola da tutte le cose che non mi servivano (multilingue, eurocheque ecc..)
il risultato è stato questo:
____________________________-
Public Function LongCur2Str(ByVal cValue As Integer) As String
    Const MAXLEN = 12 'DON'T CHANGE!
    Dim StartValue As String, _
        strValue As String, _
        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
            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 **")
 
    ' Controlli iniziali
    ' (gestisce fino a 999.999.999.999)
 
    If cValue > 999999999999# Then
        LongCur2Str = sNumberStrings(43)
        LongCur2Str = 1 'OwerflowError
        Exit Function
    End If
 
    If cValue = 0 Then
        LongCur2Str = sNumberStrings(0)
        LongCur2Str = 0
        Exit Function
    End If
    StartValue = Format(cValue, 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]
 
                strResult = strResult & sNumberStrings(n10 + 18)
                ' ITALIANO: correzione per decine con unita' = 1 o 8;
                ' troncamento dell'ultima vocale delle decine: VentiUno -> VentUno
                If ((n1 > 0) And (n10 <> 1)) Then strResult = strResult & sNumberStrings(n1)
            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
    LongCur2Str = strResult
End Function
Ciao e grazie ancora per la tua disponibilità... 
