Etiqueta

11 de noviembre de 2015

Omnis Data Access Modules (DAM) (Parte 2 de 3)

Los plug-in DAM Omnis, aportan conexión nativa y multi-hilo con un gran número de diferentes sistemas de gestión de bases de datos. En éste artículo mostramos una tabla de las bases de datos soportadas, según plataformas y el software adicional requerido.

Windows (disponibles en versión 32 y 64-bit)


PostgreSQL 8.1 o superior
Librería de acceso PostgreSQL; “libpq.dll” (incluida).
MySQL 4.1 o superior
No requiere software adicional.
SQLite (versión 3)
No requiere software adicional.
Amazon SimpleDB
No requiere software adicional.
OpenBase 11.x
No requiere software adicional.
FrontBase 4.x o superior
No requiere software adicional.
(Debe ser adquirido desde www.frontbase.com)
Oracle 8i o superior
Oracle Instant Client 11g 11.1.0.7 o superior
(Oracle Client 9i 9.2.0.1 o superior)
DB2 UDB 7.1 o superior
DB2 Run Time Client 7.2 (DB2 v8 max)
DB2 Express 9.0 o superior
DB2 Express-C Client 9.0 (DB2 Express-C /v9)
Sybase ASE 12.5 o superior
Open Client 15.0 o superior
(Open Client 12.5 o superior)
Sybase ASA 9.0 o superior
El uso de Open Client 12.5 con Studio 4.3 requiere un DAM específico
(ODBC) Sybase ASA 9 o superior
SQL Anywhere ODBC Driver (incluido con ASA)
(ODBC) SQL Server 7/ 2000
Microsoft SQLServer2000 Driver 2000
(ODBC) SQL Server 2005
Microsoft SQL Server Native Client 2005
(ODBC) SQL Server 2008
Microsoft SQL Server Native Client 10.0
(ODBC) Microsoft Access
Microsoft Access Driver 4.00 o superior

Mac OS X (i386)


PostgreSQL 8.1 o superior
Librería de acceso PostgreSQL; “libpq.dll” (incluida).
MySQL 4.1 o superior
No requiere software adicional.
SQLite (versión 3)
No requiere software adicional.
Amazon SimpleDB
No requiere software adicional.
OpenBase 11.x
No requiere software adicional.
FrontBase 4.x o superior
No requiere software adicional.
(Debe ser adquirido desde www.frontbase.com)
Oracle 8i o superior
Oracle10g Client 10.1.0.3 o superior (i386)
Para Studio 4.3 y PPC se necesita un DAM específico.
Sybase ASE 12.5 o superior
Open Client 12.5.2  o superior
Para Studio 4.3 y PPC se necesita un DAM específico.
(ODBC) Sybase ASA 9 o superior
SQL Anywhere, un driver “dbodbcX_r.bundle”
(Por ejemplo: “dbodbc11_r.bundle”)
Studio 4.3/5.0 requiere un DAM ODBC específico.
(ODBC) SQLServer 7 o superior
OpenLink SQL Server Express Driver v6.1 (Unicode)
OpenLink SQL Server Lite Driver v6.1 (Unicode)
Actual Technologies SQL Server Driver v2.8f o superior (El driver ODBC de Actual Technologies puede ser adquirido en www.actualtech.com)
(ODBC) Microsoft Access
OpenLink 5.1 Generic Multi-tier ODBC Driver
(El ODBC Openlink puede ser adquirido en www.openlinksw.com)

Linux (i386)


PostgreSQL 8.1 o superior
Librería de acceso PostgreSQL; “libpq.dll” (incluida).
MySQL 4.1 o superior
No requiere software adicional.
SQLite (versión 3)
No requiere software adicional.
Amazon SimpleDB
No requiere software adicional.
OpenBase 11.x
No requiere software adicional.
FrontBase 4.x o superior
No requiere software adicional.
(Debe ser adquirido desde www.frontbase.com)
Oracle 8i o superior
Oracle11g Instant Client 11.1.0.6 o superior
DB2 UDB 7.1 o superior
DB2 Run-Time Client v7.1 o superior
Sybase ASE 12.5 o superior
Open Client 15.0 o superior
Para usar el Open Client 12.5 con Studio 4.3 se necesita un DAM específico.
(ODBC) SQLServer 7 o superior
FreeTDS ODBC Driver 0.82 (Sólo para non-Unicode)
Data Direct 5.0 SQLServer Wire Protocol Driver
EasySoft ODBC-ODBC Bridge v1.4.0
El acceso ODBC ha sido testado con el administrador de driver’s unixODBC v2.2.11 (libodbc.so.1.0.0)

 

4 de noviembre de 2015

Omnis Data Access Module (DAM) (Parte 1 de 3)

Para su conexión con las diferentes bases de datos de uso más habitual (tales como Omnis Data, SQLite, MySQL y PostgreSQL) necesitamos disponer de la versión Professional de Omnis Studio y dependiendo de que base de datos se trate, puede que también sea necesario la instalación de software de terceros para el enlace con esa base de datos en particular. A continuación mostramos el esquema de conexión a bases de datos que utiliza Omnis Studio.

 

Algunos apuntes sobre DAM


La conexión a Omnis Data (.df1) se lleva a cabo a través del DAM OmnisSQL, aunque también es posible hacer uso del controlador estándar ODBC con éste mismo fin. No obstante, se debe hacer notar que OmnisSQL sólo soporta un subconjunto muy limitado de instrucciones de entre estándar SQL.

Los DAM para SQLite y MySQL no requieren de la instalación de software adicional, ya que todos los ficheros necesarios desde el lado del cliente están ya incorporadas en el DAM, aunque, debemos indicar que algunos DAM (como por ejemplo DAMAZON) dependen para su correcto funcionamiento de ciertas librerías del sistema, que deberán estar presentes.

Otros, (como Oracle y Sybase) requieren de la instalación del interface correspondiente en la máquina cliente, mientras que para PostgreSQL, (aunque todo lo necesario está incluido en el DAM) podrá requerirse de una configuración adicional para su uso.

El DAM JDBC está diseñado para su uso con el driver JDBC “type 4”, el cual no requiere de la instalación de software adicional, pero “types” inferiores a éste, si que pueden depender de la instalación de software-cliente adicional.

El DAM ODBC está diseñado para ser usado junto con un driver ODBC. Su conexión es gestionada desde el propio gestor/administrador del driver ODBC, el cual deberá haber sido instalado en la máquina cliente. Normalmente los driver’s ODBC se conectan directamente a la base de datos y no requieren del uso de software adicional.

En plataformas como Mac OS X, donde el driver ODBC no está sujeto al uso de una determinada base de datos, (lo que se denomina “multi-tier” o driver genérico) puede (por ejemplo) utilizarse para crear conexiones ODBC hacia una máquina Windows.

28 de octubre de 2015

Creación de documentos XML mediante oXML

El componente externo oXML hace fácil la gestión de documentos XML desde nuestras aplicaciones Omnis. Cada nodo es tratado como un objeto independiente, lo cual facilita su localización y edición. Para la creación de un documento XML será necesario componer un objeto Omnis con el elemento DOM como subtipo, al cual iremos añadiendo los diferentes elementos que lo compondrán, mediante los métodos disponibles al efecto en el objeto DOM construido.

 

Creación de un documento XML


Para crear un documento XML, primero deberemos crear un objeto “DOM document” (“external objects-≥DOM document”). Este será el objeto principal del documento, mediante el cual podremos crear, buscar, editar y eliminar cualquiera de los nodos de que conste nuestro documento.

 

Adición de un elemento


Un documento XML está compuesto de varios “elementos” (también considerados objetos para oXML). Cada elemento posee un nombre, pero también puede poseer otras propiedades asociadas (explicados más adelante), tales como atributos, texto y comentarios. Cada elemento puede a su vez contener otros (conocidos como hijos), creándose así una estructura de tipo árbol, asociada al documento XML.

Tanto éstos elementos, como todos los demás objetos, son creados por el “DOM document”, mediante su conjunto de métodos “$createXXX()”. Por ejemplo, el método siguiente nos devuelve un objeto-elemento “oRoot”, de nombre “Root”:
; oXML es de tipo “Object”, con “DOM document” como subtipo
; lError es de tipo “Character”
; oRoot es de tipo “Object”, con “DOM Types-≥DOM Element” como subtipo
; oObj es de tipo “Object”, sin subtipo
; oElement es de tipo “Object”, con “DOM Types-≥DOM Element” como subtipo
Do oXML.$createelement("Root",lError) returns oRoot

Una vez obtenido el objeto-elemento, deberá ser insertado en el documento. Esto, deberá hacerse desde el propio objeto-elemento, el cual (en nuestro caso) se convertirá en el elemento padre del documento. Para hacer esto los objetos-elemento disponen de los siguientes dos métodos:

  • $appendchild() …que inserta el elemento al final de su lista de hijos.
  • $insertbefore() …que inserta el elemento delante del indicado.

Puesto que aún no existen otros elementos, al crear el primero, deberemos utilizar el objeto “DOM document” como padre: esto creará lo que se conoce como elemento “Root” o elemento-raíz, el elemento-raíz es único, es decir sólo puede existir uno y todos los demás elementos son descendientes de este.
Do oXML.$appendchild(oRoot ,lError)
Do oXML.$createelement("Elemento1",lError) returns oObj
Do oRoot.$appendchild(oObj, lError)

Mediante el método expuesto anteriormente insertamos el elemento-raíz en el documento y a continuación, obtenemos un segundo elemento (de nombre “Elemento1”), que es retornado sobre oObj (oObj ha sido declarado como un objeto sin subtipo, ya que es definido al obtenerse el elemento). Después insertamos el elemento como hijo de “oRoot”.

 

Propiedades de los Elementos


A pesar de que en nuestro ejemplo, ahora disponemos de algunos elementos-objeto, éstos aún no contienen información. Un elemento-objeto puede tener asociadas varias propiedades. Todos ellas son añadidas como hijos del propio elemento, esta operación es llevada a acabo del mismo modo que se añaden elementos-hijos a sus primarios. Los cuales pueden ser insertados delante o detrás del propio elemento.

 

Adición de textos


Existen dos modos diferentes de incluir un texto, los cuales denominaremos como “analizado” y “no analizado”. El método mas habitual es el “analizado”, lo que significa que su “analizador XML” deberá evaluar el texto. Por ejemplo, que el texto “Manzanas & amp; Peras” esté equiparado al texto “Manzanas & Peras”. El uso del modo “no analizado” no llevará a cabo la evaluación del texto, lo que significa que sea expresado literalmente, en nuestro caso, “Manzanas & amp; Peras”, sin filtrado de sus elementos.
; para crear un texto “PARSED” o “analizado”
Do oXML.$createtextnode("Manzanas & Peras", lError) returns oObj

; para crear un texto “UNPARSED” o “no analizado”
Do oXML.$createcdatasection("Manzanas & Peras", lError) returns oObj

Lo anterior, obtendrá un nodo de tipo texto con su texto, que después deberemos agregar del modo siguiente:
Do oElement.$appendchild(oObj, lError)

Adición de atributos


Los atributos son añadidos de modo muy sencillo. Tan sólo se requiere un nombre y un valor y son asociados al elemento mediante el uso de su propio método “$setattribute()”, tal y como mostramos a continuación:
Do oElement.$setattribute('Color','rojo',lError)

Lo anterior agregará el atributo Color = "rojo" al elemento oElement. Para añadir otros atributos al mismo elemento tan sólo deberemos repetir el proceso. Los atributos también pueden ser añadidos mediante el método “oXML.$createattribute()”, pero, en éste caso el atributo será añadido como un hijo.

 

Adición de comentarios


Los comentarios no son procesados por los analizadores XML, sólo están presentes para mejorar la legibilidad del documento XML. Son creados del siguiente modo:
Do oXML.$createcomment(‘Nuestro comentario', lError) Returns oObj
Do oElement.$appendchild(oObj, lError)

Instrucciones de procesamiento


Las instrucciones de procesamiento, proporcionan al XML, el modo específico en que deberá gestionarse la información contenida en el texto del documento. Formados por una “etiqueta” y un valor, proporciona la información necesaria para cumplir con su objetivo. (por ejemplo. Etiqueta = “xml-stylesheet”, valor = “type=’text/xsl’ href=’template.xsl’”. Estos también son considerados objetos, por lo que, deberemos hacer uso de un método predefino para la obtención de éste tipo de objetos, en éste caso será “oXML.$createprocessinginstruction()”, después deberemos añadirlo como hijo de un elemento.

 

Entidades


Las entidades están declaradas en el propio objeto “DOM DocumentType”. oXML utiliza el nivel 2 del DOM, el cual no permite la edición o creación de objetos “DocumentType”. Por lo tanto, el componente oXML sólo permite la lectura de las entidades ya incluidas en el propio documento XML.

 

Generación del fichero XML


Una vez construido el documento DOM en Omnis con todos sus elementos, tendremos que guardarlo en un archivo con extensión “.xml”. Para ello, disponemos del método “$savefile()” del propio objeto DOM, su modo de uso es el siguiente:
Do oXML.$savefile("C:\MiCarpeta\MiXML.xml", lError, kFalse, kXMLFormatFull)

El último argumento del método “$savefile()” nos permite especificar el formato del archivo XML a grabar. Las opciones de formato permiten especificar si se desea o no, añadir retornos de carro y saltos de línea, eliminar espacios, etc. diferentes “analizadores” podrán requerir de  ajustes en el formato del archivo XML resultante.

Existen otros métodos ya definidos para el objeto DOM, que podrían resultarnos útiles, pero en éste artículo, sólo les hemos presentado los básicos y a su vez suficientes en la mayoría de los casos, también nos proporciona una idea sobre como hacer uso de estos otros.

En Aula Omnis, podrá encontrar para su libre descarga, la librería de ejemplo “XMLex.zip” que muestra los métodos utilizados en éste artículo.