[MS Access] trasformare un numero in lettere in un report

sagrimal

Nuovo Utente
19 Mar 2019
2
0
1
Salve, sono nuovo del forum,
Non so se questo post è già presente nel forum, chiedo scusa in anticipo.
Espongo brevemente il mio problema,
ho trovato su internet alcune soluzioni al mio problema, ma purtroppo non funzionano correttamente.
in un report ho due campi uno denominato IMPMO e l'altro è un campo da una queri che viene fuori da una funzione che posto in calce:

Quando nel repor leggo nel campo IMPMO il valore 1.577,80 il campo della funzione mi riporta millecinquecentosettantasette/77
non so dive è l'errore.
ribadisco che questa funzione l'ho trovata su un forum.
Ciao a tutti e grazie a chi può darmi un aiuto.


Function NumeriPerLettere(VALORE) As String

VALORE = Replace(VALORE, ".", "")

Dim Sez()

Unita = ""
Decine = ""
Centinaia = ""
Uni = ""
Dec = ""
Cent = ""
Sezioni = ""
NoUnits = 0

'Ritorna se vi è; la virgola
numInt = InStr(VALORE, ",")
numDecim = Len(VALORE) - InStr(VALORE, ",") 'Controlla il numero dei decimali dopo la virgola

'Controlla se il numero è; privo di virgola
If numInt = 0 Then
VALORE = Left(VALORE, Len(VALORE))

'Mette come decimali due zeri
decimali = "00"

ElseIf numDecim = 1 Then 'Se c'è; un solo decimale dopo la virgola gli aggiunge uno zero
VALORE = Left(VALORE, Len(VALORE) - Len(Mid(VALORE, (InStr(VALORE, ",")))))
decimali = Right(VALORE, 1) & "0"
Else
VALORE = Left(VALORE, Len(VALORE) - Len(Mid(VALORE, (InStr(VALORE, ",")))))

'Mi restituisce i due decimali alla destra della virgola
decimali = Right(VALORE, 2)
End If

Cifre = Len(VALORE)

Stringa = ""

P = 0

For Posizione = 1 To Cifre
P = P + 1
Stringa = Mid(VALORE, Cifre - (Posizione - 1), 1) & Stringa
If P = 3 Then
Stringa = "\" & Stringa: P = 0
End If
Next

If Left(Stringa, 1) = "\" Then Stringa = Mid(Stringa, 2, Len(Stringa))

Sezioni = Empty
Sezioni = Split(Stringa, "\")

Nsez = UBound(Sezioni) + 1

Erase Sez()
ReDim Sez(Nsez)

For S = 0 To Nsez - 1

If Len(Sezioni(S)) < 3 Then Sezioni(S) = String(3 - Len(Sezioni(S)), "0") & Sezioni(S)

If Len(Sezioni(S)) = 3 Then
Centinaia = Mid(Sezioni(S), 1, 1)

Select Case Centinaia

Case "0"
Cent = ""
Case "1"
Cent = "cento"
Case Else
Cent = Converti(Centinaia) & "cento"
End Select

Decine = Mid(Sezioni(S), 2, 1)

Select Case Decine

Case "0"
Dec = ""
NoUnits = 0

Case "1"
Dec = Converti(Decine & Mid(Sezioni(S), 3, 1))
NoUnits = 1
Unita = ""

Case Else
Dec = Converti(Decine & "0")
NoUnits = 0

End Select

If NoUnits <> 1 Then
Unita = Mid(Sezioni(S), 3, 1)
Uni = Converti(Unita)
If (Unita = "1" Or Unita = "8") And Dec <> "" Then Dec = Mid(Dec, 1, Len(Dec) - 1)
End If
End If

Sez(S) = Cent & Dec & Uni
Cent = "": Dec = "": Uni = ""

Next

Finale = ""

For X = 0 To Nsez - 1

Select Case Nsez - (X + 1)

Case 0
interp = ""

Case 1
If Sez(X) = "uno" Then
Sez(X) = ""
interp = "mille"
Else
interp = "mila"
End If

Case 2
If Sez(X) = "uno" Then
Sez(X) = "un"
interp = "milione"
Else
interp = "milioni"
End If

Case 3
If Sez(X) = "uno" Then
Sez(X) = "un"
interp = "miliardo"
Else
interp = "miliardi"
End If

End Select

Finale = Finale & Sez(X) & interp

Next

NumeriPerLettere = Finale & "/" & decimali

End Function


Function Converti(Numero)

If Numero = "1" Then Stringa = "uno"
If Numero = "2" Then Stringa = "due"
If Numero = "3" Then Stringa = "tre"
If Numero = "4" Then Stringa = "quattro"
If Numero = "5" Then Stringa = "cinque"
If Numero = "6" Then Stringa = "sei"
If Numero = "7" Then Stringa = "sette"
If Numero = "8" Then Stringa = "otto"
If Numero = "9" Then Stringa = "nove"
If Numero = "10" Then Stringa = "dieci"
If Numero = "11" Then Stringa = "undici"
If Numero = "12" Then Stringa = "dodici"
If Numero = "13" Then Stringa = "tredici"
If Numero = "14" Then Stringa = "quattordici"
If Numero = "15" Then Stringa = "quindici"
If Numero = "16" Then Stringa = "sedici"
If Numero = "17" Then Stringa = "diciassette"
If Numero = "18" Then Stringa = "diciotto"
If Numero = "19" Then Stringa = "diciannove"
If Numero = "20" Then Stringa = "venti"

If Numero = "30" Then Stringa = "trenta"
If Numero = "40" Then Stringa = "quaranta"
If Numero = "50" Then Stringa = "cinquanta"
If Numero = "60" Then Stringa = "sessanta"
If Numero = "70" Then Stringa = "settanta"
If Numero = "80" Then Stringa = "ottanta"
If Numero = "90" Then Stringa = "novanta"
If Numero = "100" Then Stringa = "cento"

Converti = Stringa

End Function
 

marino51

Utente Attivo
28 Feb 2013
3.204
207
63
Lombardia
magari cercare un altro sviluppo ….
qui ne trovi una seconda, potrebbe anche funzionare
http://www.pc-facile.com/forum/viewtopic.php?t=109757
upload_2019-3-19_15-40-11.png

é provata in excel ma si può applicare anche in access
 
Discussioni simili
Autore Titolo Forum Risposte Data
F access ricerca record con apostrofo. MS Access 0
P Access: recuperare Indice dopo un insert into MS Access 0
N Access: Filtro su maschera MS Access 0
B Non riesco a trovare i cognomi con i caratteri speciali in Access (Microsoft 365) MS Access 0
N Errore interno Access MS Access 2
C ACCESS Aprire maschera se valore non presente in una combo MS Access 7
L Access Periodo maschera continua MS Access 4
B Aumento dimensioni grafico Access Database 0
R [C#] Quali dipendenze occorrono su progetto "Setup" con Access Database? .NET Framework 1
G Appicazione HTML per inserimento dai in Database Access Microsoft HTML e CSS 0
K mc Access/phpmyamin MS Access 0
L Collegare un form html ad un database access Javascript 2
R salve a tutti sono un insegnante di pianoforte e a tempo perso mi sto dedicando ad access Presentati al Forum 1
G Access point con rete guest, consigli? Reti LAN e Wireless 0
P Access Inserimento data. MS Access 4
ges Microsoft ACCESS oltre ogni limite (tre manuali) Altri Annunci 2
@ [MS Access] Funzione Iif..is null... Database 0
P [MS Access] Sostituire un carattere in tutta la tabella MS Access 11
B tasti rapidi Access MS Access 1
M [MS Access] Pulsante su maschera che esegue azioni su altra maschera MS Access 3
C [MS Access] Pagina di dialogo con allegati MS Access 1
F Modificare report di etichette di access con vba MS Access 0
strambotto [MS Access] Smembramento tabella MS Access 5
D [MS Access] Piu' maschere con una sola tabella dati... MS Access 0
G [MS Access] Funzione ARROTONDA non definita nell'espressione MS Access 1
Spenalzo Creare tabelle multiple con Access via VBA MS Access 2
M [MS Access] Relazione tra maschere MS Access 1
G Access Point POE da esterno Reti LAN e Wireless 0
M [MS Access] controllo valido se MS Access 8
N [MS Access] Come relazionare DB Libri trasposti in Film e viceversa MS Access 1
S [ASP] SALVARE VALORE SELECT OPTION SU CAMPO TABELLA ACCESS Classic ASP 9
D [MS Access] MS Access 2
S [MS Access] Apertura Maschera su nuov record in base a determinato ID MS Access 0
maria_ia Microsoft Access Windows e Software 0
S [MS Access] Apertura maschera MS Access 3
D [Visual Basic] [MS Access] query con parametro di testo Visual Basic 4
T mysql tutorial per importare tabelle access in mysql aiuto MySQL 2
P [MS ACCESS] Estrarre più somme da una query MS Access 4
D [MS Access] problemi con inserimento campo in una maschera MS Access 6
F [MS Access] Creare [stringa] da caselle combinate MS Access 0
D [MS Access] aiuto non riesco a capire MS Access 6
Arcadia [MS Access] Focus su campo specifico MS Access 1
akira [MS Access] Apertura recordset MS Access 1
V access 2007, maschera con caselle di selezione Programmazione 4
W [MS Access] Barre di scorrimento su maschere MS Access 0
A [MS Access] Pulsante per inserire allegati in campo maschera MS Access 0
J [MS Access] Filtro su combo in sottomaschera MS Access 11
Arcadia [MS Access] Implementazione progetto con nuove funzioni. MS Access 0
A [MS Access] Aprire maschera con sottomaschera su ultimo record MS Access 0
A [MS Access] Maschera per interagire con tabella excell MS Access 19

Discussioni simili