FoxPro/Visual FoxPro - Convertir numeros de tablas a caracter en Reporte

   
Vista:

Convertir numeros de tablas a caracter en Reporte

Publicado por Jose (2 intervenciones) el 23/05/2012 03:03:29
Saludos:
Espero me puedan dar una ayuda, tengo elaborado un formulario de tipo certificado para notas de secundaria con cinto tablas distintas, en el reporte me imprime tal como esta en el formulario únicamente números del 01 al 20 lo que quisiera es que en lugar de números en el reporte en vista previa pueda ver las letras ya sean Doce, Quince, Diez, etc para imprimir, de antemano le agradesco por la respuesta
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Convertir numeros de tablas a caracter en Reporte

Publicado por Jose Casalino (94 intervenciones) el 23/05/2012 19:56:26
La solucion es que en el reporte donde sale el numero lo reemplaces por una funcion, por ejemplo letranumero( campo de la tabla), luego en el udfs de tu sistema pon esa funcion donde devuelva el texto, por ejemplo

func letranumero
para xnumero
letra=" "
..
... lineas para converir


return letra

.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Convertir numeros de tablas a caracter en Reporte

Publicado por Ale P (91 intervenciones) el 24/05/2012 22:18:36
te paso el codigo de la funcion que dice jose
espero que te sirva
salu2
--------------------------------------------------------------------------------------

FUNCTION NumeroATexto
LPARAMETERS tyMonto, tlDolares
LOCAL lyEntero, lyCentavos, lnNumeroBloques, lnPrimerDigito, lnSegundoDigito, lnTercerDigito, ;
lcBloque, lnBloqueCero, lcLetra

DIMENSION laUnidades(29), laDecenas(9), laCentenas(9)

tyMonto = ROUND(tyMonto, 2)
lyEntero = INT(tyMonto)
lcLetra = IIF(lyEntero = 0, "CERO", "")
lyCentavos = (tyMonto - lyEntero) * 100

laUnidades(1) = "UN"
laUnidades(2) = "DOS"
laUnidades(3) = "TRES"
laUnidades(4) = "CUATRO"
laUnidades(5) = "CINCO"
laUnidades(6) = "SEIS"
laUnidades(7) = "SIETE"
laUnidades(8) = "OCHO"
laUnidades(9) = "NUEVE"
laUnidades(10) = "DIEZ"
laUnidades(11) = "ONCE"
laUnidades(12) = "DOCE"
laUnidades(13) = "TRECE"
laUnidades(14) = "CATORCE"
laUnidades(15) = "QUINCE"
laUnidades(16) = "DIECISEIS"
laUnidades(17) = "DIECISIETE"
laUnidades(18) = "DIECIOCHO"
laUnidades(19) = "DIECINUEVE"
laUnidades(20) = "VEINTE"
laUnidades(21) = "VENTIUN"
laUnidades(22) = "VEINTIDOS"
laUnidades(23) = "VEINTITRES"
laUnidades(24) = "VEINTICUATRO"
laUnidades(25) = "VEINTICINCO"
laUnidades(26) = "VEINTISEIS"
laUnidades(27) = "VEINTISIETE"
laUnidades(28) = "VEINTIOCHO"
laUnidades(29) = "VEINTINUEVE"

laDecenas(1) = "DIEZ"
laDecenas(2) = "VEINTE"
laDecenas(3) = "TREINTA"
laDecenas(4) = "CUARENTA"
laDecenas(5) = "CINCUENTA"
laDecenas(6) = "SESENTA"
laDecenas(7) = "SETENTA"
laDecenas(8) = "OCHENTA"
laDecenas(9) = "NOVENTA"

laCentenas(1) = "CIENTO"
laCentenas(2) = "DOSCIENTOS"
laCentenas(3) = "TRESCIENTOS"
laCentenas(4) = "CUATROCIENTOS"
laCentenas(5) = "QUINIENTOS"
laCentenas(6) = "SEISCIENTOS"
laCentenas(7) = "SETECIENTOS"
laCentenas(8) = "OCHOCIENTOS"
laCentenas(9) = "NOVECIENTOS"

lnNumeroBloques = 1

DO WHILE lyEntero > 0
lnPrimerDigito = 0
lnSegundoDigito = 0
lnTercerDigito = 0
lcBloque = ""
lnBloqueCero = 0

FOR i = 1 TO 3
lnDigito = MOD(lyEntero, 10)

IF lnDigito <> 0 THEN
DO CASE
CASE i = 1
lcBloque = " " + laUnidades(lnDigito)
lnPrimerDigito = lnDigito
CASE i = 2
IF lnDigito <= 2 THEN
lcBloque = " " + laUnidades((lnDigito * 10) + lnPrimerDigito)
ELSE
lcBloque = " " + laDecenas(lnDigito) + IIF(lnPrimerDigito <> 0, " Y", "") + lcBloque
ENDIF
lnSegundoDigito = lnDigito
CASE i = 3
lcBloque = " " + IIF(lnDigito = 1 AND lnPrimerDigito = 0 AND lnSegundoDigito = 0, "CIEN", ;
laCentenas(lnDigito)) + lcBloque
lnTercerDigito = lnDigito
ENDCASE
ELSE
lnBloqueCero = lnBloqueCero + 1
ENDIF

lyEntero = INT(lyEntero / 10)

IF lyentero = 0 THEN
EXIT FOR
ENDIF
ENDFOR

DO CASE
CASE lnNumeroBloques = 1
lcLetra = lcBloque
CASE lnNumeroBloques = 2
lcLetra = lcBloque + IIF(lnBloqueCero <> 3, " MIL", "") + lcLetra
CASE lnNumeroBloques = 3
lcLetra = lcBloque + IIF(lnPrimerDigito = 1 AND lnSegundoDigito = 0 AND lnTercerDigito = 0, ;
" MILLON", " MILLONES") + lcLetra
ENDCASE

lnNumeroBloques = lnNumeroBloques + 1
ENDDO

IF tlDolares THEN
lcLetra = ALLTRIM(lcLetra) + IIF(INT(tyMonto) = 1, " DÓLAR ", " DOLARES ") + ;
REPLICATE("0", 2 - LEN(ALLTRIM(STR(lyCentavos)))) + ALLTRIM(STR(lyCentavos)) + "/100 USD"
ELSE
lcLetra = ALLTRIM(lcLetra) + IIF(INT(tyMonto) = 1, " PESO ", " PESOS ") + ;
REPLICATE("0", 2 - LEN(ALLTRIM(STR(lyCentavos)))) + ALLTRIM(STR(lyCentavos)) + "/100"
ENDIF

RETURN lcLetra
ENDFUNC
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar