Etiqueta

11 diciembre 2012

Objetos SQL Worker de Omnis Studio 6.0

Objetos SQL Worker de Omnis Studio 6.0

¿Qué son?

Bajo el capó de la nueva versión Omnis Studio 6.0, nos encontramos que la mayor parte de los DAM's soportan un nuevo objeto denominado "statement worker". El "SQL Worker Object" puede ser añadido como subclase en una clase "Object" con su "statement worker", tras lo cual podremos utilizar el objeto "worker", para la ejecución (en modo desatendido o multitarea) de sentencias SQL de larga duración (tales como SELECT), lo cual liberará su aplicación para continuar con otros procesos. Más importante aún, liberará la "interface" del usuario, de modo que su aplicación pueda seguir respondiendo ante los eventos que se puedan producir y no sólo ésto, también podrá disponer (si es necesario) de varios "SQL Worker Object", asignando cada uno de ellos a una tarea o  "statement worker" independiente.

¿Qué, no son?

No será posible sustituir los objetos de sesión DAM ya existentes, por los nuevos "Worker Object", ya que éstos funcionan de modo asíncrono. Esto significa que la ejecución de un $fetch() no devolverá resultados de modo inmediato, será necesario esperar a que la tarea "statement worker", (que está siendo ejecutada en modo desatendido) haya concluido, será entonces cuando se produzca el "call back" o retorno de llamada desde el propio objeto, el cual suministrará también el conjunto de resultados correspondiente a su ejecución. Naturalmente usted podrá escribir código en el método correspondiente para el tratamiento del evento.

¿Quiere saber más?

Si es miembro activo del programa ODPP de Omnis y desea probar los nuevos "SQL Worker Object", así como el resto de las nuevas funcionalidades que aporta Omnis Studio 6.0, puede solicitar su participación en el programa beta desde la web de TigerLogic.

También siga atento a éste blog, donde seguiremos publicando pequeños artículos, sobre la nuevas funcionalidades de Omnis Studio.

22 octubre 2012

Nueva versión Omnis Studio 5.2.3

Según parece no podemos esperar mucho de ésta versión, ya que en realidad se trata de un trabajo de mantenimiento y por lo tanto no tiene grandes novedades aunque si una destacable.

Algunos de los problemas corregidos son:

  • Problema al utilizar Omnis Data Bridge, Omnis se volvía muy lento al cabo de unos días, debido a un consumo anormal de memoria.
  • El método $control no se activaba cuando el $event se ejecutaba en el cliente.
  • Problemas con STRINGTABLE cuando el "form" contenía un "Data grid" definido por el usuario ($userdefined = ktrue).
  • Problemas al cargar scripts desde un "subform" perteneciente a otra biblioteca.
  • Mal funcionamiento del selector de fecha según los diferentes husos horarios.
  • Error con Internet Explorer 8 en Windows XP.
  • Problemas con STRINGTABLE y Omnis App Server.
  • Ocasionalmente las listas de datos no se mostraban completas (sólo la primera columna)
Pero sin duda, lo que si es una novedad y (creo que largamente esperada) es que ahora es posible
la justificación de un texto en un informe a ambos márgenes, ésto se consigue mediante la asignación de "kJustifiedJst" a la propiedad "$align" del campo de texto.


Podréis descargar la nueva versión desde el siguiente enlace: Descargar

29 junio 2012

Nueva versión Omnis Studio 5.2.2


En la versión anterior la (5.2.1) vimos la incorporación de importantes novedades, como la inclusión del comando (ejecutable desde el lado del cliente) "JavaScrip:". Pero al mismo tiempo TigerLogic, ha seguido atento a las peticiones que les han ido llegando por parte de desarrolladores de todo el mundo, como consecuencia de ello, ya tenemos lista para su descarga una nueva versión 5.2.2, que soluciona varios de los problemas encontrados y en circunstancias muy concretas.

Si desea conocer con detalle los problemas solucionados pulse sobre éste enlace.

11 junio 2012

Sobre el nuevo comando JavaScript:


La versión 5.2.1 de Omnis Studio nos proporciona un nuevo comando denominado JavaScript: (incluyendo los dos puntos) que nos permite ejecutar cualquier código JavaScript sobre el navegador del cliente, incluyendo la ejecución de código JavaScript incrustado o vinculado a la página HTML que contiene el formulario desde donde se ha activado el "remote form".

Omnis no realiza ningún tipo de verificación sobre del código insertado, simplemente ejecutará el comando JavaScript:, por lo que cualquier error que contenga deberá ser tratado mediante la consola JavaScrip del propio navegador. Tampoco será posible incluir notaciones entre corchetes, ya que el código incluido en éstos, es evaluado en el servidor y antes de la ejecución del comando.

Un ejemplo sencillo sería mostrar un mensaje en el navegador mediante el método JavaScript "alert()", del siguiente modo:

javascript: alert("Hola Mundo");

Puesto que el comando ejecuta código JavaScript nativo, el método deberá ser ejecutado desde el lado del cliente, es decir debe ser un método Omnis definido para ser ejecutado sobre el cliente, de hecho, el comando JavaScript: sólo aparecerá sobre la lista de comandos del editor de métodos, si está habilitada la ejecución de métodos en el cliente. Omnis no permitirá que el comando JavaScript: pueda ser ejecutado sobre el servidor (se produciría un error).

A continuación, mostramos un ejemplo de como ejecutar código JavaScrip, que ha sido incrustado en la página HTML que contiene a su vez la llamada al "remote form" inicial.

Retomando el comando del ejemplo anterior "alert()", integraremos una función JavaScript en la página HTML, del modo siguiente:



Ahora ejecutaremos la función desde Omnis, usando el comando JavaScript del siguiente modo: JavaScript:

show_alert();

De éste modo podremos usar el comando JavaScript: para (por ejemplo) "provocar" eventos sobre Google Analytics y realizar el seguimiento de ciertas acciones o eventos de nuestra aplicación.

Para esto tendremos primero que agregar el código Web de Google Analytics proporcionado por Google en nuestra página HTML (que contiene la llamada al "remote form") y ejecutar la función gaq.push() desde Omnis. De éste modo podemos llegar a crear un controlador de eventos mediante el nuevo comando JavaScript:

Un modo de implementar ésta función sería mediante la creación de un método $init con las siguientes funciones:

JavaScript:
    document.getElementById ("jsTEMP1_1076_client").onselect=function(
    event) {__ form.callMethodEx ("selected", 0, event); };

JavaScript:
    window.addEventListener("keydown", function (event) {
    __form.callMethodEx ("keydown", 0, event)}, true);

Debemos tener en cuenta que ambos ejemplos hacen uso de "__form.callMethodEx" para ejecutar un método del "remote form" instanciado. El segundo parámetro (cero en nuestro ejemplo), es un "flag" o bandera que controla cómo debe ejecutarse "callMethodEx" y siempre deberá ser cero.

Podremos hacer uso del método $init para suministrar información adicional acerca de (por ejemplo) el estilo de los controles en el formulario. Por ejemplo:

Do $cinst.$objs.$sendall($cinst.$addboxshadow($ref))

"$addboxshadow" contiene el método del "remote form" pasado mediante el parámetro pObj.

El siguiente comando JavaScript:, agregará una sombra a la caja si el navegador lo soporta.

JavaScript: pObj.elem.style.boxShadow = "0px 0px 5px 5px # 888888";

01 junio 2012

Nueva versión Omnis Studio 5.2.1

Omnis Studio 5.2.1 ofrece ahora mayor velocidad y facilidad de uso, nuevos métodos del lado del cliente, además de nuevos componentes para el control de mapas y gráficas. (Para más información vea el documento: Novedades de Omnis Studio.

  • Capacidad para ejecutar métodos en el cliente, en lugar de en el servidor Omnis.
  • Interfaz de usuario más rica y un nuevo comando JavaScript que permite la ejecución de código nativo del lado del cliente.
  • Nuevo componente "Mapa": Permite mostrar una ubicación sobre un mapa de Google, con los marcadores y con total control sobre el tipo de mapa y nivel de zoom.
  • Nuevo componente "Gráfica": Muestra una gráfica a partir de los datos contenidos en una variable de tipo lista de Omnis. (Para ver una muestra, pulse aquí)

15 mayo 2012

Webinar en Castellano


Nos llegan buenas noticias desde TigerLogic, desde hoy los ya famosos Webinars de formación on-line, se amplían con dos nuevos idiomas (Español e Italiano). Sin duda una buena noticia para todos los desarrolladores de habla hispana.

Además la hora y el día (en el caso del español) ha sido pensada para que la mayor parte de sudamérica, pueda participar de los cursos de formación on-line.

Información e inscripción en: http://www.tigerlogic.com/tigerlogic/omnis/developers/webinar_es.jsp

13 marzo 2012

Las 22 claves para el éxito de una página Web

  1. Enfoque su contenido hacia una audiencia lo más aperturista posible.
  2. Participe en los foros donde su público se reúne.
  3. Cree un contenido amigable.
  4. Use Twitter, Facebook y Google+ para compartir mensajes y crear nuevos enlaces.
  5. Instale Google Analytics, para analizar los resultados.
  6. Añada imágenes, fotos e ilustraciones (conteniendo enlaces hacia su web)
  7. Realice actividades de investigación sobre palabras clave al escribir sus mensajes.
  8. Haga múltiples referencias a sus propios mensajes y a los de los demás.
  9. Participe en redes sociales de intercambio como Likedin, Reddit y StumbleUpon.
  10. Blog invitado (publique comentarios de sus visitantes).
  11. Mejore el diseño en su Web.
  12. Interactuae con comentarios en otros blogs.
  13. Participe en websites de consulta como Wikipedia, Answers.com y Quora.
  14. Posibilite la suscripción a través de Feed y E-mail.
  15. Asista y organizar eventos.
  16. Firme los correos electrónicos con enlaces a la web.
  17. Encueste a sus lectores.
  18. Muestre un ranking de las consultas más populares
  19. Introduzca valoraciones hacia su web.
  20. Incluya en sus perfiles públicos enlaces hacia su web.
  21. Descubra que webs, contienen enlaces hacia la suya.
  22. Sea constante y no permita que se produzcan altibajos.

01 marzo 2012

AppleScrip para montar y desmontar discos


set diskName to "NombreDelDisco"
tell application "Finder"
if disk diskName exists then
    eject disk diskName
else
    tell current application
        set deviceLine to (do shell script "diskutil list | grep \"" & diskName & "\" | awk '{ print substr($0,69,9) }'")
        if deviceLine = "" then
            display dialog "El disco \"" & diskName & "\" no pudo encontrarse." buttons {"OK"} default button 1 with title "Error" with icon caution
        end if
        set foundDisks to paragraphs of deviceLine
        repeat with i from 1 to number of items in foundDisks
            set this_item to item i of foundDisks
            if this_item contains "disk" then
                do shell script "diskutil mountDisk/dev/" & this_item
            end if
        end repeat
    end tell
end if
end tell

06 febrero 2012

Error. Code # 801: , in worng place


El título de ésta entrada, obedece a un problema que se presenta cuando usamos OMSQLDAM, consultando una tabla, que contiene a su vez una columna numérica con decimales (usando "," como separador de decimales) y al ejecutar sobre ella la sentencia SQL indicada a continuación desde la ventana del "Interactive SQL":

SELECT SUM(ColumnaDecimal) FROM Tabla

El resultado de ésta consulta es el descrito, como título de ésta entrada ¿Cuál es la solución?

En un principio podría pensarse, que cambiando el parámetro de sesión $sqldecimalseparator sería suficiente, pero cual será nuestra sorpresa al ver que, tras cambiar éste parámetro obtenemos el mismo mensaje de error.

La solución nos llega por gentileza de un avezado desarrollador Omnis, Elías Gil de Caceres (España), la solución reside en el uso del método $root.$prefs.$separators.

Este método nos permite conocer o fijar los caracteres de separación que OMNIS deberá usar, su único parámetro será una cadena de 5 caracteres (dp,thou,func,imdp,imsep), si se omite el parámetro el método nos devolverá su estado actual, de otro modo se fijaran los que especifiquemos.

Método: $separators([cSeps])

Parámetro:

Carácter 1 (dp): carácter usado como separador de decimales
Carácter 2 (thou): carácter usado como separador de miles
Carácter 3 (func): carácter usado como separador entre los parámetros de una función 
Carácter 4 (imdp): carácter usado a la hora de importar/exportar cifras decimales 
Carácter 5 (imsep): carácter usado como delimitador durante una importación/exportación


De modo que: $root.$prefs.$separators('.,,.,') nos permitirá, fijar el modo de uso anglosajón y evitar así que se produzca el error ya mencionado. Usaríamos: $root.$prefs.$separators(',.,,,') para fijar de nuevo el modo español, donde la "," es usada como separador de decimales.


Los argumentos de éste método serán guardados en el archivo omnis.cfg, desde el cual Omnis tomará su estado inicial. Damos las gracias, en especial a Elías Gil de Caceres (España) por su aportación a éste blog.

13 enero 2012

Manual de Programación

Obtenga el Manual de Programación Omnis Studio en Casellano

¡¡ Gratis !! 

Adquiriendo una licencia o una actualización de cualquier producto Omnis Studio a través del distribuidor oficial (http://www.softpi.com), recibirá una copia en formato PDF.

Si desea más información, mande un e-mail a: framosmu@softpi.com