domingo, 30 de octubre de 2011

Simulación de la sentencia continue en PL/SQL

En ocasiones se nos da la circunstancia de que dentro de bucle nos pude interesar ejecutar cierta parte del código siempre que se cumpla una condición, no haciendo nada más en esa iteración en caso contrario. Lo normal sería hacerlo más o menos así (en todos estos suspuestos se sobreentiende que tenemos al menos una condición de salida para el bucle):

(...)
LOOP
    (...)
    IF test THEN
        -- Código a ejecutar
        (...)
    END IF;
END LOOP;

(...)


La cosa se complica si tenemos varios de esos tests:

(...)
LOOP
    (...)
    IF test1 THEN
        -- Código a ejecutar test1
        (...)

        IF test2 THEN
            -- Código a ejecutar test2
            (...)
        END IF;

        (...)
    END IF;
END LOOP;
(...)


De aquí se puede llegar a la conclusión de que si son muchas las condiciones a comprobar, el programa puede llegar a ser bastante ilegible puesto que se hacen muchos anidamientos de sentencias IF.

viernes, 21 de octubre de 2011

Insertar imágenes en Oracle Reports

Existen varias maneras de incluir imágenes en nuestros reports. En este artículo os hablaré de algunas de esas  posibilidades.

La primera consiste en incrustar directamente la imagen. Para ello nos vamos al diseño del informe y desde el menú Insertar → Imagen seleccionamos la imagen que deseemos. Esta manera es la más sencilla, pero tiene dos inconvenientes, sobre todo si utilizamos una misma imagen (como un logotipo) en muchos reports diferentes: el tamaño del fichero del report aumenta puesto que la imagen va incrustada, y si en un momento dado hubiera que sustituir la imagen por otra habría que modificar los reports uno a uno.

viernes, 14 de octubre de 2011

Commit sin validación previa

He aquí lo que dice Oracle sobre la instrucción COMMIT cuando se ejecuta en un formulario de Forms:
“Causes Oracle Forms to update data in the database to match data in the form. Oracle Forms  first validates the form, then, for each block in the form, deletes, inserts, and updates to the database, and performs a database commit. As a result of the database commit, the database releases all row and table locks.”
Finalmente advierte lo siguiente:
“If you use a PL/SQL COMMIT statement in an anonymous block or a form-level procedure, Oracle Forms interprets that statement as a call to the COMMIT_FORM built-in”. Resumiendo, no es posible hacer un COMMIT sin evitar la validación de los datos modificados en los bloques.

domingo, 2 de octubre de 2011

Cómo crear en Forms un canvas tabular con scrollbar vertical y horizontal

Hola a todos y bienvenidos a este espacio web en el cual pretendo compartir con la comunidad mis conocimientos sobre PL/SQL, Oracle Forms y Reports fruto de 10 años de experiencia con estas herramientas.

Mi intención no es más que dar a conocer ciertos trucos o técnicas que pueden servir de gran ayuda sobre todo a los que lleváis poco tiempo trabajando con ellas, aunque en ocasiones es posible que resulte interesante a los más expertos. En cualquier caso, espero que os sea de utilidad.


Hoy voy a empezar explicando cómo se le puede poner a un canvas tabular barras de desplazamiento horizontales y verticales al mismo tiempo. Algo tan aparentemente trivial no lo es en Forms, puesto que en principio es posible hacerlo de manera sencilla, pero luego no funciona como es de esperar.