Ver Mensaje Individual
  #5 (permalink)  
Antiguo 29/01/2011, 00:37
wwwmaster
 
Fecha de Ingreso: noviembre-2002
Ubicación: DF
Mensajes: 1.056
Antigüedad: 21 años, 5 meses
Puntos: 37
Respuesta: Monto a letras (crystal reports xi)

Yo lo hago con esta funcion, creo que la obtuve del Guille (costasol.net).

Public Function Letras(ByVal numero As String) As String
'-----------------------------------------
' Rutina para obtener importe de numeros a letras PARA LA FACTURA
'-----------------------------------------
'********Declara variables de tipo cadena************
Dim palabras, entero, dec, flag As String
palabras = ""

'********Declara variables de tipo entero***********
Dim num, x, y As Integer

flag = "N"

'**********Número Negativo***********
If Mid(numero, 1, 1) = "-" Then
numero = Mid(numero, 2, numero.ToString.Length - 1).ToString
palabras = "menos "
End If

'**********Si tiene ceros a la izquierda*************
For x = 1 To numero.ToString.Length
If Mid(numero, 1, 1) = "0" Then
numero = Trim(Mid(numero, 2, numero.ToString.Length).ToString)
If Trim(numero.ToString.Length) = 0 Then palabras = ""
Else
Exit For
End If
Next

'*********Dividir parte entera y decimal************
For y = 1 To Len(numero)
If Mid(numero, y, 1) = "." Then
flag = "S"
Else
If flag = "N" Then
entero = entero + Mid(numero, y, 1)
Else
dec = dec + Mid(numero, y, 1)
End If
End If
Next y

If Len(dec) = 1 Then dec = dec & "0"

'**********proceso de conversión***********
flag = "N"

If Val(numero) <= 999999999 Then
For y = Len(entero) To 1 Step -1
num = Len(entero) - (y - 1)
Select Case y
Case 3, 6, 9
'**********Asigna las palabras para las centenas***********
Select Case Mid(entero, num, 1)
Case "1"
If Mid(entero, num + 1, 1) = "0" And Mid(entero, num + 2, 1) = "0" Then
palabras = palabras & "cien "
Else
palabras = palabras & "ciento "
End If
Case "2"
palabras = palabras & "doscientos "
Case "3"
palabras = palabras & "trescientos "
Case "4"
palabras = palabras & "cuatrocientos "
Case "5"
palabras = palabras & "quinientos "
Case "6"
palabras = palabras & "seiscientos "
Case "7"
palabras = palabras & "setecientos "
Case "8"
palabras = palabras & "ochocientos "
Case "9"
palabras = palabras & "novecientos "
End Select