29 mayo 2014

jsClient: El objeto SQL ($selectfetch())

$selectfetch()

Do oSQL.$selectfetch(cSQL,lBindVars,iFetchCap) Returns id

Ejecuta una sentencia y retorna un conjunto de resultados (normalmente de un “select” o un “select distinct”). 

  • cSQL
  • Es la declaración. Ya sea que la hayamos escrito o bien proporcionada mediante la ejecución de un $select/$selectdistinct sobre una clase “schema” o “query”. cSQL puede contener variables en la forma @[nombre_columna], donde nombre_columna es el nombre de una columna indicada en lBindVars. 
  • lBindVars
    Es una variable de tipo “row” con las columnas que van a ser referenciadas mediante marcadores “bind” en la sentencia SQL.
  • iFetchCap
    Permite indicar el número máximo de filas que serán devueltas (si es kFetchAll se recuperarán todas las filas posibles).

Naturalmente lBindVars puede contener columnas a las que no se hace referencia en el texto o sentencia SQL. En éstos casos, sólo las columnas referenciadas mediante marcadores “bind” serán leídas. Al finalizar, se invocará el método $sqldone() pasando los siguientes parámetros:

  • El ID de la solicitud (el mismo que retorno el $selectfetch) 
  • Una lista conteniendo cero o más filas del conjunto de inicial de resultados.

En este punto, será responsabilidad del desarrollador copiar y/o visualizar los resultados sobre el “remote-form” del modo que desee, a fin de mostrar los resultados al usuario.

Ejemplo 1:

Do iList.$definefromsqlclass('myQuery')
Do oSQL.$selectfetch($clib.$queries.myQuery.$select,iList,100) Returns id

Ejemplo 2:

Do oSQL.$selectfetch('select * from Tabla1 where edad = @[edad]’,lBindVars,100) Returns id

28 mayo 2014

Nueva versión Omnis Studio 6.1

TigerLogic anuncia el lanzamiento de Omnis Studio versión 6.1 con interesantes novedades centradas principalmente en el desarrollo web y aplicaciones móviles. Omnis Studio 6.1 incluye mejoras en jsClient. Código ejecutable en modo 64 bits, soporte para RESTful Web Services y otras que resumimos a continuación.


64-bit Omnis


El ejecutable ha sido rediseñado para su uso con procesadores de 64 bits estando inicialmente disponible para Omnis Server y para todas las plataformas soportadas. Las actuales versiones 32 bits, incluyendo el SDK, runtime, y server, seguirán estando disponibles para Windows y OSX, aunque ya se ha anunciado el lanzamiento de la versión  64 bits del SDK.

Servicios Web (Web Services)


Se añade soporte para REST, un modelo de Web Service que está siendo muy popular. El Web Service RESTful es identificado mediante un URI, el cliente interactúa con el recurso a través de peticiones y respuestas HTTP. El nuevo componente Web Services proporcionará tanto el cliente como el servidor con soporte RESTful. Se ha añadido un nuevo plug-in para permitir que el servidor de aplicaciones Omnis publique un servicio web RESTful.

Componentes JavaScript


Se han añadido más controles JavaScript para dotar a las aplicaciones de una apariencia "nativa", es decir adaptada a las distintas plataformas y/o dispositivos en los que se ejecuta su aplicación Omnis. Tanto el estilo como su apariencia son definidos mediante controles CSS adaptables a cada plataforma. Estos nuevos componentes JavaScript podrán localizarse dentro de un grupo específico en el "Component Store". Además de esto descubriremos algunas mejoras generales de rendimiento al trabajar con jsClient.

Utilidad "Screen Size Sync"


Tras la creación de cualquier "remote form", los campos y otros controles en el contenidos podrán re-colocarse para aparecer en el tamaño y posición correctas según las posibles orientaciones de pantalla, incluyendo entornos de escritorio, tablets y smartphone. Omnis Studio 6.1 permite configurar y guardar automáticamente los componentes según los diferentes diseños localizados en el mismo "remote form", lo cual significará un más que considerable ahorro de tiempo a la hora de construir nuestras aplicaciones, logrando a la vez que éstas resulten más consistentes.

Otras mejoras


  • Una nueva ventana de vista previa para las salidas impresas, permite al usuario seleccionar el texto y de recorrer el informe mediante una lista de páginas situada al margen de la ventana. 
  • El número máximo de líneas permitidas en un método Omnis se ha aumentado de 1.024 a 256.000.
  • Se permite la comparación de variables de tipo binario, objeto y referencia a objeto, en el código. (las variables usadas a cada lado del operador debe ser del mismo tipo)
  • Los separadores de idioma ($separators), ahora pueden ser guardados para cada hilo, en caso de usarse un servidor de aplicaciones multi-hilo.
  • Los "object reference" se borran automáticamente liberando espacio en la memoria.

26 mayo 2014

jsClient: El objeto SQL ($getlasterrortext y $getlasterrorcode)

El objeto SQL


Una aplicación de tipo “Serverless” obtiene el acceso a la base de datos integrada mediante un objeto SQL especial localizado como: $cinst.$sqlobject

Ejemplo de uso:

Calculate oVar as $cinst.$sqlobject

Todas las interacciones con el objeto SQL son asíncronas (excepto $getlasterrortext y $getlasterrorcode), podrá usarse con  métodos que sólo pueden ser ejecutados del lado del cliente, (“client-executed”) un método especial denominado “$sqldone” de la instancia “remote-form” será invocado al concluir su ejecución. Cada solicitud o sentencia SQL, retorna un identificador y ese mismo identificador será pasado como parámetro al método de $sqldone, permitiéndose así identificar la solicitud o sentencia. Esto significa que en un determinado momento, podrán existir múltiples peticiones o sentencias SQL en curso, aún a pesar de que la aplicación las va ejecutando secuencialmente.

Tenga en cuenta que, aunque no es obligatorio proporcionar un método $sqldone, los errores serán ignorados si no lo hace. En caso de éxito, el identificador devuelto tendrá un valor positivo, mientras que un valor negativo indicará un código de error.

De aquí en adelante, mostraremos el uso de una variable de tipo “var” denominada “oSQL” y que suponemos contiene el objeto SQL devuelto mediante $cinst.$sqlobject.

$getlasterrortext()


Do oSQL.$getlasterrortext() Returns lErrText

Devuelve el texto de error tras la última operación. El valor "OK" indicaría éxito.

$getlasterrorcode()

 

Do oSQL.$getlasterrorcode() Returns lErrCode

Devuelve el código de error tras la última operación. El valor 0 indicaría éxito.

22 mayo 2014

jsClient: Bases de datos soportadas

La aplicación-esqueleto o "wrapper" jsClient incluye soporte integrado para SQLite y UltraLite de Sybase, en ambos casos se proporcionan métodos ejecutables desde el lado del cliente, que permiten un acceso total SQL sobre los datos almacenados en el propio dispositivo móvil. El acceso a éstas bases de datos locales, sólo podrá realizarse en aplicaciones de tipo “Serverless” ya que pueden ser ejecutadas en modo “off-line”.

Todas las interacciones entre el jsClient y la propia aplicación será asíncrono, lo cual cambia muy significativamente el modo en que estamos acostumbrados a usar el código SQL en Omnis.

Las clases “Schema” y “Query”

Cuándo se trata de métodos que sólo pueden ser ejecutados del lado del cliente, el propio editor de métodos restringe el uso de los $definefromsqlclass, sólo podrán usarse con una “query” o con un “schema” como primer argumento, permitiéndose (opcionalmente) seleccionar un subconjunto de nombres de columnas, mediante el uso de dos o más argumentos:

Do listOrRow.$definefromsqlclass(‘SchemaName’)

Tipos de datos

Tras crear variables de tipo “row” podrá agregar columnas, pero es importante que los tipos de datos de éstas coincidan con el tipo de datos definido en la propia base de datos.

Los métodos que sólo pueden ser ejecutados del lado del cliente, sólo permiten el uso de un tipo de variable, el tipo “var”, que generalmente es interpretado como tipo “Character”, por lo que teniendo en cuenta ésta circunstancia, es más seguro agregar nuevas columnas a una “row” manualmente, usando la función:

Do lRow.$cols.$add(,,,[])

por ejemplo:

Do lRow.$cols.$add('Edad',kInteger,kShortint)

09 mayo 2014

Nuevo Video-Tutorial en Aula Omnis

Nuevo Video-Tutorial producido por "Aula Omnis Studio", en el que se puede ver como crear un sencillo Servicio Web, así como un cliente para éste mismo Servicio Web con la herramienta de programación Omnis Studio 6.0.1