Me funciono! Pero se puede con los centavos

Hola que tal amigo, disculpa la molestia tu me ayudaste con un código para convertir números a letras y me lo pusiste muy claro y me funciono. Pero yo quisiera también ponerle por ejm al textbox 1500.50 hay alguna manera de ponerles los centavos y la moneda convirtiéndolo de esta manera ***MIL QUINIENTOS PESOS CON 50/100**. Agradecería TU AYUDA...

1 Respuesta

Respuesta
1
x=100.50
decimales=x-round(x,0)
lit=literal+alltrim(str(decimales))+'/100'
¿Sera esa la solución?
Realmente enredado con todo el código del prg. no sabría donde aplicarlo... mira por ejmp. Un cantidad 1500.75 seria Mil quinientos con 75/100, no me interesaría mucho lo de la moneda... o claro si se pudiera mejor... con solo mostrar esto de la cantidad y que dijeria CON 75/100.
Mira no se tu, pero creo que yo si el código leyera los últimos dos dígitos creo que podríamos sacar la sifra y esos dos últimos digitos serian claro los decimales...
Ummmm No se... a ver tu que tienes mucha experiencia... a ver que piensas...
Realmente gracias por el tiempo que te tomas en leer estas preguntas...
Estaré esperantu tu respuesta...
Gracias...
FUNCTION literal
PARAMETERS cantidad,tipo
* cantidad : La cantidad a ser convertida m ximo 12 caracteres
private cantid,j,c,cad,long,l,trc,dg1,dg,c,m
cantid=str(cantidad,12,2)
j=7
c=1
cad=""
long=9
l=1
do case
   case cantidad=1000000
        cad='un millon '
   case cantidad=1000
        cad='mil '
   case cantidad=0
        cad='cero '
otherwise
        do while l<>0
           trc=substr(cantid,j,3)
           dg1=val(substr(trc,2,1))
           dg=val(right(trc,2))
           dgm=val(right(trc,3))
           if dg<>0
              if dg1=1
                 do case
                    case dg=10
                         cad='diez '+cad
                    case dg=11
                         cad='once '+cad
                    case dg=12
                         cad='doce '+cad
                    case dg=13
                         cad='trece '+cad
                    case dg=14
                         cad='catorce '+cad
                    case dg=15
                         cad='quince '+cad
                    case dg=16
                         cad='dieciseis '+cad
                    case dg=17
                         cad='diecisiete '+cad
                    case dg=18
                         cad='dieciocho '+cad
                    case dg=19
                         cad='diecinueve '+cad
                 endcase
              else
                 dg=val(right(trc,1))
                 if dg<>0
                    do case
                       case dg=1
                            cad='un '+cad
                       case dg=2
                            cad='dos '+cad
                       case dg=3
                            cad='tres '+cad
                       case dg=4
                            cad='cuatro '+cad
                       case dg=5
                            cad='cinco '+cad
                       case dg=6
                            cad='seis '+cad
                       case dg=7
                            cad='siete '+cad
                       case dg=8
                            cad='ocho '+cad
                       case dg=9
                            cad='nueve '+cad
                    endcase
                    if dg1<>0.and.dg1<>2
                       cad='y '+cad
                    endif
                 endif
              endif
              do case
                 case dg1=2
                      if dg=0
                         cad='veinte '+cad
                      else
                         cad='veinti'+cad
                      endif
                 case dg1=3
                      cad='treinta '+cad
                 case dg1=4
                      cad='cuarenta '+cad
                 case dg1=5
                      cad='cincuenta '+cad
                 case dg1=6
                      cad='sesenta '+cad
                 case dg1=7
                      cad='setenta '+cad
                 case dg1=8
                      cad='ochenta '+cad
                 case dg1=9
                      cad='noventa '+cad
              endcase
           endif
           dg1=val(left(trc,1))
           do case
              case dg1=1
                   if dgm=100
                      cad='cien '+cad
                   else
                      cad='ciento '+cad
                   endif
              case dg1=2
                   cad='docientos '+cad
              case dg1=3
                   cad='trecientos '+cad
              case dg1=4
                   cad='cuatrocientos '+cad
              case dg1=5
                   cad='quinientos '+cad
              case dg1=6
                   cad='seiscientos '+cad
              case dg1=7
                   cad='setecientos '+cad
              case dg1=8
                   cad='ochocientos '+cad
              case dg1=9
                   cad='novecientos '+cad
           endcase
           c=c+1
           long=long-3
           if val(substr(cantid,1,long))=0
              l=0
           else
              do case
                 case c=2
                      j=4
                      cad='mil '+cad
                 case c=3
                      j=1
                      if val(right(cantid,6))=0
                         cad='millones '
                      else
                         cad='millones '+cad
                      endif
                 case c=4
                      l=0
              endcase
           endif
        enddo
endcase
if substr(cantid,9,1)='1'.and.substr(cantid,8,2)<>'11'
   cad=substr(cad,1,len(cad)-1)+'o '
endif
m=left(cad,1)
if tipo <> '0' THEN
    cad=upper(m)+substr(cad,2,len(cad))       
ELSE
    cad=upper(m)+substr(cad,2,len(cad))+right(cantid,3)+"/100"     
ENDIF  
return cad
copia este codigo en un archivo prg luego en tu form podras usarlo escribiendo en el init de tu form
set proce to nombrearchivo.prg  && el nombre q le pusiste
para ver como funciona solo se pasa la cantidad con decimales y ya
x=literal(thisform.txt.value,'0'
Y ya resuelto lo que querías
¿No me funciona? Me sale Function argument, type, or count is invalid, y me señala la cuarta linea de código.
cantid=str(cantidad, 12,2) al darle ignorar
me dice... Operator/Operand type mismatch y me señala el primer case donde
Case cantidad  = 1000000 luego todos los case pertenecientes en esta condicion, luego me marca
trc=Substr(candida,j,3)
Mira no se.. pero todo lo tengo tal como tu me has dicho.. y tengo la experiencia del código que tu me diste anteriormente... ya se donde colocar los códigos.. pero la diferencia con el que me diste anteriormente y que si me funciona, yo lo puse en lostfocus y también el procedimiento keypress del textbox de donde se ingresa la cantidad... el que me funciona esta así
thisform.text2.value=literal(this.value, 1)
Y el que tu me das en este código esta así...
x=literal(thisform.txt.value,'0'            Exactmante asi bueno... pero si tu lo hiciste y te funciona a ver si me puedes mandar el ejemplo.. [email protected]
Otra vez.. Gracias por tomarte tu tiempo..
Gracias...
La cantidad la estas pasando como letra o carácter no como numero wey
Más que seguro que no era eso. Por que encontré el pequeño detalle que estaba afectando.
En mi aclaración anterior yo le escribí el código anterior que usted me ayudo. Esto sin reconocer los decimales. Le puse que en el init lo tenia de la siguiente manera:
thisform.text2.value=literal(this.value,1)
Y el código que usted me escribió para el init ya reconociendo los decimales me lo puso de la siguiente manera:
x=literal(thisform.txt.value,'0'
Entonces lo que hice fue probar de la manera anterior que usted me ayudo nada más que cambiando algo.
thisform.text2.value=literal(this.value,'0') y alli si funciona. Tambien modifique la siguiente linea de codigo del .prg ubicada en la antepenultima linea del .prg
de esto: cad=upper(m)+substr(cad,2,len(cad))+right(cantid,3)+"/100"
a ESto: cad=upper(m)+substr(cad,2,len(cad))+" Moneda. CON "+right(cantid,2)+"/100"
En el +right(cantidad, 3) lo pase a +right(cantidad 2) para que no me mostrara el punto donde comienza el decimal..
Bueno amigo... realmente muchas gracias... esto solo fue un pequeño detalle que es comprensible debido a que me imagino tantas cosas pasando por tu mente... pero no te preocupes solo es una pequeñes... esto no hubiera sido posible sin tu ayuda... realmente te agradezco y espero seguir contanto con tu ayuda...
Atentamente. aprendizxxxx
Gracias...

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas