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...

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+".";

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.";
}

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...

viernes, diciembre 21

Manejo de Fechas "0000-00-00" en BIRT

En BIRT Reports, cuando manejas campos de fecha y estos tienen el valor "0000-00-00", uno usualmente trata de darle un formato, como es dd/mm/yyyy, pero cuando la fecha es 0000-00-00 el BIRT Envia el siguiente mensaje de error:

Data (id = 223):
Cannot get the date value from column: 5 Cannot get date value in the result set. SQL error: Value '0000-00-00' can not be represented as java.sql.Date

Esto es porque 0000-00-00 no es una fecha, pero tampoco es un valor null, entonces el BIRT no lo puede representar o formatear.

Para resolver este problema, hay que meter una condicion en nuestro Data Set o consulta sql, y seria de la siguiente manera:

if (Tabla.Fecha="0000-00-00",null,Tabla.Fecha) as miFecha o bien

if (Tabla.Fecha="0000-00-00",null,DATE_FORMAT(Tabla.Fecha,"%d-%m-%Y")) as miFecha

significa que si el campo fecha es igual a 0000-00-00 entonces que en vez de arrojar el valor 0000-00-00, le ponga un valor null, de lo contrario que si ponga el valor que tenga el campo fecha., o bien desde mysql ya mandarlo con formato hacia birt, usando el DATE_FORMAT

Una vez modificada la consulta SQL, en el BIRT hay que agregar esta condicion:

if (dataSetRow.Fecha!=null)
{
dataSetRow.fecha
}else {
"Sin Fecha"
}

y de esta manera ya no tendremos problemas con las fechas con valor 0000-00-00.

Leer un libro de aqui a Chicago

Sali de la central Camionera en Zacatecas, Zacatecas, rumbo a Chicago, para no aburrirme tome un libro, titulado Anhelo de Vivir, el cual habla sobre la vida de Vincent Van Gogh, no se mucho de pintura, pero me encanta la historia, ya sea nacional o bien de otras naciones y/o personajes, pense que por ser un libro que habla sobre un pintor, este me iba a resultar aburrido, sin embargo, resulto ser uno de mis libros favoritos, ya que resulta impresionante la vida de Vincent Van Gogh, como pudo ser que teniendo tantas obras que ahora valen millones, en vida el pobre apenas si vendio una obra, y eso parece ser que se la compraron por compromiso, o por hacerle un favor, parece ser que esa obra u obras que logro vender, se las compro su Tio, lo que mas me gusto de la vida de Van Gogh, fue su pasion por lograr lo que el deseaba, lograr la perfecciòn en sus obras, lograr darles vida , cualquiera que vea una obra de Van Gogh, puede apreciar facilmente como si esa obra tuviera vida, y mucho, mucho color, mucha luz, ya que a el le encantaba reflejar eso.

Que lastima que haya vivido en la miseria, siendo uno de los mejores, y que impresionante que Theo, su hermano, lo cuidara hasta el ultimo momento, como si fuera Van Gogh un niño, al cual unicamente le interesaba pintar, a tal grado que llego a la locura cuando estuvo viviendo en Arles, en donde parecia ser que la gente enloquecia, y no es para menos con el caloron que hace ahi.

El libro me gusto tanto que antes de llegar a Chicago, ya lo habia leido todo, alrededor de 500 paginas, se los recomiendo, ya que detalla muy bien toda la vida de Van Gogh.


Bueno, finalmente llegue a Chicago, luego de pasar varias horas en centrales de San Antonio, Memphis y para colmo ya casi llegando a Chicago, bajo una fuerte nevada, se dañaron los limpiaparabrisas del camion, se acabo el turno de el chofer, simplemente nos dejo ahi cerca de una tienda - restaurant, con un buen de frio y nieve, para esperar otras largas 5 horas, hasta que por fin llego otro chofer y nos llevo hasta Chicago, a donde llegue ya casi alucinando por pasar tanto tiempo en camion............