Archive for April, 2007

Que es Genexus

Saturday, April 28th, 2007


GeneXus nace en 1984 cuando Breogán Gonda y Nicolás Jodal (presidente y vicepresidente de ARTech) enfrentaban un gran desafío en São Paulo, Brasil.
Era un proyecto un proyecto de reingeniería con mainframes en la empresa Alpargatas.
El primer análisis dio que se precisaban unas 700 tablas, algo que era para aquella época, imposible de mantener para un proyecto de un año y 2 personas.

Entonces buscando la forma más inteligente de realizar este proyecto, descubrieron un nicho de mercado, “Generación inteligente de aplicaciones, basadas en conocimiento”.
En otras palabras, crearon una herramienta de desarrollo multiplataforma, donde el Analista, tiene su foco en el conocimiento del negocio, dejando que GeneXus se dedique a la programación de bajo nivel.
Esto permite que el programador, no tenga que conocer el lenguaje de programación de bajo nivel, ya que GeneXus crea el código fuente necesario en el lenguaje deseado y para la base de datos que se decida.

Genexus cuenta con 3 ambientes, diseño, prototipo y producción.
La idea de GeneXus, es automatizar todo lo automatizable, normailización de base de datos, mantenimiento de la misma, (lo que usualmente se llama como “reorg”)

GeneXus ha evolucionado desde los inicios, cuando en 1989 lanzaron al mercado la primera versión de GeneXus, con generadores COBOL y RPG para AS/400, hasta el día de hoy que genera aplicaciones para las principales plataformas de software: Java, :NET, y dispositivos móviles (.NET); para los sistemas operativos Windows, Unix, Linux y OS/400; y soporta las bases de datos más populares en ele mercado:DB2, Oracle, SQL Server, PostgreSQL, y mySQL. Actualmente en estudio Ruby.

Una de las cosas que más destaco de GeneXus, es la facilidad de poder pasar de una plataforma a otra y o una arquitectura a otra, en cuestión de horas de las cuales 99% del trabajo es realizado por GeneXus.

Hoy GeneXus oficialmente tiene unos 18 años, pero lleva un poco más por detrás, ha ganado mucho espacio en el mercado, ha ganado popularidad en el exterior, ARTech, es reconocida como la máxima exportadora de software de Uruguay, lo que representa una referencia importante a tener en cuenta.

Particularmente, conozco GeneXus desde 1995, y me ha llevado por distintas partes del mundo, he trabajado en distintas plataformas y arquitecturas y con bases de datos de más de 600 tablas o sea, lo que parecía imposible en el 84, hoy es nuestro día a día.

Fabricio De los Santos
Gerencia de Proyectos –
Consultoría GeneXus –
ERP – Sistemas de Misión Crítica – Bases de Datos.

Vea mis blogs en:
www.fabriciodelossantos.com

Tips: Error ORA-01407 cannot update to null GeneXus Oracle

Thursday, April 26th, 2007

Este problema básicamente indica que se está intentando hacer un update en una tabla con un valor nulo, cuando el campo no lo permite.

Las opciones son modificar el código del programa o la definción de la transacción GeneXus.
Si el programa puede hacer el update en nulo y la definción en GeneXus es correcta, allownull=yes puede ser que por algun motivo fue cambiado a “mano” en la base de datos las constraints de esa columna.

Para esto último hacer un Describe Nombre_de_Tabla;

Verificar la columna que indica el error si está permitiendo nulos o no.

En el caso que haya sido cambiada a mano, para corregirla, usar la siguiente sentencia SQL

ALTER TABLE Nombre_de_Tabla MODIFY Nombre_de_Columna NULL;

Fabricio De los Santos
Gerencia de Proyectos –
Consultoría GeneXus –
ERP – Sistemas de Misión Crítica – Bases de Datos.

Vea mis blogs en:
www.fabriciodelossantos.com

Tips: Que Version de Oracle estoy ejecutando

Wednesday, April 25th, 2007

Si estamos usando SqlPlus y queremos saber que versión de Oracle es la base de datos a la que estamos conectado, la sentencias para decifrar son las siguientes:

SET SERVEROUTPUT ON SIZE 10000
DECLARE
VERSION1 VARCHAR2(59);
VERSION2 VARCHAR2(59);
BEGIN
dbms_utility.db_version(VERSION1,VERSION2);
DBMS_OUTPUT.PUT_LINE(VERSION1);
DBMS_OUTPUT.PUT_LINE(VERSION2);
END;
/

Version1, nos muestra la versión de la base de datos.
Version2, nos muestra con que versión es compatible la instancia, basado en la configuración setada en el INIT.ORA, si este parámetro de compatibilidad no está seteado, retornará null.

Fabricio De los Santos
Gerencia de Proyectos –
Consultoría GeneXus –
ERP – Sistemas de Misión Crítica – Bases de Datos.

Vea mis blogs en:
www.fabriciodelossantos.com

Tips: Como usar Case en Oracle

Tuesday, April 24th, 2007

Puede darse el caso de que querramos devolver un texto o valor dependiendo del dato de una columna en una tabla Oracle.

Por ejemplo

Si tenemos una tabla de nombre Empleados_Salarios con los campos
Empleado, Salario
y con valores

Agustin, 20.000
Ignacio, 1.500
Nicolás, 10.000

Y en un select queremos en vez de reflejar los valores exactos y mostrar categorías, podemos usar la sentencia CASE de Oracle como el siguiente ejemplo muestra.

Select Empleado,
CASE
when Salario when Salario >= 5.000 and Salario else ‘Salario Alto’
END Categoria_Salario
from Empleados_Salarios;

La sentencia contiene las palabras reservadas “when” para establecer las condiciones, “else” para el caso que no cumpla una de las condiciones when, y “CASE” y “END” que encierran la cláusula condicional, coloqué la palabra “Categoria_Salario” como alias de la columna de categorías.

Otro ejemplo sencillo podría ser:

Tengo una tabla de nombre Stock con 3 campos:

Material char(20),
Entradas number(10),
Salidas number(10)

Y quisiera saber los saldos positivos de Entradas – Salidas, y en el caso que las Salidas sean mayores que las Entradas, no quiero mostrar el valor negativo, sino un valor 0.
Tengo que tener en cuenta los valores nulos que pudiera tener de Entradas o Salidas

El select sería el siguiente:

Select Material,Nvl(entradas,0) Entradas, Nvl(salidas,0) Salidas,
Case Nvl(entradas,0) – Nvl(salidas,0) > 0 then Nvl(entradas,0) – Nvl(salidas,0)
else 0
End Diferencia
from Stock;

Espero que estos mini ejemplos sean de utilidad.

Fabricio De los Santos
Gerencia de Proyectos –
Consultoría GeneXus –
ERP – Sistemas de Misión Crítica – Bases de Datos.

Vea mis blogs en:
www.fabriciodelossantos.com

Tips: Error ORA-00957 GeneXus 9 Oracle Visual Basic u otros generadores duplicate column name

Wednesday, April 18th, 2007


Duplicate column name o ORA-00957 con oracle, en mi caso Visual Basic, se produjo básicamente por un error comun que puede acontecer.

Se debe basicamente a que posiblemente en el codigo tanto sea en un New o en un When Duplicate se está haciendo referencia a un atributo 2 veces por error.

Ejemplo:

New
CliCod=&CliCod
CliNom=&CliNom
CliDir=&CliDir
CliDir=&Direccion
EndNew

Tambien puede darse en un When duplicate.
Algo sencillo, error burro, pero puede pasar, generalmente cuando se copia códigos de un objeto a otro, etc.

Espero que haya sido útil.

Fabricio De los Santos
Gerencia de Proyectos –
Consultoría GeneXus –
ERP – Sistemas de Misión Crítica – Bases de Datos.

Vea mis blogs en:
www.fabriciodelossantos.com

Tips: error CS0006: Arquivo de metadados ‘vjslib.dll’ nao pôde ser encontrado compilando .NET com GeneXus 90

Monday, April 16th, 2007

Generalmente pasa cuando tenemos un modelo de GeneXus en Visual Basic o cualquier otro generador que no sea .NET y creamos otro modelo para probar algo .NET y no tenemos instalado el Visual J#

Pueden bajarlo desde aqui

y solucionar el problema.

Fabricio De los Santos
Gerencia de Proyectos –
Consultoría GeneXus –
ERP – Sistemas de Misión Crítica – Bases de Datos.

Vea mis blogs en:
www.fabriciodelossantos.com