viernes, 11 de julio de 2008

Consulta en SQL que te muestre un campo por defecto

Necesitaba una consulta que me mostrara un campo de un registro por defecto y luego el resto de los registros. En principio probé con UNION pero me estuve liando poco y era engorroso.

Al final es más fácil de lo que parecía.

SELECT campo FROM tabla ORDER BY campo=condicion DESC campo ASC


en mi caso era tal que:

select nombre from poblacion order by nombre='SEVILLA' desc,nombre asc


Esto me mostraba como primera opcion al registro cuya población sea Sevilla, y posteiormente el resto de registros ordenador.

Si por el contrario queremos que Sevilla sea la ultima opción debemos cambiar 'desc' por 'asc', nos kedaría:

select nombre from poblacion order by nombre='SEVILLA' desc,nombre asc


PD:

Debo agradecer a Noelia la ayuda mostrada para conseguir esta magnidica consulta, puesto que sin ella todavía estaría dandome chocazos contra la pared ^_^.

jueves, 10 de julio de 2008

Cambio de nombre de dirección

Puesto que este blog empezó siendo un blog para un curso que poco a poco he ido... digamos que de vez en cuando le echaba un rato para copiar pegar cosas de otros sitios... he decidido cambiarle el nombre de la dirección para que sea 1 poco más personal.

Antiguamente se llamaba:

http://cea-victorortega.blogspot.com/

Ahora lo he cambiado por:

http://victorort.blogspot.com/

Supongo que nadie habrá puesto un enlace de mi humilde página pero si es así que cambie la dirección para evitar problemas de redirección.

Un saludo.

PD: Sois libres de comentar todas mis entradas, tanto rectificamer, como agradecermelo si ha alguien le ha servido. Puesto que eso me hará seguir adelante.

martes, 8 de julio de 2008

Añadir código PHP al blog

Si deseas aportar una ayuda a los demás visitantes y quieres comentar algo de código (PHP, ASP, JSP, etc) y tienes problemas al mostrarlo porque tu navegador reconoce esa parte de código como código propio usa la siguiente tabla para escribir símbolos como '<','>'.

Enlace.

Formulario que adjunte ficheros y controle tldes, eñes (ñ) y simbolos extraños

Buenas, yo estuve pegándome con un problema que tenía a la hora de elaborar un formulario dinámico que también adjuntara ficheros; el problema erea que cuando ponía a elegir entre el turno de "mañana" o el de "tarde", si se seleccionaba el de "mañana" recibía "ma#na", un símbolo extraño como 'ñ' (y a veces se comia la siguiente letra), asímismo hacia lo mismo con las tildes, º y demás simbolos extraños.

El problema me lo daba el atributo 'enctype="multipart/form-data"' del FORM que nos permite adjuntar ficheros, por lo tanto si lo quitamos nos traducirá bien los caracteres "extraños" pero no me dejaría adjuntar ficheros o por el contrario añadir el atributo enctype pero no tener controlado las tildes, eñes, etc.

Después de buscar entre varias páginas vi que en la mayoría llegaban a la misma conclusión, la codificicación.

En un foro resuelven el tema de la codificación comprobando que tipo de codificación se hace mediante una función, pero a mi no me solucionaba nada puesto que mi formulario no es estático y no dispongo de campos fijos que verificar.

Acto seguido encuentro otro en el que lo solucionan añadiendo en la cabecera (HEAD) lo siguiente:

<meta equiv="Content-Type" content="text/html;charset=UTF-8">

Pero no me dió resultados.

Buscando por el amplio mundo de internet descubrí un atributo llamado "accept-charset" del formulario (FORM) que permite cambiar la codificación.

Tan solo hay que añadir a nuestro FORM el atributo 'accept-charset="utf-8"'

<form id="formUserData" name="formUserData" action="/usuarios/guardar/" method="post" accept-charset="utf-8">

A mi me funcionó, quizás alguna de las tres opciones propuestas te puedan servir a la hora de realizar un formulario que permita adjuntar ficheros.

miércoles, 2 de julio de 2008

Vuelta al mundo...

Pues después de mi estancia en París y tras haber estado en la World Wide Invitational 2008 de Blizzard y haber disfrutado con todo lo que había montado, ahora me toca posar los pies en la tierra y empezar otra vez con el trabajo.

A ver si tengo tiempo y pongo algo nuevo que tengo esto 1 poco abandonado.

Saludos.

viernes, 30 de mayo de 2008

Plantillas en Groovy

Las plantillas se harán en dos partes, una que se hará en la parte del Groovy, que es donde cargaremos todos los datos y donde generaremos nuestra plantilla y otra parte será la plantilla en si, que en este caso lo haremos con OpenOffice.

En la parte del Groovy necesitamos que nos manden un mapa del tipo [clave,valor], por ejemplo ["Nombre","Juan"](Recordad que en el mapa podeis meter varia claves asi como nombre, apellidos, etc.), y una vez recibido el mapa y sabiendo donde esta la plantilla que vamos a usar solo nos faltaría generar el código:

def mapa=asociaNombresCampo(datos);//CREA UN MAPA DEL TIPO mapa[clave:valor];
DocumentTemplateFactory templateFactory = new DocumentTemplateFactory();
File templateFile=getTestFile("plantilla.odt");
try{
File openDocumentFile = grabarFichero();
DocumentTemplate template= templateFactory.getTemplate(templateFile);
templateFile.deleteOnExit();
template.createDocument(mapa, new FileOutputStream(openDocumentFile));
}catch (Exception e){}



protected File grabarFichero() throws IOException {
String rutaDestino= "rutadestino";
File tempFile = new File(rutaDestino+"nombrePlantilla.odt");
return tempFile;
}


En el apartado de la plantilla, sólo nos faltaría definir cómo queremos que sea nuestra apariencia y decirle que asocie los datos que hemos mandado en el mapa a valores en nuestra plantilla. Para eso pulsaremos CTRL+F2 y en la pestaña de Functions, seleccionar Text Field. Poned un nombre que sea recibido, por ejemplo 'Nombre!', (el signo '!' sirve para decirle que este parametro puede venir vacio, si no lo haces dara un error). Ahora solo faltaría darle un nombre representativo para que asocies ese campo y te acuerdes a que parametro está asociado.

En este ejemplo vamos a hacer una plantilla de un carnet, por lo tanto sólo nos vendra un mapa del tipo clave valor de una persona.

Usaremos algo así:

Titular: Nombre* Apellido1* Apellido2*
Teléfono de contacto: Telefono*

*: Campos asociados al mapa.

Para la plantilla usaremos OpenOffice.
Para hace que se rellene con datos que le hemos mandados debemos pulsar CTR+F2 y nos momstrará una venta como la siguiente:

Pulsaremos en la pestaña FUNCTIONS, y seleccionamos el Input Field. Ahora pondremos uno de las claves que recibimos, en este caso recibimos un nombre, por lo tanto escribiremos 'nombre!' (la ! sirve para que no de fallos si viene vacio o nulo).


Ahora ya sabe que recibe un valor llamado nombre, al pulsar en insert nos pedirá que le pongamos un nombre para hacerle referencia, ponedle 'Nombre' para saber que recibiremos el nombre.


Una vez que aceptemos ya tendremos asignado a nuestra plantilla un nombre que será introducido por nuestra aplicación.
Cerramos esta ventana y nos marcará a nuestro campo 'Nombre' con un fondo más oscuro.


Bueno, ya sabemos introducir un campo, tan solo hace falta repetir esta operación tantas veces como necesitemos cojer datos de nuestro mapa. Por ejemplo pondremo los Apellidos para poner el nombre completo en este ejemplo. Y también añadiremos un telefono de contacto, por lo tanto nuestra aplicación quedará:



Ya sólo nos faltaría el diseño de nuestra plantilla, es decir si vamos ha hacer un carnet deberíamos recortar un poco para que quede más ancho que largo y ponerle una imagen de fondo.

Esto último os lo dejo a ustedes, que va a gusto del consumidor.

miércoles, 21 de mayo de 2008

Converter

Las clases destinadas a realizar conversiones deberán implementar la interfaz Converter, que tiene dos métodos:

▪ Object getAsObject(FacesContext context, UIComponent component, String newValue)
▪ String getAsString(FacesContext context, UIComponent component, Object value)

En el primero de ellos convierte una cadena de texto a un objeto, y en la segunda al contrario, de un objeto a una cadena de texto.

Por lo tanto podemos ahcer que recibiendo un idUsuario podramos mostrar los datos de Nombre + Apellidos, por ejemplo.

Para ello debemos agregar en nuestro fichero de configuracion face-config:


Y para usarlo debemos añadir en nuestro jsp:


Otros recursos:

· Adictos al trabajo.