12 diciembre 2013

Curso On-Line Omnis-SQLite

Objetivos

  • Formación en SQLite y Omnis SQL
  • Construcción de una utilidad para la conversión automática de un DF1 (Base de datos nativa Omnis) a SQLite

Características

  • No presencial
  • 20 horas de formación
  • Sábados de 10 a 12, hora de España, del 11 de Enero al 15 de Marzo

Requisitos

  • Ordenador con conexión a Internet
  • Omnis Studio Developer
  • SQLite
  • Abono de la matrícula

Inscripción

  • Abono íntegro de la matrícula desde el siguiente enlace:



09 octubre 2013

Programación de listas

La variable de tipo "list" es sin duda, la que adquiere mayor relevancia y versatilidad en la programación con Omnis Studio, de hecho, resulta imprescindible a la hora de construir aplicaciones para la web y dispositivos móviles. Una variable “list” puede suministrar los datos (contenido) y el formato para muchos de los componentes visuales JavaScript que contendrán sus aplicaciones, tales como: “droplists”, “menus”, “data grids”, “complex grids”, y “tree lists”.

Una variable “list” puede ser definida en base a una “clase de datos SQL” (schema, query, o table). En ese caso, la lista obtiene la definición de cada columna según fueron creadas en la propia clase SQL. Cada “list” puede contener un número ilimitado de líneas y un máximo de 32.000 columnas, claro está, si la capacidad de memoria del dispositivo lo permite.

Omnis Studio proporciona los métodos necesarios para crear, definir y modificar variables “list” y que vamos a repasar brevemente a continuación. Le sugiero que consulten el manual en español, para obtener más información sobre el uso de variables “lis" (http://framosmu.blogspot.com.es/2010/03/manual-de-programacion-omnis-studio-en.html).

 

Crear una lista

 

En primer lugar será necesario crear la variable “list” y definir sus columnas. Con éste propósito podemos optar por el método $define, pero también podemos hacer uso del método $add del grupo de métodos $cols, veamos ambos casos:

Do myList.$define(var1,var2,var3) ;; myList y var’s deben ser declarados

o


Do myList.$cols.$add('myFieldName',kCharacter,kSimpleChar,255)
Do myList.$cols.$add('anotherColumn',kInteger,kLongInt)
Do myList.$cols.$add('yetAnotherColumn',kBoolean)


En este ejemplo, se crea una “list” con tres columnas. Los parámetros del método $add describen el nombre, tipo, subtipo y longitud de cada columna. Sin embargo y dependiendo del tipo de columna, no todos estos parámetros serán necesarios.

Añadir datos a una lista

 

En segundo lugar, añadiremos algunos datos. Usaremos el método $add con algunos valores pasados directamente como parámetros y también lo usaremos para crear una línea vacía:

Do myList.$add('Pepe', 27, kTrue) ;; Añade una línea con los valores suministrados
Do myList.$add() ;; Agrega una línea vacía


También podemos añadir el contenido de una variable de tipo “row” a la lista. Para ello, podemos hacer uso del método $add, en éste caso el método $add le pasa una referencia a la variable “row”:

Do myList.$add().$assignrow(myRow,kTrue)

Note que los métodos de los que podemos hacer uso detrás de $add, deben ser usados con la sintaxis descrita al añadir una línea vacía “$add()”. Esto causa que la función $add devuelva una referencia a la función $assignrow, para que ésta pueda agregar los valores de myRow. El segundo parámetro determina si se usaran los nombres de las columnas o su orden, para emparejar los datos. También se podría hacer uso de los métodos $addafter y $addbefore para agregar los datos antes o después de una determinada columna.

Eliminar líneas de una lista

 

Es posible que en ocasiones también debamos eliminar algunas líneas de la lista. La manera más fácil de hacer esto es utilizando el método $remove. Por ejemplo, si quisiéramos eliminar la línea actual de la lista usaríamos lo siguiente:

Do myList.$remove(myList.$line())

Si quisiéramos eliminar todas las líneas la lista, que cumplan una determinada condición, tendremos que hacer uso en primer lugar de la función $search:

Do myList.$search($ref.miNombreCampo='Pepe', kTrue)

Mediante éste método se seleccionaran todas las filas que contengan el valor 'Pepe' en la columna 'miNombreCampo'. Después las eliminaremos del siguiente modo:

Do myList.$remove(kListDeleteSelected)

También podríamos hacer uso de la constante kListKeepSelected para causar la eliminación de todas las líneas no seleccionados.

Copiar y fusionar una lista

 

A veces es posible que queramos fusionar listas, o copiar los contenidos de una lista sobre otra, para esto último podemos hacer lo siguiente…

Calculate NuevaLista as ViejaLista

…pero, si lo que queremos es copiar la definición de una lista sobre otra usaremos el método $copydefinition:

Do NuevaLista.$copydefinition(ViejaLista)

Este método creará una lista vacía con la definición de la lista inicial. Finalmente, si lo que queremos es agregar  o fusionar, los datos de una lista sobre otra, debemos usar el método $merge:

Do NuevaLista.$merge(ViejaLista,kTrue)

En este caso se añadirán los datos de ViejaLista a NuevaLista. El segundo parámetro determina si queremos hacer la correspondencia de datos usando los nombres de las columnas o bien su orden.

Eliminar listas

 

Si lo que pretendemos es eliminar el contenido de una variable de tipo “list”, podemos hacer uso del método $clear:

Do myList.$clear()

Si también quisiéramos eliminar la definición de sus columnas, podríamos usar $define pero sin pasarle parámetro alguno:

Do myList.$define()

Nota:
Esto es sólo un pequeño ejemplo de cómo hacer uso de las variables de tipo “list”, éste artículo ha sido primero publicado en ingles por Andreas Pfeiffer. Puede obtener más información en español sobre la programación con Omnis Studio en Aula Omnis.

04 octubre 2013

Nueva versión Omnis Studio 6.0.1


La recientemente liberada versión de Omnis Studio 6.0.1 mejora y amplia su apuesta por la programación con Omnis Studio JavaScript Client.

No hace mucho tiempo que los desarrolladores en Omnis Studio hemos podido experimentar la programación con jsClient. El desarrollo de aplicaciones para la web y dispositivos móviles con sus particularidades como los diferentes tamaños de pantalla, nunca ha resultado tan rápida, cómoda y sencilla. Omnis Studio jsClient permite controlar de forma sencilla prácticamente cualquier pantalla y cualquier dispositivo.

Algunas de las cosas que incorpora la versión 6.0.1 son:

  • Nuevos tamaños de pantalla y dispositivos como el BlackBerry® Q10 y el Samsung® Galaxy S4, y otros a añadir por los desarrolladores.
  • Permite la creación de bases de datos locales, con opción de sincronización para dispositivos Android, posibilitando así la creación de aplicaciones móviles independientes en ésta plataforma.
  • Nuevo control "Trans Button" que proporciona mayor interactividad en aplicaciones para la web y dispositivos móviles.
  • Mejora en el rendimiento de las "String Tables" que dan soporte a las aplicaciones multi-lenguaje.
  • Soporte para el modo 'Responsive Web Design' de Firefox, que permite probar los diferentes diseños realizados para dispositivos móviles sobre un navegador de escritorio, evitando tener que alternar entre dispositivos.

Con el lanzamiento de la versión 6.0.1, Omnis Studio sigue ofreciendo una opción rápida y flexible en la creación de aplicaciones para la web y dispositivos móviles. El jsClient de Omnis Studio nos permite crear rápidamente aplicaciones que se ejecutarán sobre un navegador en prácticamente cualquier dispositivo y en cualquier plataforma, incluyendo ordenadores portátiles, tabletas y smartphones y todo desde una misma base de código.

17 julio 2013

Omnis Studio 6: Linked List, Rich Text Editor y Dynamic Tree Lists

Propiedad: Liked List

 
 
Permite actualizar de forma dinámica el contenido una lista asociada a un campo de edición estándar, a partir de los caracteres introducidos por el usuario en dicho campo de edición.

Componente: Rich Text Editor
 
 
 
Permite al usuario editar el contenido de un campo. Con la apariencia de un procesador de textos, se proporcionan al usuario herramientas avanzadas de edición. El texto será guardado en formato HTML.
 
Propiedad: Dynamic Tree Lists
 
 
Permite que el contenido de una lista de árbol (Tree List) pueda ser construido dinámicamente y en el mismo instante en que el usuario expande un nodo, en lugar de tener que construir el árbol entero antes de abrir el formulario. 
 
Puede ver una demostración del uso de éstos y otros componentes y propiedades en: http://tinyurl.com/60gallery
 
 

23 mayo 2013

Uso de listas y gráficos

Hoy quisiera compartir con vosotros la solución a un pequeño "problema", se me pedía obtener una representación gráfica, con los accesos que se producen cada hora a la biblioteca, la idea es obtener un gráfico como el siguiente:



La "dificultad" estriba en cómo conseguir cargar la lista asociada de modo que contenga una sola fila, donde cada columna, toma su nombre de la fecha y hora, junto con su correspondiente valor. Los datos están recogidos en una tabla de Oracle. El código que da origen al gráfico mostrado es el siguiente:

Do iListaHora.$add()
Do tSQL.$execdirect("select to_char(TH_FECHAHORA,'YYYY-MM-DD HH24'),count(*) from TORNO_HISTORICO group by to_char(TH_FECHAHORA,'YYYY-MM-DD HH24') order by  to_char(TH_FECHAHORA,'YYYY-MM-DD HH24') DESC") Returns #F

If flag true
      Do tSQL.$fetchinto(iFechaHora,iCuenta) Returns lEstado
      While lEstado=kFetchOk
            Do iListaHora.$cols.$add(iFechaHora,kNumber,k0dp)
            Calculate iListaHora(iFechaHora,1) as iCuenta
            Do tSQL.$fetchinto(iFechaHora,iCuenta) Returns lEstado
      End While
End If

La notación "iListaHora.$cols.$add(iFechaHora,kNumber,k0dp)" permite ir añadiendo una nueva columna numérica por cada hora localizada en la tabla y para añadir su valor se usa el comando "Calculate iListaHora(iFechaHora,1) as iCuenta", y eso es todo, sencillo y efectivo.