sábado, 1 de mayo de 2010

IronPython y Sybase DataWindow .NET, en SharpDevelop, y 1.


Hola. Os presento una serie de artículos en donde vamos a ver como trabajar con IronPython y el objeto estrella de Sybase, el DataWindow .NET, desde el entorno de desarrollo de SharpDevelop.

Como he dicho en otros post, he trabajado años con PowerBuilder y los objetos Datawindow, siendo este último, y desde mi punto de vista, el objeto más potente para trabajar con bases de datos. Por otra parte, Python tiene una sintaxis mucho más fuerte y versátil que Powerscript (lenguaje en PowerBuilder). Por tanto, ¿cómo juntar lo mejor de ambos mundos, de una manera fácil y sencilla? A través de IronPython, utilizando SharpDevelop como herramienta de desarrollo.

Estas tres herramientas trabajando juntas son una opción muy seria, a tener muy en cuenta , si se quiere realizar un proyecto de alto nivel empresarial, dada la estabilidad de IronPython y la eficacia del objeto DataWindow en el acceso a datos. Si todo ello se trabaja en un entorno de fácil aprendizaje y cómodo para trabajar, como SharpDevelop, el éxito está garantizado (¡a falta del talento y pericia del desarrollador, por supuesto, el cual no se discute!)

DATAWINDOW .NET, ¿y esto qué es?

Para saber lo que es un objeto DataWindow primero hay que saber de donde viene, y para esto hay que hablar de PowerBuilder.

PowerBuilder es una herramienta de desarrollo de clase empresarial desarrollada por la empresa Sybase. PowerBuilder es un lenguaje orientado a objetos y permite el desarrollo de diferentes tipos de aplicaciones y componentes para arquitecturas cliente/servidor, distribuidas y Web.

PowerBuilder incluye, dentro de su ambiente integrado de desarrollo, herramientas para crear la interfaz de usuario, generar informes y tener acceso al contenido de una base de datos. Además incluye un lenguaje propio, el Powerscript, el cual es usado para especificar el comportamiento de la aplicación en respuesta a eventos del sistema o del usuario.

PowerBuilder posee un objeto nativo para la gestión de datos llamado DataWindow, el cual puede ser usado para crear, editar y visualizar datos de una base de datos. Este objeto da al desarrollador un conjunto amplio de herramientas para especificar y controlar la apariencia y comportamiento de la interfaz de usuario, y también brinda acceso simplificado al contenido de la base de datos, liberando al programador de las diferencias entre sistemas de gestión de base de datos de diferentes proveedores.

Sybase ha introducido en el mercado el DataWindow.NET, un componente que extiende las bondades del DataWindow y acelera el rendimiento de aplicaciones en ambientes de desarrollo .NET. Dicho componente se separa de Powerbuilder, de manera que puede ser utilizado en el Framework .NET de Microsoft.

Decir que DataWindow .NET es propiedad de Sybase, y por tanto es un componente de pago. De todas formas su precio no es tan desorbitado como otras opciones de desarrollo del mercado. Más información sobre esto en:
http://www.sybase.es/products/modelingdevelopment/datawindownet

Se puede descargar una versión de prueba del objeto DataWindow .NET, desde la propia página de Sybase, con un periodo de prueba de 45 días. También se puede obtener el componente Datawindow . NET de la web de Component Source, en:
http://www.componentsource.com/products/sybase-datawindow-net/downloads-es.html, con un periodo de pruebas de 30 días.

Más adelante veremos cómo funciona un objeto DataWindow.

INSTALACIÓN DE DATAWINDOW .NET...

Se supone que el lector tiene instalado previamente SharpDevelop y IronPython. Para más información sobre esto, leer el siguiente artículo de El Viaje del Navegante.

Una vez descargado DATAWINDOW .NET nos diponemos a instalarlo. En mi caso, lo he descargado de Component Source. Ejecuto el instalador. Comenzamos...

Ejecutamos Autorun.exe

Se recomienda previamente instalar SQL Anywhere, el cual es un gestor de bases de datos de Sybase. Dicho sistema contiene bases de datos de ejemplos para prácticar con DataWindows.

A continuación instalo el DataWindow .NET.

Se recomienda instalar todo lo que viene marcado por defecto.

Ya tenemos instalado el Sybase DataWindow .NET.

... E INTEGRACIÓN CON SHARPDEVELOP

Arrancamos el IDE SharpDevelop. Creamos una nueva solución, esto es, una aplicación Windows en IronPython.

Hasta aquí todo normal. Hemos creado una aplicación Windows con IronPython como lenguaje de desarrollo. ¿Dónde está el componente DataWindow? Hay que integrarlo en el cuadro de herramientas de SharpDevelop. ¿Cómo? Haciendo click en botón derecho sobre la caja de herramientas tenemos:

Vamos a buscar el componente DataWindow. Hacemos click en Personalizar barra lateral.

Un click en Windows Data.


Hacemos click en Añadir componentes.

Seleccionamos la pestaña de Personalizado, para buscar el fichero DLL del DataWindow . NET. En mi caso el componente está en:

D:\Archivos de programa\Sybase\DataWindow .NET 2.5\.

El fichero es DataWindow.dll
.

Click en "Mostrar componentes".

Hacemos click en OK y ya lo tenemos cargado.


Podemos ver los nuevos componentes en la caja de herramientas:


DataWindowControl: Control Datawindow visual.

Datastore: Control Datawindow no visual , con las mismas funcionalidades que el visual, pero sin visualizar gráficamente. Conceptualmente muy parecido a un objeto ADO de Microsoft.

Transaction
: Objeto transacción. Sirve para especificar una conexión con una base de datos. Hace de puente entre una base de datos y un control DataWindow ó DataStore.

Ahora vamos a insertar el control DataWindow en la ventana del diseñador, simplemente seleccionando y soltando en la ventana, como cualquier otro objeto visual.


Y aquí lo tenemos, el componente Sybase DataWindow .NET integrado en SharpDevelop.

Si ejecutamos la aplicación veremos el siguiente error:

El texto de error:

IronPython.Runtime.UnboundNameException: global name 'Sybase' is not defined en Caller.Call en BuiltinFunctionCaller.Call5 en System.Dynamic.UpdateDelegates.UpdateAndExecute7 en IronPython.Runtime.Importer.Import en IronPython.Runtime.Operations.PythonOps.InitializeModule en PythonMain.Main
Indica que no está definido Sybase, esto es, no está cargado el módulo correspondiente. Es por ello que hay que decirle a IronPython que cargue Sybase, mediante un import Sybase.


CREANDO UNA APLICACIÓN DE GESTIÓN

A partir de aquí vamos a crear una pequeña aplicación de gestión, utilizando IronPython y DataWindow .NET en SharpDevelop. Lo primero es crear una pequeña base de datos. El SGBD elegido será MySQL. El diagrama de E-R es el siguiente:

Se trata de una pequeña base de datos para registrar clientes y sus facturas asociadas. La conexión a la base de datos se hará mediante ODBC.

El siguiente paso es diseñar los DataWindows que acceden directamente a las tablas. Vamos a crear dos tipos de mantenimientos:

  1. Mantenimiento maestro de clientes, para la gestión de clientes.
  2. Mantenimiento maestro - detalle, para la gestión de facturas.

DISEÑANDO DATAWINDOWS CON DATAWINDOW DESIGNER


Una vez que tenemos el componente DataWindow integrado con SharpDevelop y IronPython, vamos a diseñar nuestros objetos DataWindow a partir de una base de datos. Lo primero es ejecutar el diseñador, que está en:

Conectando con la base de datos

Especificamos la conexión con la base de datos requerida.

Click en New. Desactivamos Commit on Disconnect y en la pestaña Transaction activamos Disable Bind. Queda tal que así:

Si nos vamos a la pestaña Preview podemos ver la cadena de conexión generada:

Esto es:

' Profile gestion_facturas
SQLCA.Dbms = Sybase.DataWindow.DbmsType.Odbc
SQLCA.AutoCommit = False
SQLCA.DbParameter = "ConnectString='DSN=gestion_facturas;UID=root;PWD=1234',CommitOnDisconnect='No',DisableBind=1"


¡Ya tenemos creada la conexión!

En el siguiente post veremos cómo crear un proyecto con esta herramienta de Sybase.

Saludos.

No hay comentarios:

Publicar un comentario