Quisiera saber la manera de convertir los datos numéricos que tengo en un textbox (text1), en letras en otro textbox (text2), es decir, que al escribir un numero (por ejemplo:125) en un textbox, me aparezca en otro textbox que esta abajo [del anterior] el valor en letras (ciento veinticinco). Estaba sonando que lo podía hacer en mi form y desperté y me surgió la inquietud y salte de la cama a preguntar! Jajajaja! Saludos! Ravenn!
Respuesta de ingesoft
1
1
ingesoft, Ing. en Sistemas ,Manejo de base de datos Diseño y elaboración de...
Esta es la función que ocupo para transformar los números a letras pasando los parámetros de cantidad y tipo, Tipo solo para que devuelva 00/100 como una cantidad en dinero. 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 cad=upper(m)+substr(cad,2,len(cad))+right(cantid,3)+"/100" else cad=upper(m)+substr(cad,2,len(cad)) endif return cad Debes poner todo esto en un prg (ejm Librerias.prg) En el form INIT set proce to libreria.prg Y para usarlo x=literal(Thisform.text1.value,0)
Hola! Tengo 2 preguntas y de verdad disculpa ignorancia! 1. Seguí tus orientaciones, cuando ejecuto en el form me manda un mensaje Fuction Argument is Invalid y senala la parte: cantid=str(cantidad, 12,2). ¿Qué hice mal? 2. Donde ubico la parte para usarlo, x=literal(Thisform.text1.value, ¿0) esto donde lo ubico? Probé en el text! Pero no estoy seguro donde ponerlo! Saludos!
en un prg es decir un archivo.prg y luego en el form indicar q usas ese prg como libreria , la cantidad no debes pasrla como caracter es decir x=literal(123,1) asi tal vez el contenido de text1 es de type caracter no numeral. Pra indicar q trabajaras con el prg en el init del form deberas poner Set procedure to nombredelprg
1 comentario
hey Ravenn quisiera saber si me podrías ayudar a realizar este programa, es que soy nuevo en esto y la verdad no tengo ni idea de como hacerlo agradeceria si pudieras contestarme algunas dudas lo más pronto posible - Alan Armas Altamirano
hey Ravenn quisiera saber si me podrías ayudar a realizar este programa, es que soy nuevo en esto y la verdad no tengo ni idea de como hacerlo agradeceria si pudieras contestarme algunas dudas lo más pronto posible - Alan Armas Altamirano