Aunque ya habia publicado como personalizar una fecha en MYSQL, ahora presento esta version, en donde la salida es del tipo "Jueves 28 de Febrero de 2008"., puesto que la version anterior tambien agregaba la hora y minuto.
En este caso, de un subQuery se concatenan el dia en texto, el diaNumerico, el mes en Texto y el año, observese el subQuery:
SELECT
concat(t1.diaEnTexto, " ", t1.diaNumerico, " de ",t1.mesEnTexto, " de " , t1.elAnio
) as fechaEnTexto
FROM
(SELECT
EXTRACT(DAY FROM Orden_Compra.Fecha) as diaNumerico,
( CASE DAYOFWEEK(Orden_Compra.Fecha)
WHEN 1 THEN "Domingo"
WHEN 2 THEN "Lunes"
WHEN 3 THEN "Martes"
WHEN 4 THEN "Miercoles"
WHEN 5 THEN "Jueves"
WHEN 6 THEN "Viernes"
WHEN 7 THEN "Sabado"
ELSE ""
END) as diaEnTexto,
( CASE MONTH(Orden_Compra.Fecha)
WHEN 1 THEN "Enero"
WHEN 2 THEN "Febrero"
WHEN 3 THEN "Marzo"
WHEN 4 THEN "Abril"
WHEN 5 THEN "Mayo"
WHEN 6 THEN "Junio"
WHEN 7 THEN "Julio"
WHEN 8 THEN "Agosto"
WHEN 9 THEN "Septiembre"
WHEN 10 THEN "Octubre"
WHEN 11 THEN "Noviembre"
WHEN 12 THEN "Diciembre"
ELSE ""
END ) as mesEnTexto,
EXTRACT(YEAR FROM Orden_Compra.Fecha ) as elAnio
FROM Orden_Compra
WHERE
Orden_Compra.id = ? ) t1
jueves, febrero 28
viernes, febrero 22
Semana de Locura
Esta semana ha sido fatal, en mi trabajo todo mundo enfermo de gripa y tos, nadie se salvo, fui el que mas resisti al contagio, sin embargo fue imposible escapar, fue una emboscada natural, lo mas cruel es que lleve ese virus a Casa, asi que tambien mi hermosa hija y esposa enfermaron, ya me cuidare mas para no enfermar, pues asi enfermo no te puedes concentrar bien en este tipo de trabajos "Desarrollo de Software".
Tambien por lo mismo de la enfermedad, perdi tiempo en PSP, mi intencion era presentar el examen de Certificacion de PSP el lunes 25 de Febrero de 2006, incluso ya estaba programado, pero no se dieron las condiciones para ello, sin embargo tengo el proposito de prepararme por mi cuenta y presentarlo posteriormente.
Que bueno ke es viernes. mi gripa ha disminuido, Sophirita esta mejor y habra tiempo de recuperarse...
Tambien por lo mismo de la enfermedad, perdi tiempo en PSP, mi intencion era presentar el examen de Certificacion de PSP el lunes 25 de Febrero de 2006, incluso ya estaba programado, pero no se dieron las condiciones para ello, sin embargo tengo el proposito de prepararme por mi cuenta y presentarlo posteriormente.
Que bueno ke es viernes. mi gripa ha disminuido, Sophirita esta mejor y habra tiempo de recuperarse...
lunes, febrero 11
Sentencias IF Anidadas en MySql
Hoy voy a hablar sobre la sentencia IF de mysql, la cual resulta muy util en consultas, un ejemplo muy sencillo de usarla seria el siguiente:
Supongamos que tenemos la tabla resultados, y verificamos si el campo minimo es menor que 3, si es asi entonces Semaforo valdra "Rojo", de lo contrario valdra "Amarillo":
if(resultados.minimo < 3, "Rojo","Amarillo") as Semaforo
Es un if sencillo, la primer coma seria el THEN, la segunda coma indica el ELSE.
En cualquier lenguaje de Programacion, los if anidados son muy comunes y faciles de codificar, pero por que no hacerlo tambien en Mysql, si, si se puede, veamos el siguiente ejemplo:
Tomemos la misma tabla de nombre resultados, la cual contiene los siguientes datos:
resultados.resultado
meta.meta
meta.minimo
meta.satisfactorio
meta.sobresaliente
Ahora, vamos a usar sentencias IF anidadas para verificar en que rango de la meta cae resultados.resultado y poner una variable llamada semaforo para que nos indique rojo,amarillo o verde, esta variable la podemos usar ya sea para una Grafica o simplemente para indicara al usuario que el resultado esta en determinada luz, y pues quedaria asi:
if (resultados.resultado <=meta.minimo,"Rojo",
( if(resultado.valor between meta.minimo and meta.satisfactorio,"Amarillo","Verde"))
) as Semaforo
Si resultados.resultado <= meta.minimo, entonces semaforo Rojo y aqui entra el ELSE Si resultado.resultado esta entre minimo y satisfactorio entonces semaforo amarillo de lo contrario semaforo Verde. Listo, ya hicimos IF's anidados. Siguiente tema: Crear pivotes en mysql.
Supongamos que tenemos la tabla resultados, y verificamos si el campo minimo es menor que 3, si es asi entonces Semaforo valdra "Rojo", de lo contrario valdra "Amarillo":
if(resultados.minimo < 3, "Rojo","Amarillo") as Semaforo
Es un if sencillo, la primer coma seria el THEN, la segunda coma indica el ELSE.
En cualquier lenguaje de Programacion, los if anidados son muy comunes y faciles de codificar, pero por que no hacerlo tambien en Mysql, si, si se puede, veamos el siguiente ejemplo:
Tomemos la misma tabla de nombre resultados, la cual contiene los siguientes datos:
resultados.resultado
meta.meta
meta.minimo
meta.satisfactorio
meta.sobresaliente
Ahora, vamos a usar sentencias IF anidadas para verificar en que rango de la meta cae resultados.resultado y poner una variable llamada semaforo para que nos indique rojo,amarillo o verde, esta variable la podemos usar ya sea para una Grafica o simplemente para indicara al usuario que el resultado esta en determinada luz, y pues quedaria asi:
if (resultados.resultado <=meta.minimo,"Rojo",
( if(resultado.valor between meta.minimo and meta.satisfactorio,"Amarillo","Verde"))
) as Semaforo
Si resultados.resultado <= meta.minimo, entonces semaforo Rojo y aqui entra el ELSE Si resultado.resultado esta entre minimo y satisfactorio entonces semaforo amarillo de lo contrario semaforo Verde. Listo, ya hicimos IF's anidados. Siguiente tema: Crear pivotes en mysql.
viernes, febrero 8
Javascript para formatear un numero a determinados decimales o bien con formato de moneda.
En ocasiones se nos presenta la necesidad de usar javascript para formatear un numero a determinados decimales, o bien con separadores de miles, buscando en el bendito Google, encontre este objeto creado en JavaScript, el cual es muy sencillo de usar, he aqui algunos ejemplos:
Numero: 85000
var numero = new oNumero(85000);
rango=numero.formato(2,true);
Salida = 85,000.00
var numero = new oNumero(85000);
rango=numero.formato(2,false);
Salida = 85000.00
function oNumero(numero)
{
//Propiedades
this.valor = numero || 0
this.dec = -1;
//Métodos
this.formato = numFormat;
this.ponValor = ponValor;
//Definición de los métodos
function ponValor(cad)
{
if (cad =='-' || cad=='+') return
if (cad.length ==0) return
if (cad.indexOf('.') >=0)
this.valor = parseFloat(cad);
else
this.valor = parseInt(cad);
}
function numFormat(dec, miles)
{
var num = this.valor, signo=3, expr;
var cad = ""+this.valor;
var ceros = "", pos, pdec, i;
for (i=0; i < dec; i++)
ceros += '0';
pos = cad.indexOf('.')
if (pos < 0)
cad = cad+"."+ceros;
else
{
pdec = cad.length - pos -1;
if (pdec <= dec)
{
for (i=0; i< (dec-pdec); i++)
cad += '0';
}
else
{
num = num*Math.pow(10, dec);
num = Math.round(num);
num = num/Math.pow(10, dec);
cad = new String(num);
}
}
pos = cad.indexOf('.')
if (pos < 0) pos = cad.lentgh
if (cad.substr(0,1)=='-' || cad.substr(0,1) == '+')
signo = 4;
if (miles && pos > signo)
do{
expr = /([+-]?\d)(\d{3}[\.\,]\d*)/
cad.match(expr)
cad=cad.replace(expr, RegExp.$1+','+RegExp.$2)
}
while (cad.indexOf(',') > signo)
if (dec<0) cad = cad.replace(/\./,'')
return cad;
}
}//Fin del objeto oNumero:
fuente
http://javascript.espaciolatino.com/scripts/formateanum.htm
Numero: 85000
var numero = new oNumero(85000);
rango=numero.formato(2,true);
Salida = 85,000.00
var numero = new oNumero(85000);
rango=numero.formato(2,false);
Salida = 85000.00
function oNumero(numero)
{
//Propiedades
this.valor = numero || 0
this.dec = -1;
//Métodos
this.formato = numFormat;
this.ponValor = ponValor;
//Definición de los métodos
function ponValor(cad)
{
if (cad =='-' || cad=='+') return
if (cad.length ==0) return
if (cad.indexOf('.') >=0)
this.valor = parseFloat(cad);
else
this.valor = parseInt(cad);
}
function numFormat(dec, miles)
{
var num = this.valor, signo=3, expr;
var cad = ""+this.valor;
var ceros = "", pos, pdec, i;
for (i=0; i < dec; i++)
ceros += '0';
pos = cad.indexOf('.')
if (pos < 0)
cad = cad+"."+ceros;
else
{
pdec = cad.length - pos -1;
if (pdec <= dec)
{
for (i=0; i< (dec-pdec); i++)
cad += '0';
}
else
{
num = num*Math.pow(10, dec);
num = Math.round(num);
num = num/Math.pow(10, dec);
cad = new String(num);
}
}
pos = cad.indexOf('.')
if (pos < 0) pos = cad.lentgh
if (cad.substr(0,1)=='-' || cad.substr(0,1) == '+')
signo = 4;
if (miles && pos > signo)
do{
expr = /([+-]?\d)(\d{3}[\.\,]\d*)/
cad.match(expr)
cad=cad.replace(expr, RegExp.$1+','+RegExp.$2)
}
while (cad.indexOf(',') > signo)
if (dec<0) cad = cad.replace(/\./,'')
return cad;
}
}//Fin del objeto oNumero:
fuente
http://javascript.espaciolatino.com/scripts/formateanum.htm
jueves, enero 24
Varias de MYSQL
Como hacer un respaldo de una base de datos en MYSQL, desde consola.
mysqldump -u root -p nombrebd > archivodestino.sql
Y ahora, como, desde consola importar el respaldo anterior:
Nos colocamos en el directorio bin de mysql y tecleamos el siguiente comando:
mysql -u root -p nombreBDdondeSeImportara < "rutaynombredelscriptACargar sql" si tienes password en el usuario root, te lo pedira.
lunes, enero 14
Como determinar el formato de salida de un reporte ?

Como ya sabemos, BIRT es un reporteador muy versatil, muy facil de usar y con muchas opciones, incluido el poder insertar codigo javascript, bueno, pues hay veces que se necesitan ciertas cosas, que solo con javascript se logran, por ejemplo, como determinar con codigo la salida o el formato en que se desplegara el reporte, en este caso, yo deseo ocultar los hiperlinks cuando el formato de salida de x reporte sea pdf, y la manera de hacerlo es simplemente asi, usando el objeto reportContext:
if (reportContext.getOutputFormat( )=="html")
{
hiperlinkdeseado
}
Significa que si el formato de salida es html, entonces que si muestre el hiperlink sobre ese dato, de lo contrario, simplemente no hace nada.
Espero que a alguien le sea de utilidad...
Por cierto, aqui se puede encontrar muchisima informacion sobre BIRT, esta la descripcion y los metodos de todos los objetos usados en BIRT, habra que echarle una buena hojeada...
http://safari.adobepress.com/0321443853/ch09lev1sec2
jueves, enero 10
Personalizar una Fecha en MySQL
Si preferimos personalizar una fecha desde MySQL, lo podriamos hacer de la siguiente manera, obviamente el tipo de campo debe ser DATETIME, para poder extraer la hora:
SELECT
EXTRACT(DAY FROM Tabla.Fecha ) as diaNumerico,
( CASE DAYOFWEEK(Tabla.Fecha)
WHEN 1 THEN "Domingo"
WHEN 2 THEN "Lunes"
WHEN 3 THEN "Martes"
WHEN 4 THEN "Miercoles"
WHEN 5 THEN "Jueves"
WHEN 6 THEN "Viernes"
WHEN 7 THEN "Sabado"
ELSE ""
END) as diaEnTexto,
( CASE MONTH(Tabla.Fecha)
WHEN 1 THEN "Enero"
WHEN 2 THEN "Febrero"
WHEN 3 THEN "Marzo"
WHEN 4 THEN "Abril"
WHEN 5 THEN "Mayo"
WHEN 6 THEN "Junio"
WHEN 7 THEN "Julio"
WHEN 8 THEN "Agosto"
WHEN 9 THEN "Septiembre"
WHEN 10 THEN "Octubre"
WHEN 11 THEN "Noviembre"
WHEN 12 THEN "Diciembre"
ELSE ""
END ) as mesEnTexto,
EXTRACT(YEAR FROM Tabla.Fecha ) as elAnio,
EXTRACT(HOUR FROM Tabla.Fecha ) as laHora,
EXTRACT(MINUTE FROM Tabla.Fecha ) as elMinuto,
publicacion_convocatoria.lugar_celebracion_actos as lugar_apertura_tecnica
FROM publicacion_convocatoria
WHERE
Tabla.id = ?
Ya estando en BIRT, formamos nuestra cadena a Mostrar, la cual quedaria mas o menos asi:
"La junta se llevara a cabo el dia "+dataSetRow["diaEnTexto"]+" "+dataSetRow["diaNumerico"]+ " de "+dataSetRow["mesEnTexto"]+" de "+dataSetRow["elAnio"]+" a las "+dataSetRow["laHora"]+":"+dataSetRow["elMinuto"]+" horas " + " en "+dataSetRow["lugar"]+"."
Mostrando algo asi como esto:
"La junta se llevara a cabo el dia Miercoles 18 de Septiembre de 2007 a las 18:00 horas en XLugar...
SELECT
EXTRACT(DAY FROM Tabla.Fecha ) as diaNumerico,
( CASE DAYOFWEEK(Tabla.Fecha)
WHEN 1 THEN "Domingo"
WHEN 2 THEN "Lunes"
WHEN 3 THEN "Martes"
WHEN 4 THEN "Miercoles"
WHEN 5 THEN "Jueves"
WHEN 6 THEN "Viernes"
WHEN 7 THEN "Sabado"
ELSE ""
END) as diaEnTexto,
( CASE MONTH(Tabla.Fecha)
WHEN 1 THEN "Enero"
WHEN 2 THEN "Febrero"
WHEN 3 THEN "Marzo"
WHEN 4 THEN "Abril"
WHEN 5 THEN "Mayo"
WHEN 6 THEN "Junio"
WHEN 7 THEN "Julio"
WHEN 8 THEN "Agosto"
WHEN 9 THEN "Septiembre"
WHEN 10 THEN "Octubre"
WHEN 11 THEN "Noviembre"
WHEN 12 THEN "Diciembre"
ELSE ""
END ) as mesEnTexto,
EXTRACT(YEAR FROM Tabla.Fecha ) as elAnio,
EXTRACT(HOUR FROM Tabla.Fecha ) as laHora,
EXTRACT(MINUTE FROM Tabla.Fecha ) as elMinuto,
publicacion_convocatoria.lugar_celebracion_actos as lugar_apertura_tecnica
FROM publicacion_convocatoria
WHERE
Tabla.id = ?
Ya estando en BIRT, formamos nuestra cadena a Mostrar, la cual quedaria mas o menos asi:
"La junta se llevara a cabo el dia "+dataSetRow["diaEnTexto"]+" "+dataSetRow["diaNumerico"]+ " de "+dataSetRow["mesEnTexto"]+" de "+dataSetRow["elAnio"]+" a las "+dataSetRow["laHora"]+":"+dataSetRow["elMinuto"]+" horas " + " en "+dataSetRow["lugar"]+"."
Mostrando algo asi como esto:
"La junta se llevara a cabo el dia Miercoles 18 de Septiembre de 2007 a las 18:00 horas en XLugar...
Personalizando una Fecha en JavaScript
En BIRT hay ocasiones en que necesitamos personalizar una fecha, para que aparezca como Martes 27 de Abril de 2008, lo podemos hacer ya sea en MySQL o bien usando JavaScript, lo que acomode mejor, en este caso lo presento en JavaScript, tambien voy a publicar como hacerlo en MySQL.
// Array de los meses
var monthNames = new makeArray(12);
monthNames[0] = "Enero";
monthNames[1] = "Febrero";
monthNames[2] = "Marzo";
monthNames[3] = "Abril";
monthNames[4] = "Mayo";
monthNames[5] = "Junio";
monthNames[6] = "Julio";
monthNames[7] = "Agosto";
monthNames[8] = "Septiembre";
monthNames[9] = "Octubre";
monthNames[10] = "Noviembre";
monthNames[11] = "Diciembre";
// Array de los días
var dayNames = new makeArray(7);
dayNames[0] = "Domingo";
dayNames[1] = "Lunes";
dayNames[2] = "Martes";
dayNames[3] = "Miercoles";
dayNames[4] = "Jueves";
dayNames[5] = "Viernes";
dayNames[6] = "Sabado";
// dataSetRow["FechaVale"]; es un campo del DataSet que contenga la fecha a personalizar.
var fecha =dataSetRow["FechaVale"];
var year = dataSetRow["FechaVale"].getYear();
if (year < 2000) year = year + 1900;
function makeArray(len)
{
for (var i = 0; i < len; i++) this[i] = null;
this.length = len;
}
//Aqui formamos la cadena final, la cual sera mostrada en el reporte.
displayString= dayNames[fecha.getDay()] + " " + fecha.getDate() + " de " + monthNames[fecha.getMonth()] + " " +" de " + year+".";
// Array de los meses
var monthNames = new makeArray(12);
monthNames[0] = "Enero";
monthNames[1] = "Febrero";
monthNames[2] = "Marzo";
monthNames[3] = "Abril";
monthNames[4] = "Mayo";
monthNames[5] = "Junio";
monthNames[6] = "Julio";
monthNames[7] = "Agosto";
monthNames[8] = "Septiembre";
monthNames[9] = "Octubre";
monthNames[10] = "Noviembre";
monthNames[11] = "Diciembre";
// Array de los días
var dayNames = new makeArray(7);
dayNames[0] = "Domingo";
dayNames[1] = "Lunes";
dayNames[2] = "Martes";
dayNames[3] = "Miercoles";
dayNames[4] = "Jueves";
dayNames[5] = "Viernes";
dayNames[6] = "Sabado";
// dataSetRow["FechaVale"]; es un campo del DataSet que contenga la fecha a personalizar.
var fecha =dataSetRow["FechaVale"];
var year = dataSetRow["FechaVale"].getYear();
if (year < 2000) year = year + 1900;
function makeArray(len)
{
for (var i = 0; i < len; i++) this[i] = null;
this.length = len;
}
//Aqui formamos la cadena final, la cual sera mostrada en el reporte.
displayString= dayNames[fecha.getDay()] + " " + fecha.getDate() + " de " + monthNames[fecha.getMonth()] + " " +" de " + year+".";
martes, enero 8
Convertir Numero a Texto en JavaScript
Buscando en Google me encontre una muy buena funcion para convertir numero a Texto, especialmente echa en JavaScript, la cual me ha servido bastante para uso en BIRT, puesto que en BIRT es posible usar JavaScript, ahi les va la funcion, la cual es muy facil de usar:
Nota: Originalmente la funcion no tomaba en cuenta los decimales, es decir, solo traducia la parte entera, por ello agregue el calculo de centavos en la parte final y ya solo arme la cadena de texto a mostrar.
function letras(c,d,u)
{
var centenas,decenas,decom
var lc=""
var ld=""
var lu=""
centenas=eval(c);
decenas=eval(d);
decom=eval(u);
switch(centenas)
{
case 0: lc="";break;
case 1:
{
if (decenas==0 && decom==0)
lc="Cien"
else
lc="Ciento ";
}
break;
case 2: lc="Doscientos ";break;
case 3: lc="Trescientos ";break;
case 4: lc="Cuatrocientos ";break;
case 5: lc="Quinientos ";break;
case 6: lc="Seiscientos ";break;
case 7: lc="Setecientos ";break;
case 8: lc="Ochocientos ";break;
case 9: lc="Novecientos ";break;
}
switch(decenas)
{
case 0: ld="";break;
case 1:
{
switch(decom)
{
case 0:ld="Diez";break;
case 1:ld="Once";break;
case 2:ld="Doce";break;
case 3:ld="Trece";break;
case 4:ld="Catorce";break;
case 5:ld="Quince";break;
case 6:ld="Dieciseis";break;
case 7:ld="Diecisiete";break;
case 8:ld="Dieciocho";break;
case 9:ld="Diecinueve";break;
}
}
break;
case 2:ld="Veinte";break;
case 3:ld="Treinta";break;
case 4:ld="Cuarenta";break;
case 5:ld="Cincuenta";break;
case 6:ld="Sesenta";break;
case 7:ld="Setenta";break;
case 8:ld="Ochenta";break;
case 9:ld="Noventa";break;
}
switch(decom)
{
case 0: lu="";break;
case 1: lu="Un";break;
case 2: lu="Dos";break;
case 3: lu="Tres";break;
case 4: lu="Cuatro";break;
case 5: lu="Cinco";break;
case 6: lu="Seis";break;
case 7: lu="Siete";break;
case 8: lu="Ocho";break;
case 9: lu="Nueve";break;
}
if (decenas==1)
{
return lc+ld;
}
if (decenas==0 || decom==0)
{
return lc+" "+ld+lu;
}
else
{
if(decenas==2)
{
ld="Veinti";
return lc + ld + lu.toLowerCase();
}
else
{
return lc+ld+" y "+lu
}
}
}
function getNumberLiteral(n)
{
var m0,cm,dm,um,cmi,dmi,umi,ce,de,un,hlp,decimal;
if (isNaN(n)) {
alert("La Cantidad debe ser un valor Numérico.");
return null
}
m0= parseInt(n/ 1000000000000); rm0=n% 1000000000000;
m1= parseInt(rm0/100000000000); rm1=rm0%100000000000;
m2= parseInt(rm1/10000000000); rm2=rm1%10000000000;
m3= parseInt(rm2/1000000000); rm3=rm2%1000000000;
cm= parseInt(rm3/100000000); r1= rm3%100000000;
dm= parseInt(r1/10000000); r2= r1% 10000000;
um= parseInt(r2/1000000); r3= r2% 1000000;
cmi=parseInt(r3/100000); r4= r3% 100000;
dmi=parseInt(r4/10000); r5= r4% 10000;
umi=parseInt(r5/1000); r6= r5% 1000;
ce= parseInt(r6/100); r7= r6% 100;
de= parseInt(r7/10); r8= r7% 10;
un= parseInt(r8/1);
//r9=r8%1;
999123456789
if (n<>=1000000000)
{
tmp=n.toString();
s=tmp.length;
tmp1=tmp.slice(0,s-9)
tmp2=tmp.slice(s-9,s);
tmpn1=getNumberLiteral(tmp1);
tmpn2=getNumberLiteral(tmp2);
if(tmpn1.indexOf("Un")>=0)
pred=" Billón "
else
pred=" Billones "
return tmpn1+ pred +tmpn2;
}
if (n<10000000000>=1000000)
{
mldata=letras(cm,dm,um);
hlp=mldata.replace("Un","*");
if (hlp.indexOf("*")<0>3)
{
mldata=mldata.replace("Uno","un");
mldata+=" Millones ";
}
else
{
mldata="Un Millón ";
}
mdata=letras(cmi,dmi,umi);
cdata=letras(ce,de,un);
if(mdata!=" ")
{
if (n == 1000000) {
mdata=mdata.replace("Uno","un") + "de";
} else {
mdata=mdata.replace("Uno","un")+" mil ";
}
}
return (mldata+mdata+cdata);
}
if (n<1000000>=1000)
{
mdata=letras(cmi,dmi,umi);
cdata=letras(ce,de,un);
hlp=mdata.replace("Un","*");
if (hlp.indexOf("*")<0>3)
{
mdata=mdata.replace("Uno","un");
return (mdata +" mil "+cdata);
}
else
return ("Mil "+ cdata);
}
if (n<1000>=1)
{
return (letras(ce,de,un));
}
if (n==0)
{
return " Cero";
}
return "No disponible"
}
centavos=Math.round(dataSetRow["Importe"] * 100)-Math.floor(dataSetRow["Importe"])*100;
if (centavos)
{
Texto=getNumberLiteral(dataSetRow["Importe"]).toUpperCase()+" PESOS "+ centavos +"/100 M.N.";
}else
{
Texto=getNumberLiteral(dataSetRow["Importe"]).toUpperCase()+" PESOS 00/100 M.N.";
}
Nota: Originalmente la funcion no tomaba en cuenta los decimales, es decir, solo traducia la parte entera, por ello agregue el calculo de centavos en la parte final y ya solo arme la cadena de texto a mostrar.
function letras(c,d,u)
{
var centenas,decenas,decom
var lc=""
var ld=""
var lu=""
centenas=eval(c);
decenas=eval(d);
decom=eval(u);
switch(centenas)
{
case 0: lc="";break;
case 1:
{
if (decenas==0 && decom==0)
lc="Cien"
else
lc="Ciento ";
}
break;
case 2: lc="Doscientos ";break;
case 3: lc="Trescientos ";break;
case 4: lc="Cuatrocientos ";break;
case 5: lc="Quinientos ";break;
case 6: lc="Seiscientos ";break;
case 7: lc="Setecientos ";break;
case 8: lc="Ochocientos ";break;
case 9: lc="Novecientos ";break;
}
switch(decenas)
{
case 0: ld="";break;
case 1:
{
switch(decom)
{
case 0:ld="Diez";break;
case 1:ld="Once";break;
case 2:ld="Doce";break;
case 3:ld="Trece";break;
case 4:ld="Catorce";break;
case 5:ld="Quince";break;
case 6:ld="Dieciseis";break;
case 7:ld="Diecisiete";break;
case 8:ld="Dieciocho";break;
case 9:ld="Diecinueve";break;
}
}
break;
case 2:ld="Veinte";break;
case 3:ld="Treinta";break;
case 4:ld="Cuarenta";break;
case 5:ld="Cincuenta";break;
case 6:ld="Sesenta";break;
case 7:ld="Setenta";break;
case 8:ld="Ochenta";break;
case 9:ld="Noventa";break;
}
switch(decom)
{
case 0: lu="";break;
case 1: lu="Un";break;
case 2: lu="Dos";break;
case 3: lu="Tres";break;
case 4: lu="Cuatro";break;
case 5: lu="Cinco";break;
case 6: lu="Seis";break;
case 7: lu="Siete";break;
case 8: lu="Ocho";break;
case 9: lu="Nueve";break;
}
if (decenas==1)
{
return lc+ld;
}
if (decenas==0 || decom==0)
{
return lc+" "+ld+lu;
}
else
{
if(decenas==2)
{
ld="Veinti";
return lc + ld + lu.toLowerCase();
}
else
{
return lc+ld+" y "+lu
}
}
}
function getNumberLiteral(n)
{
var m0,cm,dm,um,cmi,dmi,umi,ce,de,un,hlp,decimal;
if (isNaN(n)) {
alert("La Cantidad debe ser un valor Numérico.");
return null
}
m0= parseInt(n/ 1000000000000); rm0=n% 1000000000000;
m1= parseInt(rm0/100000000000); rm1=rm0%100000000000;
m2= parseInt(rm1/10000000000); rm2=rm1%10000000000;
m3= parseInt(rm2/1000000000); rm3=rm2%1000000000;
cm= parseInt(rm3/100000000); r1= rm3%100000000;
dm= parseInt(r1/10000000); r2= r1% 10000000;
um= parseInt(r2/1000000); r3= r2% 1000000;
cmi=parseInt(r3/100000); r4= r3% 100000;
dmi=parseInt(r4/10000); r5= r4% 10000;
umi=parseInt(r5/1000); r6= r5% 1000;
ce= parseInt(r6/100); r7= r6% 100;
de= parseInt(r7/10); r8= r7% 10;
un= parseInt(r8/1);
//r9=r8%1;
999123456789
if (n<>=1000000000)
{
tmp=n.toString();
s=tmp.length;
tmp1=tmp.slice(0,s-9)
tmp2=tmp.slice(s-9,s);
tmpn1=getNumberLiteral(tmp1);
tmpn2=getNumberLiteral(tmp2);
if(tmpn1.indexOf("Un")>=0)
pred=" Billón "
else
pred=" Billones "
return tmpn1+ pred +tmpn2;
}
if (n<10000000000>=1000000)
{
mldata=letras(cm,dm,um);
hlp=mldata.replace("Un","*");
if (hlp.indexOf("*")<0>3)
{
mldata=mldata.replace("Uno","un");
mldata+=" Millones ";
}
else
{
mldata="Un Millón ";
}
mdata=letras(cmi,dmi,umi);
cdata=letras(ce,de,un);
if(mdata!=" ")
{
if (n == 1000000) {
mdata=mdata.replace("Uno","un") + "de";
} else {
mdata=mdata.replace("Uno","un")+" mil ";
}
}
return (mldata+mdata+cdata);
}
if (n<1000000>=1000)
{
mdata=letras(cmi,dmi,umi);
cdata=letras(ce,de,un);
hlp=mdata.replace("Un","*");
if (hlp.indexOf("*")<0>3)
{
mdata=mdata.replace("Uno","un");
return (mdata +" mil "+cdata);
}
else
return ("Mil "+ cdata);
}
if (n<1000>=1)
{
return (letras(ce,de,un));
}
if (n==0)
{
return " Cero";
}
return "No disponible"
}
centavos=Math.round(dataSetRow["Importe"] * 100)-Math.floor(dataSetRow["Importe"])*100;
if (centavos)
{
Texto=getNumberLiteral(dataSetRow["Importe"]).toUpperCase()+" PESOS "+ centavos +"/100 M.N.";
}else
{
Texto=getNumberLiteral(dataSetRow["Importe"]).toUpperCase()+" PESOS 00/100 M.N.";
}
lunes, enero 7
2008 ?

Inicio un nuevo año, un año con muchos propositos, propositos que deseo cumplir, hay muchos propositos en lo personal, familiar, economico, profesional, etc, yo creo que es muy bueno hacerse propositos, se recomienda que dichos propositos sean compartidos, es decir que se platiquen con alguien de confianza, a fin de que exista mas compromiso personal, esos propositos aparte hay que anotarlos, hay que llevar una agenda y continuamente irlos analizando, es decir donde estoy, a donde quiero llegar, y que necesito para lograr ese objetivo, y por donde empezar cada uno, el inicio de año es una buena fecha para partir, sin embargo, los propositos pueden plantearse en cualquier fecha.
Es comun que empezamos el año con una lista de propositos, que luego se van olvidando, se necesita disciplina, se necesita mucho trabajo y entusiasmo para poder cumplirlos, no hay que fijar demasiados propositos, hay que fijar los mas importantes y hacer las acciones necesarias para que se logren, hay que recordar que el tiempo es un consumible no renovable, asi que a echarle ganas.
En alguna ocasion, un consultor nos platicaba que un gran motivador se planto frente a un grupo de alumnos del Tec de Monterrey, les decia que cuando nacemos, a cada uno, Dios nos da 7 monedas de oro para gastar, son las monedas que gastaras en lo que dures con vida, sin embargo la primera y la septima no se gastan conscientemente, ya que cada moneda corresponde a una decena de años, los primeros 10 años no tenemos todavia una vision apropiada de lo que sera nuestra vida en un futuro, la ultima moneda, la septima que comprende de los 60 a los 70 años, ya estamos casi de bajada (todo depende de la vida que lleves), ya es la edad de enfermedades para la mayoria de los humanos, aunque no siempre es asi., por lo cual nos quedan 5 monedas para gastar, la gran mayoria de esos jovenes que escuchaban al consultor apenas si habian gastado 2 monedas, todavia les quedaban cuatro o cinco.
De pronto se levanto un señor de 50 años, y dijo, como puede decirnos eso, yo tengo 50 años y me ha dado a entender que ya solo me queda una moneda, que ya no puedo hacer casi nada, el consultor le dijo, si, tiene razon, pero recuerde que esa moneda tiene 10 años, si traduce esos diez años en dias serian alrededor de 3650 dias, si lo calcula en horas, serian 87600 horas, traducido en minutos serian 5256000, asi que usted decide como gasta su moneda.
Bueno, pues los invito a que gastemos cada quien nuestras monedas, hay que gastarlas bien, hay que ser buenas personas, buenos amigos, buenos padres, buenos hijos, etc...
Suscribirse a:
Entradas (Atom)