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 de ingesoft
1
1
ingesoft, Ing. en Sistemas ,Manejo de base de datos Diseño y elaboración de...
x=100.50
decimales=x-round(x,0)
lit=literal+alltrim(str(decimales))+'/100'
¿Sera esa la solución?
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...
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
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...
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...
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...
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...
- Compartir respuesta
- Anónimo
ahora mismo