miércoles, 6 de septiembre de 2017

Al exportar Jasper a Excel los formatos numéricos se guardan como texto

En Jasper Reports existe la posibilidad de exportar a Excel un informe. Sin embargo, por defecto, los
campos numéricos se guardan como texto. En esas celdas, se incluye además el error "El número de esta celda tiene formato de texto o va precedido por un apóstrofo".

Para solucionar este problema hay que incluir la siguiente línea en la parte de properties del fichero JRXML.

<property name="net.sf.jasperreports.export.xls.detect.cell.type" value="true" />

En la herramiente iReport, que es la que yo utilizo, no existe ninguna opción para indicarle esto, por lo tanto hay que editar el fichero.

jueves, 2 de marzo de 2017

Ver XWindows desde cliente ssh putty en Windows

Existen varias opciones para poder ver las XWindows de Linux en un cliente de ssh o telnet como puede ser putty.

Una de ellas, muy sencilla, es mediante Xming. Xming instala en Windows el servidor de X Window de Linux.

Una vez instalado, se puede acceder a la conexión deseada en putty y hay que hacer una configuración sencilla. Ir a las opciones de putty ir a SSH / X11. En X11 hay que marcar Enable X11 Forwarding para la conexión a la que vamos a acceder.


Una vez hecho esto hay que acceder al terminal de la máquina y teclear lo siguiente:
export DISPLAY
echo $DISPLAY

Y ya es posible ejecutar la ventana que necesitemos, por ejemplo:
firefox http://localhost

jueves, 5 de enero de 2017

Como obtener la contraseña detrás de los puntos en Toad

En algunas ocasiones perdemos las passwords de nuestras bases de datos Oracle y el único lugar en el que la tenemos registrada es en la conexión creada en Toad.
No es posible visualizar ni copiar la clave que esta oculta tras los típicos puntos negros.
Las claves en Toad se guardan en el fichero CONNECTIONPWDS.INI, el cual está encriptado y acceder a él no servirá de nada.
Sin embargo existe un truco para poder visualizarla.



1. Conéctate a una base de datos para que se active el menú que vamos a usar a continuación.
2. En el menú Database accede a Create / DBLink.
3. Rellena Link Name y selecciona la base de datos de la que quieras recuperar la clave.
4. Ahora pulsa en el botón Show SQL y ahí la tienes: identified by "TU_CLAVE_PERDIDA"

jueves, 9 de junio de 2016

Incrementar la clave primaria de una tabla de Oracle cuando se inserta un nuevo registro

Es muy habitual que cada vez que se inserte un nuevo registro en una tabla queramos que la clave primaria se incremente secuencialmente.
MySQL nos proporciona el atributo AUTO_INCREMENT y por su parte SQL Server ofrece el atributo IDENTITY. Sin embargo, Oracle no tiene un atributo de este tipo así que para tener esta funcionalidad hay que crear algunos elementos auxiliares.

Será necesario, por un lado crear una secuencia y por otro un trigger que detecte cuando se inserta un nuevo registro en la tabla y que utilice la secuencia para asignarle el valor siguiente a la clave primaria.

Lo veremos con un ejemplo. Tenemos una tabla coches en la que se registra marca y modelo. La clave primaria el un código de coche que debe ser incremental.

CREATE TABLE COCHES
(codigo_coche number primary key,
marca VARCHAR2(25) NOT NULL,
modelo VARCHAR2(25) NOT NULL);


Ahora crearemos una secuencia que contendrá el último valor que se le ha dado a codigo_coche, la creamos así:

CREATE SEQUENCE scoches
START WITH 1
INCREMENT BY 1;


Si utilizamos directemente la secuencia en un insert se haría de la siguiente manera:

INSERT INTO COCHES (codigo_coche, marca, modelo)
VALUES (scoches.nextval, ‘Ford’, ‘Focus’);


Ahora vamos ha crear un trigger para no tener que preocuparnos de insertar el scoches.nextval cada vez que vamos a insertar un nuevo registro en la tabla. El disparador, antes de que se inserte en la tabla meterá en codigo_coche el siguiente valor de la secuencia:

CREATE TRIGGER TRIG_COCHES
BEFORE INSERT ON COCHES
FOR EACH ROW
BEGIN
SELECT scoches.NEXTVAL INTO :NEW.codigo_coche FROM DUAL;
END;


Ya está, ahora será mucho más sencillo insertar registros en la tabla COCHES, pues no será necesario tener en cuenta el siguiente valor de la secuencia, el trigger se encarga de esta tarea:

INSERT INTO COCHES (marca, modelo)
VALUES (‘Renault’, ‘Megane’);


martes, 24 de mayo de 2016

No es posible editar TNSNames desde Toad

Es posible que en Toad veamos un aspa roja en el botón TNSNames Editor.
En este caso es posible incluir conexiones en toad, pero no mediante tnsnames. Puede que si en la conexión utilizamos la pestaña TNS y es una cadena muy larga, se repite en la parte inferior y no vemos el número de registros updateados, insertados o borrados.
Esto se soluciona configurando nuestras conexiones en TNSnames.
No poder ver el TNSNames editor se debe a que no tenemos creado el fichero tnsnames.ora en la ruta adecuada.
Para comprobar cuál es la ruta en la que hay que crear el fichero tnsnames.ora lo más sencillo es ver la ruta que tiene alguno de los programas del cliente de oracle. Basta con acceder a en los programas de Windows, oracle cliente 11g o similar y con clic derecho en alguno de los programas ver en qué ruta está ubicado.
Pongamos que está en C:\app\product\11.2.0\client_1 entonces la ruta en la que debemos crear el tnsnames.ora es C:\app\product\11.2.0\client_1\network\admin
Con esto ya podremos ver activa la pestaña de Tnsnames editor en Toad.



sábado, 21 de mayo de 2016

Oracle constraint still applying after dropping it

The reason for this is that the index of this constraint was not deleted.
You just have to drop the index.
For more detail check this stackoverflow article

domingo, 15 de mayo de 2016

Quitar mensaje de Windows XP original



Cuando tenemos una copia de Windows XP que no es original nos aparecerá un molesto mensaje, que además nos quita nuestro fondo de escritorio y lo pone en negro.
En la parte inferior derecha de la pantalla aparecerá el aviso que dice esto:
Podría ser victima de una falsificación de software.
Esta copia de Windows no ha superado el proceso de validación de Windows original.

Quitar este aviso es muy sencillo. Basta con crear un fichero de texto con el bloc de notas y copiar el siguiente código:

taskkill /im wgatray.exe 
Del c:\Windows\System32\WgaTray.exe 
Del c:\Windows\System32\dllcache\WgaTray.exe 
echo Windows Registry Editor Version 5.00 >%temp%\WGANFIX.REG 
echo. >>%temp%\WGANFIX.REG 
echo [-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Notify\WgaLogon] >>%temp%\WGANFIX.REG 
regedit /s %temp%\WGANFIX.REG 
del %temp%\WGANFIX.REG 
del c:windows\system32\wgalogon.dll 
del c:windows\system32\dllcache\wgalogon.dll 

Una vez copiado, guardar el fichero con el nombre deseado, pero en lugar de guardarlo como .txt guardarlo como .bat.
Por ejemplo, llamar al fichero quitaraviso.bat y guardar.
Seguidamente hacer doble clic en el fichero .bat guardado y reiniciar el equipo.
Problema resuelto ;)