
conversion de numeros a letras
Publicado por HUGO CUYAN (29 intervenciones) el 20/07/2012 19:32:14
MUCHAS GRACIAS LEO
Te comento: Yo trabajo con tablas de visual fox y como comenté anteriormente, cuando estoy dentro de visual fox, el programa se ejecuta correctamente, pero cuando lo hago desde el ejecutable me da el problema de que solo guarda el final ejemplo: si el resultado es "CIENTO CUARENTA Y CINCO CON 60/100" solo me guarda "CINCO CON 60/100"
esta es mi rutina
DELETE FROM EMICHEQUES
INSERT INTO EMICHEQUES(ID,SBASE,BONIFIC,VALOR,LIQUIDO);
SELECT ID,SBASE,BONIFIC,VALOR,LIQUIDO FROM PLANILLA;
WHERE FORMAPAGO = "C"
(ID de las personas a las que se les genera cheque)
SELECT MAX(ID) AS MAXI;
FROM EMICHEQUES;
INTO CURSOR VALOR
NUMERO = VALOR.MAXI
DO WHILE NUMERO # 0
SELECT LIQUIDO AS TOTAL;
FROM PLANILLA;
WHERE ID = NUMERO;
INTO CURSOR PAGO
VALOR = PAGO.TOTAL
VALENTERO = INT(VALOR)
VALDECIMAL = VALOR-VALENTERO
VALENTERO = STR(VALENTERO)
VALDECIMAL = STR(VALDECIMAL*100)
LETRA = ""
U = ""
D = ""
C = ""
UM = ""
DM = ""
CM = ""
DO CASE
CASE RIGHT(VALENTERO,1) = "1"
U = "UNO"
CASE RIGHT(VALENTERO,1) = "2"
U = "DOS"
CASE RIGHT(VALENTERO,1) = "3"
U = "TRES"
CASE RIGHT(VALENTERO,1) = "4"
U = "CUATRO"
CASE RIGHT(VALENTERO,1) = "5"
U = "CINCO"
CASE RIGHT(VALENTERO,1) = "6"
U = "SEIS"
CASE RIGHT(VALENTERO,1) = "7"
U = "SIETE"
CASE RIGHT(VALENTERO,1) = "8"
U = "OCHO"
CASE RIGHT(VALENTERO,1) = "9"
U = "NUEVE"
CASE RIGHT(VALENTERO,1) = "0"
U = ""
ENDCASE
DO CASE
CASE RIGHT(VALENTERO,2) = "10"
D = "DIEZ"
U = ""
CASE RIGHT(VALENTERO,2) = "11"
D = "ONCE"
U = ""
CASE RIGHT(VALENTERO,2) = "12"
D = "DOCE"
U = ""
CASE RIGHT(VALENTERO,2) = "13"
D = "TRECE"
U = ""
CASE RIGHT(VALENTERO,2) = "14"
D = "CATORCE"
U = ""
CASE RIGHT(VALENTERO,2) = "15"
D = "QUINCE"
U = ""
CASE RIGHT(VALENTERO,2) = "16"
D = "DIECISEIS"
U = ""
CASE RIGHT(VALENTERO,2) = "17"
D = "DIECISIETE"
U = ""
CASE RIGHT(VALENTERO,2) = "18"
D = "DIECIOCHO"
U = ""
CASE RIGHT(VALENTERO,2) = "19"
D = "DIECINUEVE"
U = ""
CASE RIGHT(VALENTERO,2) = "2" AND RIGHT(VALENTERO,1) = "0"
D = "VEINTE"
U = ""
CASE RIGHT(VALENTERO,2) = "2" AND RIGHT(VALENTERO,1) <> "0"
D = "VEINTI"
CASE RIGHT(VALENTERO,2) = "3" AND RIGHT(VALENTERO,1) = "0"
D = "TREINTA"
U = ""
CASE RIGHT(VALENTERO,2) = "3" AND RIGHT(VALENTERO,1) <> "0"
D = "TREINTA Y "
CASE RIGHT(VALENTERO,2) = "4" AND RIGHT(VALENTERO,1) = "0"
D = "CUARENTA"
U = ""
CASE RIGHT(VALENTERO,2) = "4" AND RIGHT(VALENTERO,1) <> "0"
D = "CUARENTA Y "
CASE RIGHT(VALENTERO,2) = "5" AND RIGHT(VALENTERO,1) = "0"
D = "CINCUENTA"
U = ""
CASE RIGHT(VALENTERO,2) = "5" AND RIGHT(VALENTERO,1) <> "0"
D = "CINCUENTA Y "
CASE RIGHT(VALENTERO,2) = "6" AND RIGHT(VALENTERO,1) = "0"
D = "SESENTA"
U = ""
CASE RIGHT(VALENTERO,2) = "6" AND RIGHT(VALENTERO,1) <> "0"
D = "SESENTA Y "
CASE RIGHT(VALENTERO,2) = "7" AND RIGHT(VALENTERO,1) = "0"
D = "SETENTA"
U = ""
CASE RIGHT(VALENTERO,2) = "7" AND RIGHT(VALENTERO,1) <> "0"
D = "SETENTA Y "
CASE RIGHT(VALENTERO,2) = "8" AND RIGHT(VALENTERO,1) = "0"
D = "OCHENTA"
U = ""
CASE RIGHT(VALENTERO,2) = "8" AND RIGHT(VALENTERO,1) <> "0"
D = "OCHENTA Y "
CASE RIGHT(VALENTERO,2) = "9" AND RIGHT(VALENTERO,1) = "0"
D = "NOVENTA"
U = ""
CASE RIGHT(VALENTERO,2) = "9" AND RIGHT(VALENTERO,1) <> "0"
D = "NOVENTA Y "
CASE RIGHT(VALENTERO,2) = "0" AND RIGHT(VALENTERO,1) = "0"
D = ""
U = ""
ENDCASE
DO CASE
CASE RIGHT(VALENTERO,3) = "1" AND RIGHT(VALENTERO,2) = "00"
C = "CIEN"
CASE RIGHT(VALENTERO,3) = "1" AND RIGHT(VALENTERO,1) <> "00"
C = "CIENTO "
CASE RIGHT(VALENTERO,3) = "2"
C = "DOSCIENTOS "
CASE RIGHT(VALENTERO,3) = "3"
C = "TRESCIENTOS "
CASE RIGHT(VALENTERO,3) = "4"
C = "CUATROCIENTOS "
CASE RIGHT(VALENTERO,3) = "5"
C = "QUINIENTOS "
CASE RIGHT(VALENTERO,3) = "6"
C = "SEISCIENTOS "
CASE RIGHT(VALENTERO,3) = "7"
C = "SETECIENTOS "
CASE RIGHT(VALENTERO,3) = "8"
C = "OCHOCIENTOS "
CASE RIGHT(VALENTERO,3) = "9"
C = "NOVECIENTOS "
CASE RIGHT(VALENTERO,3) = "0"
C = ""
ENDCASE
DO CASE
CASE RIGHT(VALENTERO,4) = "1"
UM = "UN MIL "
CASE RIGHT(VALENTERO,4) = "2"
UM = "DOS MIL "
CASE RIGHT(VALENTERO,4) = "3"
UM = "TRES MIL "
CASE RIGHT(VALENTERO,4) = "4"
UM = "CUATRO MIL "
CASE RIGHT(VALENTERO,4) = "5"
UM = "CINCO MIL "
CASE RIGHT(VALENTERO,4) = "6"
UM = "SEIS MIL "
CASE RIGHT(VALENTERO,4) = "7"
UM = "SIETE MIL "
CASE RIGHT(VALENTERO,4) = "8"
UM = "OCHO MIL "
CASE RIGHT(VALENTERO,4) = "9"
UM = "NUEVE MIL "
CASE RIGHT(VALENTERO,4) = "0"
UM = ""
ENDCASE
LETRA = UM+C+D+U+" CON "+ALLTRIM(VALDECIMAL)+"/100"
UPDATE EMICHEQUES SET LETRAS = LETRA;
WHERE ID = NUMERO
NUMERO = NUMERO - 1
LOOP
EXIT
ENDDO
REPORT FORM EMICHEQUES TO PRINTER
REPORT FORM RECIBOS TO PRINTER
saludos
Te comento: Yo trabajo con tablas de visual fox y como comenté anteriormente, cuando estoy dentro de visual fox, el programa se ejecuta correctamente, pero cuando lo hago desde el ejecutable me da el problema de que solo guarda el final ejemplo: si el resultado es "CIENTO CUARENTA Y CINCO CON 60/100" solo me guarda "CINCO CON 60/100"
esta es mi rutina
DELETE FROM EMICHEQUES
INSERT INTO EMICHEQUES(ID,SBASE,BONIFIC,VALOR,LIQUIDO);
SELECT ID,SBASE,BONIFIC,VALOR,LIQUIDO FROM PLANILLA;
WHERE FORMAPAGO = "C"
(ID de las personas a las que se les genera cheque)
SELECT MAX(ID) AS MAXI;
FROM EMICHEQUES;
INTO CURSOR VALOR
NUMERO = VALOR.MAXI
DO WHILE NUMERO # 0
SELECT LIQUIDO AS TOTAL;
FROM PLANILLA;
WHERE ID = NUMERO;
INTO CURSOR PAGO
VALOR = PAGO.TOTAL
VALENTERO = INT(VALOR)
VALDECIMAL = VALOR-VALENTERO
VALENTERO = STR(VALENTERO)
VALDECIMAL = STR(VALDECIMAL*100)
LETRA = ""
U = ""
D = ""
C = ""
UM = ""
DM = ""
CM = ""
DO CASE
CASE RIGHT(VALENTERO,1) = "1"
U = "UNO"
CASE RIGHT(VALENTERO,1) = "2"
U = "DOS"
CASE RIGHT(VALENTERO,1) = "3"
U = "TRES"
CASE RIGHT(VALENTERO,1) = "4"
U = "CUATRO"
CASE RIGHT(VALENTERO,1) = "5"
U = "CINCO"
CASE RIGHT(VALENTERO,1) = "6"
U = "SEIS"
CASE RIGHT(VALENTERO,1) = "7"
U = "SIETE"
CASE RIGHT(VALENTERO,1) = "8"
U = "OCHO"
CASE RIGHT(VALENTERO,1) = "9"
U = "NUEVE"
CASE RIGHT(VALENTERO,1) = "0"
U = ""
ENDCASE
DO CASE
CASE RIGHT(VALENTERO,2) = "10"
D = "DIEZ"
U = ""
CASE RIGHT(VALENTERO,2) = "11"
D = "ONCE"
U = ""
CASE RIGHT(VALENTERO,2) = "12"
D = "DOCE"
U = ""
CASE RIGHT(VALENTERO,2) = "13"
D = "TRECE"
U = ""
CASE RIGHT(VALENTERO,2) = "14"
D = "CATORCE"
U = ""
CASE RIGHT(VALENTERO,2) = "15"
D = "QUINCE"
U = ""
CASE RIGHT(VALENTERO,2) = "16"
D = "DIECISEIS"
U = ""
CASE RIGHT(VALENTERO,2) = "17"
D = "DIECISIETE"
U = ""
CASE RIGHT(VALENTERO,2) = "18"
D = "DIECIOCHO"
U = ""
CASE RIGHT(VALENTERO,2) = "19"
D = "DIECINUEVE"
U = ""
CASE RIGHT(VALENTERO,2) = "2" AND RIGHT(VALENTERO,1) = "0"
D = "VEINTE"
U = ""
CASE RIGHT(VALENTERO,2) = "2" AND RIGHT(VALENTERO,1) <> "0"
D = "VEINTI"
CASE RIGHT(VALENTERO,2) = "3" AND RIGHT(VALENTERO,1) = "0"
D = "TREINTA"
U = ""
CASE RIGHT(VALENTERO,2) = "3" AND RIGHT(VALENTERO,1) <> "0"
D = "TREINTA Y "
CASE RIGHT(VALENTERO,2) = "4" AND RIGHT(VALENTERO,1) = "0"
D = "CUARENTA"
U = ""
CASE RIGHT(VALENTERO,2) = "4" AND RIGHT(VALENTERO,1) <> "0"
D = "CUARENTA Y "
CASE RIGHT(VALENTERO,2) = "5" AND RIGHT(VALENTERO,1) = "0"
D = "CINCUENTA"
U = ""
CASE RIGHT(VALENTERO,2) = "5" AND RIGHT(VALENTERO,1) <> "0"
D = "CINCUENTA Y "
CASE RIGHT(VALENTERO,2) = "6" AND RIGHT(VALENTERO,1) = "0"
D = "SESENTA"
U = ""
CASE RIGHT(VALENTERO,2) = "6" AND RIGHT(VALENTERO,1) <> "0"
D = "SESENTA Y "
CASE RIGHT(VALENTERO,2) = "7" AND RIGHT(VALENTERO,1) = "0"
D = "SETENTA"
U = ""
CASE RIGHT(VALENTERO,2) = "7" AND RIGHT(VALENTERO,1) <> "0"
D = "SETENTA Y "
CASE RIGHT(VALENTERO,2) = "8" AND RIGHT(VALENTERO,1) = "0"
D = "OCHENTA"
U = ""
CASE RIGHT(VALENTERO,2) = "8" AND RIGHT(VALENTERO,1) <> "0"
D = "OCHENTA Y "
CASE RIGHT(VALENTERO,2) = "9" AND RIGHT(VALENTERO,1) = "0"
D = "NOVENTA"
U = ""
CASE RIGHT(VALENTERO,2) = "9" AND RIGHT(VALENTERO,1) <> "0"
D = "NOVENTA Y "
CASE RIGHT(VALENTERO,2) = "0" AND RIGHT(VALENTERO,1) = "0"
D = ""
U = ""
ENDCASE
DO CASE
CASE RIGHT(VALENTERO,3) = "1" AND RIGHT(VALENTERO,2) = "00"
C = "CIEN"
CASE RIGHT(VALENTERO,3) = "1" AND RIGHT(VALENTERO,1) <> "00"
C = "CIENTO "
CASE RIGHT(VALENTERO,3) = "2"
C = "DOSCIENTOS "
CASE RIGHT(VALENTERO,3) = "3"
C = "TRESCIENTOS "
CASE RIGHT(VALENTERO,3) = "4"
C = "CUATROCIENTOS "
CASE RIGHT(VALENTERO,3) = "5"
C = "QUINIENTOS "
CASE RIGHT(VALENTERO,3) = "6"
C = "SEISCIENTOS "
CASE RIGHT(VALENTERO,3) = "7"
C = "SETECIENTOS "
CASE RIGHT(VALENTERO,3) = "8"
C = "OCHOCIENTOS "
CASE RIGHT(VALENTERO,3) = "9"
C = "NOVECIENTOS "
CASE RIGHT(VALENTERO,3) = "0"
C = ""
ENDCASE
DO CASE
CASE RIGHT(VALENTERO,4) = "1"
UM = "UN MIL "
CASE RIGHT(VALENTERO,4) = "2"
UM = "DOS MIL "
CASE RIGHT(VALENTERO,4) = "3"
UM = "TRES MIL "
CASE RIGHT(VALENTERO,4) = "4"
UM = "CUATRO MIL "
CASE RIGHT(VALENTERO,4) = "5"
UM = "CINCO MIL "
CASE RIGHT(VALENTERO,4) = "6"
UM = "SEIS MIL "
CASE RIGHT(VALENTERO,4) = "7"
UM = "SIETE MIL "
CASE RIGHT(VALENTERO,4) = "8"
UM = "OCHO MIL "
CASE RIGHT(VALENTERO,4) = "9"
UM = "NUEVE MIL "
CASE RIGHT(VALENTERO,4) = "0"
UM = ""
ENDCASE
LETRA = UM+C+D+U+" CON "+ALLTRIM(VALDECIMAL)+"/100"
UPDATE EMICHEQUES SET LETRAS = LETRA;
WHERE ID = NUMERO
NUMERO = NUMERO - 1
LOOP
EXIT
ENDDO
REPORT FORM EMICHEQUES TO PRINTER
REPORT FORM RECIBOS TO PRINTER
saludos
Valora esta pregunta


0