Etiqueta

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