Quantcast
Channel: Oracle Blog : apex
Viewing all 142 articles
Browse latest View live

Oracle REST Data Services 3.0.5 is available

$
0
0

Friends,

Oracle REST Data Services 3.0.5 is available for download. The link is http://www.oracle.com/technetwork/developer-tools/rest-data-services/downloads/index.html

A recap of what's new in Oracle REST Data Services 3.0.x onwards:

The previous version 2.0.x required Oracle Application Express (APEX) (4.2 onwards) to be installed if you wanted to define and use RESTful Services. However, in the new versions, APEX is no longer required. Oracle REST Data Services will install a specialized schema for itself when you run it the first time.

Oracle Relational Database (RDBMS) tables and views can be exposed as REST API endpoints, if you use SQL Developer (4.1 onwards). So you can insert, delete, update and query table data using REST.

Plus, Oracle NoSQL Database tables can now be exposed as REST API endpoints. You can insert, delete, update and query NoSQL table data using REST.

You can store JSON documents in document collections managed by the database, and retrieve them as need be. The interface to the Oracle Database Document Store is provided by SODA for REST.

Documentation can be found at https://docs.oracle.com/cd/E56351_01/index.htm


Usando el Plugin “Stripe Report” de tipo Acciones Dinámicas en Oracle APEX 5.0

$
0
0

El plugin que presentamos en este artículo, nos permite mostrar en forma intercalada colores en las filas de nuestros Informes Interactivos, permitiéndonos presentar nuestros Informes con un agradable diseño.

Crear Aplicación e Informe Interactivo

Para mostrar cómo usamos el Plugin, vamos a crear una aplicación de tipo escritorio con un Informe Interactivo con la siguiente consulta de Origen:

SELECT e.EMPNO

,     e.ENAME

,     e.JOB

,     m.ename MGR

,     e.HIREDATE

,     e.SAL

,     e.COMM

,     d.dname DEPTNO

FROM #OWNER#.EMP e

,   #OWNER#.EMP m

,   #OWNER#.DEPT d

WHERE e.mgr = m.empno (+)

AND   e.deptno = d.deptno (+)


Para mostrar en nuestro informe las filas intercaladas de color necesitamos usar el plugin “Stripe Report” y crear una Acción Dinámica dentro de nuestro Informe Interactivo.

Instalar Plugin “Stripe Report”

Desde la página de inicio de la aplicación, hacemos clic en “Componentes Compartidos”:

En la sección “Otros Componentes” hacemos clic en “Plugins”.

Hacemos clic en el botón “Importar” luego hacemos clic en el botón Browse… seleccionamos el archivo sql: dynamic_action_plugin_com_oracle_apex_stripe_report.sql, hacemos clic en el botón “Siguiente”, nuevamente clic en “Siguiente”, indicamos que se instale el Plugin en la aplicación que hemos creado para el ejemplo y finalmente hacemos clic en el botón “Instalar Plugin”.


Crear Acción Dinámica

Regresamos a la página donde se encuentra nuestro Informe Interactivo de Empleados:

Hacemos clic sobre el Informe Interactivo con el botón derecho del mouse y seleccionamos “Crear Acción Dinámica”

En el panel derecho de Propiedades:

En la sección Identificación

Nombre: Reporte Stripe

En la sección Cuando

Evento: Después de Refrescamiento

Tipo de Selección: Región

Región: Empleados

En la sección Avanzada

Ámbito de Evento: Estático

Hacemos clic en Acción Verdadera “Mostrar” del panel de la izquierda y desde el panel de propiedades de la derecha:

En la sección Identificación

Acción: Stripe Report [Plugin]

En la sección Configuración

Stripe Color: LemonChiffon

En la sección Opciones de Ejecución

Evento: Reporte Stripe

Arrancar cuando el Resultado del Evento Sea: Verdadero

Arrancar al Cargar Página: Sí

Guardamos los cambios

 

Ahora cuando ejecutemos la página podremos ver que se visualiza en el Informe Interactivo las filas intercaladas de color amarillo.

El plugin está disponible en la aplicación “Sample Dynamic Actions” de la galería de aplicaciones empaquetadas de Oracle Application Express.

Hasta Pronto!

Acciones Dinámicas ejecutando Código PL/SQL

$
0
0

El siguiente ejemplo extraído del demo de las acciones dinámicas de APEX vamos a recrear un ejemplo en el cual usaremos una acción dinámica ejecutando código PL/SQL que actualice el informe interactivo de los empleados e incremente su salario en un 10%.

Crear Informe Interactivo de Empleados

Lo primero que necesitamos realizar es la creación de un Informe Interactivo de la tabla EMP con la siguiente consulta SQL:

SELECT e.EMPNO

,     e.ENAME

,     e.JOB

,     m.ename MGR

,     e.HIREDATE

,     e.SAL

,     e.COMM

,     d.dname DEPTNO

FROM EMP e

,   EMP m

,   DEPT d

WHERE e.mgr = m.empno

AND   e.deptno = d.deptno

Crear Botón “Actualizar Salario en un 10%”

Creamos un botón que lo llamaremos “Actualizar Salario en un 10%” dentro de la región del Informe Interactivo de Empleados y la posición del botón le asignamos “Barra de Búsqueda a la Derecha del Informe Interactivo”.

En Apariencia, la plantilla del botón “Text with Icon”, en Directa le indicamos en “Sí” y finalmente en Classes CSS de Icono, asiganos en “fa-cog” y en posición del icono le indicamos en “Left”.

En Comportamiento definimos que la Acción este “Definida por Acción Dinámica”.

Crear Acción Dinámica “Ejecutar Código PL/SQL”

Desde el Diseñador de Páginas hacemos clic con el botón derecho del mouse sobre el nombre del botón ACTUALIZAR_SALARIO y creamos una acción dinámica:

- Identificación

               Nombre: Actualizar Salario

- Cuando

               Evento: Clic

               Tipo de Selección: Botón

               Botón: ACTUALIZAR_SALARIO

En Acción Verdadera

- Identificación

               Acción: Ejecutar Código PL/SQL

- Código PL/SQL

               update emp set sal = sal * 1.1;

- Opciones de Ejecución

               Arrancar cuando Resultado de Evento Sea: Verdadero

               Arrancar al Cargar Página: No

 

Crear Acción TRUE “Refrescar”

Ahora necesitamos crear una acción verdadera para refrescar el reporte interactivo y muestre el salario actualizado del empleado.

Desde el Diseñador de Páginas hacemos clic con el botón derecho del mouse sobre Verdadero y seleccionamos Crear Acción True:

- Identificación

               Acción: Refrescar

- Elementos Afectados

               Tipos de Selección: Región

               Región: Empleados

- Opciones de Ejecución

               Evento: Actualizar Salario

               Arrancar cuando Resultado de Evento Sea: Verdadero

               Arrancar al Cargar Página: No

Crear Acción TRUE “Alerta”

Desde el Diseñador de Páginas hacemos clic con el botón derecho del mouse sobre Verdadero y seleccionamos Crear Acción True:

- Identificación

               Acción: Alerta

- Configuración

               Texto: Salario Actualizado!

- Opciones de Ejecución

               Evento: Actualizar Salario

               Arrancar cuando Resultado de Evento Sea: Verdadero

               Arrancar al Cargar Página: No

Cuando ejecutamos la página y luego hacemos clic en el botón Actualizar Salario por un 10% veremos que el salario de los empleados es actualizado en un 10% y se abre una ventanita de alerta modal en el cual nos muestra el mensjae que ha sido actualizado todos los registros del reporte interactivo.

De esta forma podemos implementar diferentes tipos de actualizaciones en nuestros reportes interactivos usando acciones dinámicas ejecutando Código PL/SQL.

Hasta la próxima!

Plantilla de Región Hero

$
0
0

Generalmente cuando creamos nuestras páginas en APEX, la región de la “Ruta de Navegación” se muestra con la plantilla “Title Bar”, como vemos en la imagen de abajo:

Para que nuestras páginas se muestren como lo hacen las aplicaciones empaquetadas y esta región sea más vistosa, podemos elegir usar la plantilla “Hero”.

Desde el diseñador de páginas, nos ubicamos en la región de la Ruta de Navegación y seleccionamos en la sección de Apariencia, la plantilla: “Hero”.

Seleccionamos además en Clases CSS de Icono por ejemplo este icono de Font Awesome “fa-area-chart” que representa un gráfico.

Luego en el Título de la Región lo cambiamos al nombre de la aplicación, por ejemplo “Demo”.

Guardamos los cambios y ejecutamos la página.

Podemos ver lo fácil que es cambiar los estilos de la región usando las distintas alternativas que nos provee el Tema Universal 42.

Hasta pronto!

Usando las Opciones de Creación en Oracle APEX 5.0

$
0
0

Es interesante conocer para qué podemos usar las Opciones de Creación en Oracle APEX y es por ello que hoy te traigo este tema.

Utilizamos estas “Opciones de Creación” para mostrar de forma condicional la funcionalidad específica en una aplicación, en otras palabras las opciones de creación son valores predefinidos que determinan si un componente está activado dentro de una aplicación.

Las opciones de creación tienen dos valores posibles:

-        Incluir: Se utiliza esta función, es decir, si se especifica un atributo como “Incluir” el motor de Application Express lo considera en tiempo de ejecución.

-        Excluir: No se utiliza ningún atributo marcado con esta opción de creación, es decir, el motor de Application Express lo trata como si no existiera en la aplicación.

 Para nuestro ejemplo hemos creado una aplicación que tiene 7 páginas:

    • Inicio (Página 1)
    • Informe Empleados (Página 2)
    • Pantalla Empleados (Página 3)
    • Informe Departamentos (Página 4)
    • Pantalla Departamentos (Página 5)
    • Gráfico (Página 6)
    • Página de Conexión (Página 101)

Si ejecutamos la aplicación podemos ver todas las páginas en funcionamiento en nuestra aplicación.

Como ejemplo vamos a agregar una opción de creación de tipo “Excluir” en la página 4 y 5, correspondiente al Informe/Pantalla de Departamentos de nuestra aplicación demo.

Ingresamos a Componentes Compartidos de la Aplicación, en la sección Seguridad, seleccionamos “Opciones de Creación


Hacemos clic en el botón Crear e ingresamos los siguientes datos:

-        Aplicación: Nombre de nuestra aplicación

-        Opción de Creación: Siguiente Versión

-        Estado: Excluir

-        Valor por defecto en la Exportación: - igual que el Estado Actual -

-        Comentarios: Mover a la siguiente Versión.

 

Hacemos clic en el botón “Crear Opción de Creación

Regresamos a nuestra aplicación y entramos al Diseñador de Páginas de la Página 4 “Departamentos

En el panel de la derecha de propiedades, en la sección Configuración, seleccionamos en Opción de Creación: Siguiente Versión.

Guardamos los cambios.

Hacemos lo mismo para la página 5 “Editar Departamentos

Por último nos queda excluir la entrada al Menú de Navegación de nuestra aplicación, para ello vamos a componentes compartidos y seleccionamos en la sección de Navegación, el Menú de Navegación.

Hacemos clic en el enlace “Escritorio Menú de Navegación” y luego hacemos clic en el enlace “Departamentos” y en la ficha Configuración, seleccionamos en Opción de Creación que sea “Siguiente Versión”.

Y aplicamos los cambios.

Regresamos a la aplicación y la ejecutamos:

Podemos ver que la entrada al menú de navegación “Departamentos” ya no está visible y si colocamos en la URL la pagina 4 o 5 obtendremos un error ya que el motor de Apex no lo encuentra.

De este modo podemos nosotros condicionar los atributos o funcionalidades que queremos que se muestren o no se muestren en nuestra aplicación.

Hasta Pronto!

Application Express 5.1 Early Adopter

$
0
0

As you might have heard, the first early adopter release of APEX 5.1 is out. You can sign up for your own workspace at https://apexea.oracle.com/ to try it out.

The major new feature of APEX 5.1 is the interactive grid which merges the popular interactive report features with the ability to actually change data. My users love the interactive reports in APEX 5.0, so I am looking forward to seeing how the interactive grids will work in practice.

Note that this is the first early adopter release, and Oracle has published a long list of things that don't work yet. But it is definitely good enough for you to play around with, get a first impression and start considering how you will use the APEX 5.1 features in your applications. Just don't try to run the EA in Internet Explorer...

Application Express and Enterprise Manager

$
0
0

For those who do not know (yet), Oracle Application Express (APEX) is Oracle’s database-centric Rapid Application Development (RAD) tool, used to fast-develop web applications with SQL and PL/SQL.

All editions of the Oracle Database have APEX installed by default, and you do not need to pay for it, provided you have purchased the database license.  Inside APEX, you can use or study the built-in packaged applications – like Customer Tracker or P-Track (Project Tracker). Of course, this is not a kiddy tool -  one example of a large APEX application, developed by Oracle,  is the Oracle Store itself here.

APEX is also available in the Oracle Public Cloud, as a part of the Database Schema Service. For details on this service, you can go to this link.

A friend asked “Most of my applications are in Oracle Application Express. I want to use the Enterprise Manager Diagnostics and Tuning Packs, and I want to know if I can monitor pages, modules and/or applications of APEX in Diagnostics Pack using EM 12c.”.

Well, although there is no direct application-level integration between Enterprise Manager and APEX, you can use the Diagnostics and Tuning Packs to diagnose and tune the APEX application database, in the same manner as you would use the packs to do this for any other database. This is because APEX is very much database-centric. 

The other possibility is to use Oracle Real User Experience Insight (RUEI) to monitor the APEX end user pages, and find out which pages are slow (based on the page load time dimension in RUEI), and then drill down to the database level. RUEI is explained in my article series here.

Estoy confirmada para mi primera presentación en OTN México 2016!

$
0
0

Estoy muy feliz de anunciar que estaré como speaker en el OTN Tour de este año en la ciudad de Mexico. :)


Presentaré una sesión de 45 minutos y un taller práctico de 2 horas!

Muy pronto estará la agenda disponible en el sitio web del Grupo de Usuarios Oracle de México ORAMEX y tambien los mantendré informados desde mi blog.

Gracias y seguimos evangelizando Oracle Application Express en Español!!!


Nueva Característica que se viene en Oracle APEX 5.1 - Cambiar Opciones de Plantilla en Vivo!

$
0
0

Esto sí que será una característica muy bien recibida en la comunidad de desarrolladores de APEX J

Tendremos al fin la posibilidad de cambiar los atributos de opciones que tenemos disponibles en las plantillas que usemos totalmente en vivo, es decir, mientras ejecutamos nuestra página en APEX podemos cambiar dichos atributos y podemos ir viendo los cambios en vivo, de igual manera que podemos hacerlo cuando cambiamos los colores usando el Theme Roller!

Veamos a lo que me refiero. Estoy trabajando en la instancia gratuita de ejemplo en APEX 5.1 (Aquí puedes solicitar un Espacio de Trabajo gratuito para aprender sobre las nuevas características de APEX 5.1)

He instalado el demo de “Sample Charts” desde las aplicaciones empaquetadas.

Este demo fue reconstruido completamente en la versión 5.1, seguiremos hablando de este demo en otros artículos.

Ejecutamos el demo y vemos la página de inicio que tiene una lista con iconos.

Para que nosotros podamos editar las opciones en la plantilla que usa la Lista en la versión 5.0, necesitamos ir al Diseñador de Páginas y seleccionar la región de la lista en Atributos y abrir las Opciones de la Plantilla, como lo vemos en la siguiente imagen:

Pero en la versión 5.1 podremos cambiar estas opciones en vivo, mientras ejecutamos nuestra aplicación.

Para ello, veamos un ejemplo, desde la ejecución de la página de inicio de nuestra aplicación demo “Sample Charts” hacemos clic en “Quick Edit” que se encuentra en la barra de herramientas de los desarrolladores, en mi caso en la parte inferior de la pantalla:

Al activar la edición rápida se activará el icono de herramientas de la región de Lista, pulsamos en el icono y se abrirá una ventana modal con las opciones de la plantilla que estamos usando actualmente en la Lista:

En vivo podemos ir cambiando las opciones de la plantilla y podemos ir viendo cómo queda esos cambios en nuestra región de Lista.

Por ejemplo cambiamos el Style por Basic e inmediatamente podemos ver los cambios en nuestra página.

De esta forma podemos hacer todos los cambios que queramos y sin perder tiempo podemos ver los resultados en ejecución, una maravilla esta nueva característica que tendremos disponible a partir de la versión Apex 5.1.

Hasta Pronto!!!

Entendiendo la Sintaxis de la URL de APEX

$
0
0

Para poder entender cómo maneja APEX la URL y poder crear enlaces en nuestra aplicación, es necesario comprender todos los parámetros que usa en la URL.

Para ello, vamos a descomponer la URL:

http://servidor:8080/apex/f?p=117:1:2720071830300::NO::P1_ITEM:123

  • http://servidor:8080/ es el nombre de nuestro servidor y el puerto asignado
  • apex/ es el nombre del descriptor de acceso a datos. Se le llama DAD y describe cómo el servidor http se conecta al servidor de base de datos para que pueda cumplir con una solicitud http. El valor por defecto es apex.
  • f?p: esto significa que se llama a un procedimiento PL/SQL denominado “f” que le pasa un argumento “p”. Este, a su vez, está constituido por nueve argumentos concatenados por comas que conforman un solo argumento.

Algunos parámetros se pueden omitir, pero siempre se tiene que indicar su posición con los dos puntos.

No obstante, es importante saber en qué consiste cada uno de estos nueve argumentos:

- APP_ID: es un ítem incorporado de APEX que nos indica cuál es el id —el número identificativo— de nuestra aplicación.

- APP_PAGE_ID: es el número de la página que se está ejecutando en ese momento.

- APP_SESSION: es el número de sesión que le corresponde al usuario en un momento concreto.

- REQUEST: es una solicitud HTML.

- DEBUG: es un indicador que muestra si nuestra aplicación está en modo de depuración o no. Tiene dos parámetros: YES y NO.

- Clear Cache: presenta una lista de páginas para que elijamos las que queremos limpiar de la caché.

- Item1, item2, etc.: es un listado de nombres de elementos de nuestra aplicación.

- ValorItem1, valorItem2, etc.: es el valor que tiene cada elemento y aparecen también concatenados por coma.

- PrinterFriendly: es un indicador que permite saber si está activada la impresión amigable o no.

En el ejemplo de la URL los 9 argumentos serían:

-      APP_ID: 117

-      APP_PAGE_ID: 1

-      APP_SESSION: 2720071830300

-      REQUEST:

-      DEBUG: NO

-      Clear Cache:

-      Item1, item2...: P1_ITEM

-      ValorItem1, valorItem2…: 123

-      PrinterFriendly:

En el próximo artículo veremos como filtrar Informes Interactivos pasandole los parámetros en la URL.

Hasta Pronto!

Filtrar Informes Interactivos con parámetros en la URL de APEX

$
0
0

Los Informes Interactivos son muy potentes y ahora mucho más en esta versión 5.0 de Apex que nos permite tener en una sola página múltiples Informes Interactivos, una característica muy solicitada por los desarrolladores desde hace mucho tiempo.

Gracias al gran poder de los Informes Interactivos el usuario final puede crear filtros, añadir columnas calculadas, hacer agrupaciones, crear gráficos, crear divisiones de control, resaltar filas o celdas y mucho más!

En el caso de los desarrolladores muchas veces suele pasar que necesitan filtrar un informe interactivo por un valor determinado ya sea que se muestre en la misma página o se dirija a otra página mostrando el informe interactivo filtrado.

Para realizar esto es necesario que conozcamos cómo podemos filtrar nuestros Informes Interactivos con parámetros pasados a la URL.

Si quieres refrescar la memoria y conocer cómo es la sintaxis de la URL en Apex, te invito a que leas este artículo.

Sintaxis para filtrar Informes Interactivos con Parámetros de la URL

Para filtrar un Informe Interactivo guardado necesitamos utilizar la sintaxis REQUEST

IR[region static ID]_<COLUMN_NAME>

Por ejemplo:

IR[EMP]_ENAME

Para crear un filtro usamos el Nombre del Elemento y el Valor del Elemento.

IR[region static ID]<operator>_<target column alias>

Por ejemplo:

IR[EMP]C_ENAME:KING

En el caso de que exista un solo IR en nuestra página no necesitamos usar el static ID, en caso contrario si tenemos más de un IR en nuestra página es obligatorio usar el static ID para identificar el IR correspondiente.

Por ejemplo:

IR[EMP]_ROWFILTER:SALES

Los operadores válidos son:

   C = Contains

   EQ = Equals (este es por defecto)

   GTE = Greater than or equal to

   GT = Greater Than

   LIKE = SQL Like operator

   LT = Less than

   LTE = Less than or equal to

   N = Null

   NC = Not Contains

   NEQ = Not Equals

   NLIKE = Not Like

   NN = Not Null

   NIN = Not In (escape the comma separated values con barra invertida, \)

   IN = In (escape the comma separated values con barra invertida, \)

   ROWFILTER = Row Text Contains (esta busca en todas las columnas que se muestran en el informe con el tipo STRING o NUMBER)

Demo

Vamos a crear en nuestra página en APEX dos regiones de tipo Informe Interactivo:

  • Región 1: Informe Interactivo de la tabla DEPT - select * from dept
  • Región 2: Informe Interactivo de la tabla EMP - select * from emp

Cada Informe Interactivo tendrá un Identificador estático que lo llamaremos DEPT y EMP.

El hecho de que podamos disponer de varios Informes Interactivos en una sola página en APEX nos permite muy fácilmente mostrar la información de nuestros reportes en distintas formas y aplicar diferentes tipos de filtros.

En este caso tenemos en la columna izquierda el IR de los Departamentos y en la columna de la derecha el IR de los Empleados.

Podríamos por ejemplo insertar en la columna del nombre de los departamentos un enlace que filtre el informe interactivo de los empleados, es decir, al hacer clic en el nombre del departamento que el informe de empleados se filtre y muestre todos los empleados que pertenecen a dicho Departamento.

Para ello desde el diseñador de páginas vamos a la región del reporte interactivo de Departamentos:

Expandimos las columnas y seleccionamos la columna DNAME y en el panel de propiedades en la sección Identificación seleccionamos que el tipo sea Enlace.

Luego nos dirigimos a la sección Enlace y hacemos clic en el botón del Destino.

Abrimos el Destino y colocamos los siguientes datos:

- Página: 2

- Borrar Cache: '2,CIR'

- Definir Elementos:

Nombre: IR[EMP]_DEPTNO

Valor: #DEPTNO#

El nombre del elemento se refiere a IR[region static ID]_<COLUMN_NAME> y el valor es el valor de la columna DEPTNO.

Aceptamos los cambios y se cierra la ventana emergente.

Además debemos colocar el Texto del Enlace: #DNAME#

Ejecutamos la página y podemos ver el resultado, haciendo clic en el departamento SALES.

De esta forma al hacer clic en cualquiera de los departamentos se filtrará el informe interactivo de Empleados mostrando los Empleados que pertenecen al Departamento seleccionado.

Como podemos ver, trabajar con los filtros a través de la URL es muy sencillo y podemos mostrar todo tipo de filtros en nuestros informes interactivos.

Hasta Pronto!!!

Oracle Sets New Security Patch Record

$
0
0

Oracle has released the July 2016 Critical Patch Update, and it covers a record 274 security issues across pretty much every Oracle product. If you are an Oracle customer, you are almost certainly running a vulnerable product and should patch.

WebLogic and GlassFish feature prominently with four bugs with a CVSS 3.0 rating of 9.8. This is the scary type that can be remotely exploited without authentication, meaning that any user that can access your server can execute the exploit. Worse, all of them have low attack complexity, so you can expect bad guys to be able to use them.

In the category of products with these critical security issues, you also find a lot of Oracle's applications, including Hyperion, Oracle Agile, Oracle Communications, Oracle Health Sciences, and Oracle Retail.

Embarrassingly, the product "Oracle Secure Global Desktop" also contains one of these worst-case bugs...

It is interesting to see that JDeveloper also features on this quarter's list, though "only" with a seriousness score of 8.8. Apparently ADF Faces contains an easily exploitable vulnerability that allows a low privileged attacker with network access via HTTP to compromise Oracle and take over Oracle JDeveloper. So maybe that's why my JDev keeps crashing.

Oracle Application Express is not a fixture on this list the way Java is, but this quarter APEX does make an appearance with a couple of moderate severity issues. You should update your APEX to 5.0.4, which is the brand-new version released July 12th. 

Cursor activo en el cuadro de búsqueda del Informe Interactivo

$
0
0

Hace unos días me hicieron la siguiente consulta, cómo se puede colocar el cursor del mouse en el cuadro de búsqueda del Informe Interactivo cuando ingresamos a la página y considero que si bien es simple puede ser algo muy interesante de conocer.

La idea es que cuando ingresamos en la página que contiene nuestro Informe Interactivo, se tenga el cursor del mouse activo en el cuadro de búsqueda, como se ve en la siguiente imagen:

Para realizar esto, lo podemos hacer de varias formas, la que te cuento en este artículo se basa en crear una Acción Dinámica en nuestro Informe Interactivo que se base en un Selector de jQuery.

Creamos primero un “Identificador Estático” en nuestro Informe Interactivo que lo llamaremos DEPT. Para ello ingresamos al Diseñador de Página, seleccionamos el Informe y en el panel de la derecha de propiedades en la sección Avanzada ingresamos DEPT en la casilla del Identificador Estático.

Luego necesitamos determinar el identificador del cuadro de búsqueda, para ello desde nuestro navegador, usando en mí caso el Inspector de Elementos (Inspect Element (Q)) de Firefox o en Chrome el Inspect. Tales herramientas se acceden seleccionando el elemento que queremos determinar el identificador y con el botón derecho del mouse seleccionamos la opción del Inspector:

Se abrirá una ventana adicional por debajo el cual podremos ver el nombre del identificador buscado, que en nuestro caso se llama: DEPT_search_filed


Ahora que ya sabemos cuál es el identificador del Selector, vamos al Diseñador de Páginas, seleccionamos el Informe Interactivo y agregamos una Acción Dinámica que la podemos denominar Cursor Activo, cuya acción verdadera será:

Identificación

               Acción: Definir Foco

Elementos Afectados

               Tipo de Selección: Selector de jQuery

               Selector de jQuery: #DEPT_search_field

Opciones de Ejecución

               Evento: Cursor Activo

               Arrancar cando el Resultado de Evento Sea: Verdadero

               Arrancar al Cargar Página:

Guardamos los cambios.

De esta forma cada vez que ingresemos a la página del Informe Interactivo el cursor estará activo en el cuadro de búsqueda del mismo.

Hasta Pronto!

A sólo días de mi viaje al OTN Tour México 2016

$
0
0

Estamos casi en la recta final y preparándome para mi viaje a México.

La agenda está lista y disponible en el siguiente link:  Agenda OTN Tour México

Estaré presentando un conferencia de 45 minutos referente al uso de los Informes Interactivos mostrando todas sus características y lo fácil que es desplegar la información de nuestra base de datos Oracle y además estaré presentando un Taller de alrededor de 2 horas el cual trabajaremos en la creación de una aplicación sencilla de Bases de Datos y desplegaremos informes interactivos, pantallas y mucho mas!.

Lugar : UVM Sede Lomas Verdes.

Paseo de Las Aves No.1, San Mateo Nopala,

53220 Naucalpan de Juárez

Ciudad de México

Fecha : 05 de Agosto, 2016

Hora : 08:00 AM – 06:30 PM

  • Ingreso gratuito, previo registro al evento.
  • WIFI gratuito en las instalaciones de la UVM.
  • Estacionamiento disponible en el lugar del evento a un costo de 16 pesos por todo el evento. (Indicar que viene al OTN TOUR en la caseta de ingreso)

Para registrarse:

http://oramex.com.mx/otn2016/

Finalmente quiero compartir que estaré llevando mi libro “Introducción a Oracle APEX 5.0” para la venta en el evento, ya que sé que muchos usuarios se les dificulta comprarlo online, de esa forma es más sencillo adquirirlo.

Te espero en el evento!!!

Mi paso por el OTN Tour México 2016

$
0
0

Quiero contarles mi gran experiencia al participar este año en el OTN Tour 2016 siendo speaker en Mexico.

Presenté un Taller de más de 2 horas y media en el cual quedé gratamente sorprendida al ver cuanta gente está interesada en conocer más acerca de Oracle Application Express.

Luego también he presentado una conferencia de 45 minutos en el cual explique todas las bondades de trabajar con los Informes Interactivos en APEX.

Quiero agradecer muy especialmente a ORAMEX (Plinio, Arturo, Sandra, René) por su invitación y por el gran trabajo de logística y organización que han tenido para el evento y para con los speakers.

Además no quiero dejar de agradecer a los sponsors que hacen posible este tipo de eventos el cual sin la ayuda de ellos sería muy difícil concretar la calidad con que pueden disfrutar los asistentes y aprender sobre temas de administración de bases de datos, desarrollo, BI y mucho más!!!

He disfrutado cada minuto desde que llegamos con mi esposo a México, ha sido una experiencia inolvidable, poder compartir con los asistentes, organizadores y los demás speakers un día lleno de personas que dieron lo mejor de sí para compartir sus conocimientos a toda la comunidad que se hizo presente en el evento.

Quiero dar las gracias también al grupo de personas tan amables que he conocido en el evento como lo son Adrian, Mirsa, Eduardo, Diana que son de CertificaTic.

Algo muy emotivo que me ha pasado fue tener la sorpresa de que una de las asistentes a mi taller se puso una blusa que decía “Tango - Argentina” por mí, porque ella sabía que soy de Argentina! Fue muy lindo recibir el cariño de todos los asistentes y poder firmar autógrafos para los que adquirieron mis libros y las fotos no faltaron!!!

Muchas gracias a todos por este día tan especial que fue el 5 de agosto del 2016 en el OTN Tour México 2016!

Todos los Speakers del OTN Tour México 2016

Con el Equipo de CertificaTic

COn el Equipo de CertificaTic

Firmando Libros para los asistentes

Cena invitación de ORAMEX al finalizar el evento


Video OTN Tour México 2016

$
0
0

Hola, quiero compartir el video que me hicieron por parte de OTN Latinoamerica mientras estaba participando del OTN Tour México 2016.

(Please visit the site to view this video)

Cómo insertar un logo en nuestra aplicación APEX

$
0
0

En este artículo quiero mostrarte cómo puedes colocar un logo en la aplicación web que estas desarrollando.

Primero de todo necesitas tener cargado en tu Espacio de Trabajo la imagen del logo que quieres ingresar.

Para ello ingresas a “Componentes Compartidos” de la aplicación y puedes seleccionar dos opciones de la sección “Archivos”:

    • Archivos de Aplicación Estáticos: aquí se alojan los archivos que solo serán vistos por la aplicación.
    • Archivos de Espacio de Trabajo Estáticos: aquí se alojan los archivos que serán vistos por todas las aplicaciones que se encuentran en el espacio de trabajo.

En este ejemplo vamos a ingresar la imagen del logo en la primera opción:

Hacemos clic en el botón Cargar Archivo >

Seleccionamos la imagen y en el caso de “Descomprimir Archivo” si en el caso que quisiéramos subir un archivo zip se descomprime automáticamente y se almacena en el directorio especificado. Tengamos en cuenta que el archivo zip como tal no se almacenará. (Nota: este atributo se ignora si el archivo cargado no es un zip)

Y hacemos clic en el botón Cargar.

Obtendremos la referencia a la imagen, en mi ejemplo: #APP_IMAGES#mi-logo.jpg

Regresamos a la página de inicio de la aplicación y hacemos clic en el botón “Editar propiedades de Aplicación”.

Seleccionamos la ficha “Interfaz de Usuario” y dentro de ella seleccionamos la ficha “Logotipo”

En Tipo de Logotipo, seleccionamos Imagen

Logotipo: #APP_IMAGES#mi-logo.jpg

Atributos de Logotipo: width="300" height="60" alt="Logotipo de Compañía"


Aplicamos los cambios.

Veamos los resultados ejecutando la aplicación:

De esta forma podemos visualizar nuestro logo en la aplicación.

Consuming a REST Web Service returning JSON in APEX

$
0
0
In APEX you can define a web service that returns XML as below - all declarative, just a few steps through a wizard.


Then generate a report on top of that web service - again just a few clicks through a wizard. The generated query looks like this:

select xtab."customerName"
     , xtab."customerId"
  from apex_collections c, 
          XMLTable('/Response/S_getCustomerListTableArray/S_getCustomerListArrayItem' passing xmltype001
            COLUMNS "customerName" PATH 'customerName'
                  , "customerId"   PATH 'customerId'
          ) xtab
 where c.collection_name = 'CUSTOMERLIST'

So the result of the web service is stored in an XMLTYPE column. And it's easy to spot where you're definitions for the Response XPath and Output Parameters are used.

But what if your web service returns JSON - as more and more web services will do so? If you switch the Output Format of the web service definition to JSON, the Response XPath property and the Output Parameters are not enterable. And if you generate a report on top of that web service, the resulting query is a - disappointing - 

select c.clob001
from apex_collections c
where c.collection_name = 'CUSTOMERLIST'

and your report will show a JSON dump. Not exactly what you're hoping for. And notice the result is stored in a CLOB.

But since 12c, the JSON support in the Oracle database has improved a lot and we can easily use that in our query. So if we rewrite our query to 

select cust.*
from   apex_collections
,      json_table(clob001, '$.Response.S_getCustomerListTableArray.S_getCustomerListArrayItem[*]'
       columns ( "customerName"   PATH '$.customerName'
               , "customerId"     PATH '$.customerId'
               )) cust
where collection_name = 'CUSTOMERLIST'

we will get the same result as the - old fashioned - XML one! And as you can see the code is very much alike and could be generated by APEX itself just like the XML version.

So I expect that in a future version this functionality will be added to the APEX builder - it shouldn't be that hard to implement! And maybe the apex_collections can have a real "JSON" column as well (in fact it would still be a CLOB with an "IS JSON" check).

The only prerequisite is, you have to run APEX on version 12c of the database. If you want to know more about JSON in the database, there is a serie of blog posts about this, starting here.

Oracle Text, Oracle R Enterprise and Oracle Data Mining - Part 3

$
0
0

This is the third blog post of a series on using Oracle Text, Oracle R Enterprise and Oracle Data Mining. Check out the first and second blog posts of the series, as the data used in this blog post was extracted, processed and stored in a databases table.

This blog post is divided into 3 parts. The first part will build on what was covered in in the previous blog post and will expand the in-database ORE R script to include more data processing. The second part of this blog post will look at how you can use SQL to call our in-database ORE R scripts and to be able to include it in our custom applications, for example using APEX (part 3).

Part 1 - Expanding our in-database ORE R script for Text Mining

In my previous blog post we created an ORE user defined R script, that is stored in the database, and this script was used to perform text mining and to create a word cloud. But the data/text to be mined was processed beforehand and passed into this procedure.

But what if we wanted to have a scenario where we just wanted to say, here is the table that contains the data. Go ahead and process it. To do this we need to expand our user defined R script to include the loop to merge the webpage text into one variable. The following is a new version of our ORE user defined R script.


> ore.scriptCreate("prepare_tm_data_2", function (local_data) {
library(tm)
library(SnowballC)
library(wordcloud)

tm_data
for(i in 1:nrow(local_data)) {
tm_data
}

txt_corpus

# data clean up
tm_map
tm_map
tm_map
tm_map
tm_map

# prepare matrix of words and frequency counts
Matrix
matrix_c
freq

res
wordcloud (res$words, res$freq, max.words=100, min.freq=3, scale=c(7,.5), random.order=FALSE, colors=brewer.pal(8, "Dark2"))
} )

To call this R scipts using the embedded R execution we can use the ore.tableApply function. Our parameter to our new R script will now be an ORE data frame. This can be a table in the database or we can create a subset of table and pass it as the parameter. This will mean all the data process will occur on the Oracle Database server. No data is passed to the client or processing performed on the client. All work is done on the database server. The only data that is passed back to the client is the result from the function and that is the word cloud image.


> res
> res

Part 2 - Using SQL to perform R Text Mining

Another way you ccan call this ORE user defined R function is using SQL. Yes we can use SQL to call R code and to produce an R graphic. Then doing this the R graphic will be returned as a BLOB. So that makes it easy to view and to include in your applications, just like APEX.

To call our ORE user defined R function, we can use the rqTableEval SQL function. You only really need to set two of the parameters to this function. The first parameter is a SELECT statement the defines the data set to be passed to the function. This is similar to what I showed above using the ore.tableApply R function, except we can have easier control on what records to pass in as the data set. The fourth parameter gives the name of the ORE user defined R script.


select *
from table(rqTableEval( cursor(select * from MY_DOCUMENTS),
null,
'PNG',
'prepare_tm_data_2'));

This is the image that is produced by this SQL statement and viewed in SQL Developer.

NewImage

Part 3 - Adding our R Text Mining to APEX

Adding the SQL to call an ORE user defined script is very simple in APEX. You can create a form or a report based on a query, and this query can be the same query that is given above.

Something that I like to do is to create a view for the ORE SELECT statement. This gives me some flexibility with some potential future modifications. This could be as simple as just changing the name of the script. Also if I discover a new graphic that I want to use, all I need to do is to change the R code in my user defined R script and it will automatically be picked up and displayed in APEX. See the images below.

WARNING:Yes I do have a slight warning. Since the introduction of ORE 1.4 and higher there is a slightly different security model around the use of user defined R scripts. Instead of going into the details of this and what you need to do in this blog post, I will have a separate blog post that describes the behaviour and what you need to do allow APEX to use ORE and to call the user defined R scripts in your schema. So look out for this blog post coming really soon.

NewImage In this blog post I showed you how you use Oracle R Enterprise and the embedded R execution features of ORE to use the text from the webpages and to create a word cloud. This is a useful tool to be able to see visually what words can stand out most on your webpage and if the correct message is being put across to your customers.

Formateando Columnas RI - Expresiones HTML en Oracle APEX 5.0

$
0
0

Algo muy común a la hora de desarrollar es la de querer formatear las columnas de nuestros reportes para ello podemos usar la sección de Formato de Columna en el casillero Expresión HTML

Por ejemplo: podríamos formatear la columna ENAME el cual los nombres de los empleados estén en negrita y tengan un tamaño de letra grande.

La expresión HTML para el nombre ADAMS sería:

<span style=”font-size:150%;font-weight:bold;”>ADAMS</span>

Pero nosotros no queremos que se muestre en todas las columnas el nombre ADAMS, sino que dependiendo el valor que tome la columna se formatee con los que hemos designado en la expresión HTML, para ello usamos la siguiente denominación #ENAME#, el cual formateará la columna respetando el valor que le corresponde.

<span style=”font-size:150%;font-weight:bold;”>#ENAME#</span>

De esta forma podemos formatear la columna como vemos a continuación:

También tenemos la posibilidad de añadir texto o combinar múltiples valores, por ejemplo podemos combinar la columna ENAME y mostrarla junto con JOB, de esta forma quedaría como sigue:

<span style=”font-size:150%;font-weight:bold;”>#ENAME#</span> the #JOB#

Pero aquí no acaba las posibilidades que tenemos de formateo, sino que podemos trabajar con el formateo condicional.

Por ejemplo podemos hacer que el color del Salario sea rojo para toda la columna:

<span style=”color:red;”>#SAL#</span>

Pero qué pasa si queremos que ciertos valores se pinten de rojo? En sí mismo la casilla de la Expresión HTML no puede realizar cálculos, es por ello que necesitamos usar una consulta SQL para realizarlo, la idea es crear una nueva columna que muestre los valores en rojo o negro según la condición establecida:

Reemplazamos la consulta SQL de Origen del Informe Interactivo por la siguiente:

Select e.*,

     Case when e.Sal>2500 then ‘red’ else ‘black’ end as SalColor

From Emp e

Al ejecutar la página veremos que se agrega una columna a nuestro informe interactivo llamada Salcolor:

Podemos ocultar la columna y ahora sí podemos añadir en la casilla de la Expresión HTML de la columna SAL la siguiente expresión:

<span style="color:#SALCOLOR#;">#SAL#</span>

Ejecutamos la página para ver los resultados:

Como podemos ver, el hecho de formatear las columnas usando la casilla de Expresión HTML nos facilita en gran medida la personalización de nuestras columnas, con simplemente conocer un poco de CSS y las etiquetas más comunes de HTML podemos realizar personalizaciones sin tanto esfuerzo.

Viewing all 142 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>