+ Rispondi al messaggio
Pagina 1 di 2 12 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15

Conversione cifre di un numero in lettere

  1. #1
    Roby1954 non  in linea Novello
    Buongiorno, grazie innanzitutto per avermi accettato nel forum. Richiesta veloce di aiuto: vorrei tramutare un campo calcolato in una query da valuta in lettere. Mi spiego, risultato per esempio 150,23 dovrebbe
    diventare (ponendo la serie di 10 lettere che parte da A e arriva fino a L) = AEL,BC
    Anni fa un amico programmatore mi aveva fatto un piccolo modulo da applicare negli eventi, ma non
    lo trovo pi, e da solo non ci arrivo (mi sono rimesso a studiare access

    Un grazie di cuore anticipato, saluti

  2. #2
    Quote Originariamente inviato da Roby1954 Visualizza il messaggio
    ... da valuta in lettere. Mi spiego, risultato per esempio 150,23 dovrebbe
    diventare (ponendo la serie di 10 lettere che parte da A e arriva fino a L) = AEL,BC
    Cavoli... farebbe comodo davvero il modulo del tuo amico. Questa trasposizione da numeri a lettere fissa? A sempre uguale a 1, B sempre uguale a 2 e via dicendo, o potrebbe cambiare di volta in volta?

  3. #3
    Roby1954 non  in linea Novello
    No, il modulo ricordo che aveva impostata una parola tedesca di 10 lettere diverse (era usata per scrivere le etichette con il prezzo in codice, alle fiere). Nel senso che si poteva usare le lettere che ti pareva....

  4. #4
    Benvenuto ma dai un'occhiata al regolamento ...

    - I saluti nella sezione apposita
    - I problemi di Access nella sezione Access (questa volta sposto io, la prossima fai attenzione)
    - Il titolo dei thread deve indicare il problema non essere generico (anche questa volta correggo io ...)
    - Non si chiede la "pappa pronta", ovvero non puoi chiedere che si scriva del codice per te ... questo un forum tecnico di programmazione, si danno aiuti su problemi di codice gi scritto con errori o malfunzionamenti. Prova a scrivere qualcosa tu (fra l'altro abbastanza banale) e poi ne parliamo.
    ℹ️ Leggi di pi su AntonioG ...

  5. #5
    La mia domanda era volta a capire come impostare il codice.
    A naso farei un'array, sfruttando il fatto che ogni cifra, da 0 a 9, pu essere sfruttata come indice.
    Si tratta di stabilire se creare l'array come "costante", cio invariabile nel corso del tempo salvo modifica del codice, oppure dinamico, variabile, lasciando all'utente la scelta di quali lettere usare in corrispondenza di ogni cifra. Oppure salvare questa corrispondenza cifra -> lettera in una tabella.
    Di certo non ti verr servito pronto all'uso, come scritto da AntonioG.

  6. #6
    Basta una stringa di dieci lettere (costante o variabile dipende da cosa uno ci vuole fare ma ha poca importanza).

    Converti il numero in testo, esamini un carattere per volta utilizzandolo come indice con una Mid e lo rimpiazzi in un ciclo. Poche righe.

    Si potrebbe usare l'ASCII se le lettere usate fossero contigue (non questo il caso perch non si usa la J)
    ℹ️ Leggi di pi su AntonioG ...

  7. #7
    Roby1954 non  in linea Novello
    Scusate per gli errori, provo. Sar una cosa lunghina..... Grazie mille (per il momento)

  8. #8
    marco61 non  in linea Scolaretto
    Se pu essere di aiuto, questo codice trasforma un numero in valuta in lettere (solo la parte intera) Es. 125,50 -> centoventicinque,50.
    creare un nuovo modulo dove va copiato il codice sotto

            Private Function Unita(ByVal k As Integer) As String
                Dim Lettere() As String
                Lettere = Split(",uno,due,tre,quattro,cinque,sei,sette,otto,nove,dieci,undici,dodici,tredici,quattordici,quindici,sedici,diciassette,diciotto,diciannove", ",")
                If (k < 0) Or (k > UBound(Lettere)) Then
                    Unita = ""
                Else
                    Unita = Lettere(k)
                End If
            End Function
     
            Private Function Decine(ByVal k As Integer) As String
                Dim Lettere() As String
                Lettere = Split(",dieci,venti,trenta,quaranta,cinquanta,sessanta,settanta,ottanta,novanta", ",")
                If (k < 0) Or (k > UBound(Lettere)) Then
                    Decine = ""
                Else
                    Decine = Lettere(k)
                End If
            End Function
     
            Private Function Migliaia(ByVal k As Integer) As String
                Dim Lettere() As String
                Lettere = Split(",mille,unmilione,unmiliardo,millemiliardi,mila,milioni,miliardi,milamiliardi,milamiliardi,migliaiadimiliardi", ",")
                If (k < 0) Or (k > UBound(Lettere)) Then
                    Migliaia = ""
                Else
                    Migliaia = Lettere(k)
                End If
            End Function
           
     
            Private Function CalcolaLettere(ByVal importo As Currency) As String
                Dim result As String
                result = ""
                Dim intero As String
                intero = Format(importo, "0.00")
                Dim resto As String
                resto = "/" + Right(intero, 2)
                intero = Left(intero, Len(intero) - 3)
                If Left(intero, 1) = "-" Then
                    intero = Mid(intero, 2)
                End If
                If importo = 0 Then
                    CalcolaLettere = "zero/00"
                    Exit Function
                End If
                Dim mille As Integer
                mille = -1
                Dim k As Integer
                k = Len(intero) Mod 3
                If Not (k = 0) Then
                    intero = String(3 - k, "0") + intero
                End If
                While Not (intero = "")
                    mille = mille + 1
                    Dim parziale As String
                    parziale = ""
                    Dim tripla As String
                    tripla = Right(intero, 3)
                    Dim s As String
                    s = ""
                    intero = Left(intero, Len(intero) - 3)
                    Dim tv As Integer
                    tv = CInt(tripla)
                    Dim td As Integer
                    td = tv Mod 100
                    Dim tc As Integer
                    tc = (tv - td) / 100
                    If Not (tc = 0) Then
                        parziale = "cento"
                        If tc > 1 Then
                            parziale = Unita(tc) + parziale
                        End If
                    End If
                    If td < 20 Then
                        parziale = parziale + Unita(td)
                    Else
                        Dim X As Integer
                        X = td Mod 10
                        Dim Y As Integer
                        Y = (td - X) / 10
                        parziale = parziale + Decine(Y)
                        s = Unita(X)
                        If (InStr(1, "uo", Left(s, 1)) <> 0) And (s <> "") And (Not (Y = 0)) Then
                           parziale = Left(parziale, Len(parziale) - 1)
                        End If
                        parziale = parziale + s
                    End If
                    s = Migliaia(mille)
                    If (mille > 0) And (Not (parziale = "")) Then
                        k = mille
                        If Not (parziale = "uno") Then
                            k = k + 4
                            s = Migliaia(k)
                            If Right(parziale, 3) = "uno" Then
                                parziale = Left(parziale, Len(parziale) - 1)
                            End If
                        Else
                            parziale = ""
                        End If
                        parziale = parziale + s
                    End If
                    result = parziale + result
                Wend
                If importo < 0 Then
                    result = "meno" + result
                End If
                CalcolaLettere = result + resto
            End Function
            Public Function Cifre2Lettere(ByVal importo As Currency) As String
                Cifre2Lettere = CalcolaLettere(importo)
            End Function
    
    Poi lo richiami con
    Cifre2Lettere(tuovalore)
    

  9. #9
    L'avatar di @Alex
    @Alex non  in linea Moderatore Globale
    Marco... mi pare che non abbia veramente NULLA a che vedere con la richiesta, estremamente meno complessa, che si attua con 5 righe di codice...!
    ℹ️ Leggi di pi su @Alex ...

  10. #10
    Marco ... rileggi il primo post e la mia risposta ...
    ℹ️ Leggi di pi su AntonioG ...

+ Rispondi al messaggio
Pagina 1 di 2 12 ultimoultimo

Potrebbero interessarti anche ...

  1. Conversione numeri in lettere
    Da BigDreamer nel forum Microsoft Excel
    Risposte: 4
    Ultimo Post: 10-03-2014, 01:30
  2. Conversione numero DA lettere A cifre
    Da John Hawk nel forum Visual Basic 6
    Risposte: 26
    Ultimo Post: 21-09-2012, 16:59
  3. Trasformare valori numerici da lettere a cifre
    Da dosso89 nel forum Visual Basic 6
    Risposte: 14
    Ultimo Post: 02-11-2007, 13:36
  4. Come scarto le cifre di un numero?
    Da iltexano nel forum Microsoft Word
    Risposte: 4
    Ultimo Post: 20-09-2007, 17:54
  5. [VB6] Determinare il numero di cifre di un numero
    Da BrandonHeat nel forum Visual Basic 6
    Risposte: 18
    Ultimo Post: 04-04-2007, 15:30