Re: [PHP-ES] funcion para pasar numeros a letras

From: E. Ricardo Santos ( eddyrshot .en. hotmail.com)
Date: Sat Mar 06 2004 - 17:23:55 CET


Aqui te va la funcion que convierte:

Function naletras(NUMERO) As String

Dim SLUGAR1, SLUGAR2, STEMP1, STEMP2, STEMP3, mysql As String
Dim NTEMP, LARGO As Integer

Dim rs As Recordset
Dim db As Database

Set db = Workspaces(0).OpenDatabase("tubasedatos.mdb")

STEMP1 = LTrim(RTrim(Str(Int(NUMERO))))
LARGO = Len(LTrim(RTrim(STEMP1)))
STEMP2 = ""

While LARGO > 0
    
    If LARGO = 10 _
    Or LARGO = 7 _
    Or LARGO = 4 _
    Or LARGO = 1 Then
            STEMP3 = Left(LTrim(RTrim(STEMP1)), 1)

            If STEMP3 <> "0" Then
                NTEMP = Null
                mysql = "SELECT TblNUMEROLETRAS.* FROM TblNUMEROLETRAS WHERE (((TblNUMEROLETRAS.numero)=" & Val(STEMP3) & "));"
                Set rs = db.OpenRecordset(mysql)
                NTEMP = rs("numero")
                SLUGAR2 = rs("lugar2")
                'SELECT NTEMP = NUMERO, SLUGAR2 = LUGAR2 FROM tblNUMEROSLETRAS WHERE NUMERO = CONVERT(INT, STEMP3)

                If Not IsNull(NTEMP) Then
                    If NTEMP <> 1 And LARGO <> 1 Then
                        STEMP2 = LTrim(RTrim(LTrim(RTrim(STEMP2)) + " " + SLUGAR2))
                    Else
                        If LARGO <> "10" _
                        Or LARGO <> "4" Then STEMP2 = SLUGAR2
                    End If
                End If

                If LARGO = 10 _
                Or LARGO = 4 Then STEMP2 = LTrim(RTrim(STEMP2)) + " MIL"

                If LARGO = 7 Then

                    If STEMP3 = "1" Then
                        STEMP2 = "UN MILLON "
                    Else
                        STEMP2 = LTrim(RTrim(STEMP2)) + " MILLONES"
                    End If
                End If
                rs.Close
            End If

    End If

    If LARGO = 11 _
    Or LARGO = 8 _
    Or LARGO = 5 _
    Or LARGO = 2 Then

        STEMP3 = Left(LTrim(RTrim(STEMP1)), 2)

        If STEMP3 <> "00" Then

            NTEMP = Null
            mysql = "SELECT TblNUMEROLETRAS.* FROM TblNUMEROLETRAS WHERE (((TblNUMEROLETRAS.numero)=" & Val(STEMP3) & "));"
            Set rs = db.OpenRecordset(mysql, dbOpenDynaset)
            NTEMP = rs("numero")
            SLUGAR2 = rs("lugar2")
            'SELECT NTEMP = NUMERO, SLUGAR2 = LUGAR2 FROM tblNUMEROSLETRAS WHERE NUMERO = CONVERT(INT, STEMP3)

            If Not IsNull(NTEMP) Then

                STEMP2 = LTrim(RTrim(LTrim(RTrim(STEMP2)) + " " + SLUGAR2))
                If LARGO = 11 _
                Or LARGO = 5 Then
                    STEMP2 = LTrim(RTrim(STEMP2)) + " MIL"
                End If
                If LARGO = 8 Then STEMP2 = LTrim(RTrim(STEMP2)) + " MILLONES"
                LARGO = LARGO - 1

            End If
            rs.Close
        End If

    End If

    If LARGO = 12 _
    Or LARGO = 9 _
    Or LARGO = 6 _
    Or LARGO = 3 Then
        STEMP3 = Left(LTrim(RTrim(STEMP1)), 1)

        If STEMP3 <> "0" Then
            NTEMP = Null
            mysql = "SELECT TblNUMEROLETRAS.* FROM TblNUMEROLETRAS WHERE (((TblNUMEROLETRAS.numero)=" & Val(STEMP3) & "));"
            Set rs = db.OpenRecordset(mysql)
            NTEMP = rs("numero")
            SLUGAR1 = rs("lugar1")
            'SELECT NTEMP = NUMERO, SLUGAR1 = LUGAR1 FROM tblNUMEROSLETRAS WHERE NUMERO = CONVERT(INT, STEMP3)

            If Not IsNull(NTEMP) Then
                If STEMP3 = "1" And Mid(LTrim(RTrim(STEMP1)), 2, 2) = "00" Then
                    STEMP2 = LTrim(RTrim(STEMP2)) + " CIEN " + SLUGAR1
                Else
                    STEMP2 = LTrim(RTrim(STEMP2)) + " " + SLUGAR1
                End If
            End If
            rs.Close
        End If

    End If

    LARGO = LARGO - 1
    STEMP1 = Right(LTrim(RTrim(STEMP1)), LARGO)

Wend

db.Close
naletras = LTrim(RTrim(STEMP2))

End Function

Y ahora la base de datos:

0 "" ""
1 "CIENTO" "UN"
2 "DOSCIENTOS" "DOS"
3 "TRESCIENTOS" "TRES"
4 "CUATROCIENTOS" "CUATRO"
5 "QUINIENTOS" "CINCO"
6 "SEISCIENTOS" "SEIS"
7 "SETECIENTOS" "SIETE"
8 "OCHOCINETOS" "OCHO"
9 "NOVECIENTOS" "NUEVE"
10 "" "DIEZ"
11 "" "ONCE"
12 "" "DOCE"
13 "" "TRECE"
14 "" "CATORCE"
15 "" "QUINCE"
16 "" "DIECISEIS"
17 "" "DIECISIETE"
18 "" "DIECIOCHO"
19 "" "DIECINUEVE"
20 "" "VEINTE"
21 "" "VEINTIUN"
22 "" "VEINTIDOS"
23 "" "VEINTITRES"
24 "" "VEINTICUATRO"
25 "" "VEINTICINCO"
26 "" "VEINTISEIS"
27 "" "VEINTISIETE"
28 "" "VEINTIOCHO"
29 "" "VEINTINUEVE"
30 "" "TREINTA"
31 "" "TREINTA Y UN"
32 "" "TREINTA Y DOS"
33 "" "TREINTA Y TRES"
34 "" "TREINTA Y CUATRO"
35 "" "TREINTA YCINCO"
36 "" "TREINTA Y SEIS"
37 "" "TREINTA Y SIETE"
38 "" "TREINTA Y OCHO"
39 "" "TREINTA Y NUEVE"
40 "" "CUARENTA"
41 "" "CUARENTA YUN"
42 "" "CUARENTA Y DOS"
43 "" "CUARENTA Y TRES"
44 "" "CUARENTA Y CUATRO"
45 "" "CUARENTA Y CINCO"
46 "" "CUARENTA Y SEIS"
47 "" "CUARENTA Y SIETE"
48 "" "CUARENTA Y OCHO"
49 "" "CUARENTA Y NUEVE"
50 "" "CINCUENTA"
51 "" "CINCUENTA Y UN"
52 "" "CINCUENTA Y DOS"
53 "" "CINCUENTA Y TRES"
54 "" "CINCUENTA Y CUATRO"
55 "" "CINCUENTA Y CINCO"
56 "" "CINCUENTA Y SEIS"
57 "" "CINCUENTA Y SIETE"
58 "" "CINCUENTA Y OCHO"
59 "" "CINCUENTA Y NUEVE"
60 "" "SESENTA"
61 "" "SESENTA Y UN"
62 "" "SESENTA Y DOS"
63 "" "SESENTA Y TRES"
64 "" "SESENTA Y CUATRO"
65 "" "SESENTA Y CINCO"
66 "" "SESENTA Y SEIS"
67 "" "SESENTA Y SIETE"
68 "" "SESENTA Y OCHO"
69 "" "SESENTA Y NUEVE"
70 "" "SETENTA"
71 "" "SETENTA Y UN"
72 "" "SETENTA Y DOS"
73 "" "SETENTA Y TRES"
74 "" "SETENTA Y CUATRO"
75 "" "SETENTA Y CINCO"
76 "" "SETENTA Y SEIS"
77 "" "SETENTA Y SIETE"
78 "" "SETENTA Y OCHO"
79 "" "SETENTA Y NUEVE"
80 "" "OCHENTA"
81 "" "OCHENTA Y UN"
82 "" "OCHENTA Y DOS"
83 "" "OCHENTA Y TRES"
84 "" "OCHENTA Y CUATRO"
85 "" "OCHENTA Y CINCO"
86 "" "OCHENTA Y SEIS"
87 "" "OCHENTA Y SIETE"
88 "" "OCHENTA Y OCHO"
89 "" "OCHENTA Y NUEVE"
90 "" "NOVENTA"
91 "" "NOVENTA Y UN"
92 "" "NOVENTA Y DOS"
93 "" "NOVENTA Y TRES"
94 "" "NOVENTA Y CUATRO"
95 "" "NOVENTA Y CINCO"
96 "" "NOVENTA Y SEIS"
97 "" "NOVENTA Y SIETE"
98 "" "NOVENTA Y OCHO"
99 "" "NOVENTA Y NUEVE"

Saludos y suerte

----------------------------------
100% Cubano!!!
  ----- Original Message -----
  From: Adrian
  To:
  Sent: Friday, March 05, 2004 11:34 PM
  Subject: Fw: [PHP-ES] funcion para pasar numeros a letras

  Aqui tienes
  ------------------------------------

  Gente:
      necesito una funcion que, al recibir un numero como argumento (ej. 1203)
  me devuelva el mismo pero en letras (ej. mil doscientos tres)

------------------------------------------------------------------------------

  --
  PHP Spanish Localization Talk Mailing List (http://www.php.net/)
  To unsubscribe, visit: http://www.php.net/unsub.php



This archive was generated by hypermail 2.1.7 : Fri May 14 2004 - 16:04:34 CEST