GENERADOR JAVA 6 EVOLUTION 1

GENERADOR JAVA 6 EVOLUTION 1
PATCH # 2
Nuevas Facilidades
•
Report Viewer con soporte Multilenguaje
La versión 3.5.2 de la Rbuilder.dll que se libera con este patch, soporta Multilenguaje. Esto es, a partir de
ahora la interfaz del Report Viewer será presentada en el lenguaje seteado en las Preferences del modelo.
Lenguajes soportados: Español, Italiano, Portugués, Inglés.
Errores Corregidos
• Error con Data Views con nombres internos diferentes a los nombres externos.
Cancelaban en ejecución los objetos que actualizaban un data view que tuviera definidos nombres internos
de atributos diferentes a los nombres externos.
El error fue corregido.
• Error al ejecutar como applet objeto con la propiedad Form.Caption
Cancelaban en ejecución los objetos que tuvieran la propiedad Form.Caption cuando eran ejecutados como
applet.
El error fue corregido.
• Error al ejecutar reporte con bitmap
Cuando se ejecutaban reportes que contenían bitmaps y los mismos no se encontraban junto a la aplicación
se presentaba el mensaje de error:
java.lang.ClassCastException: java/lang/NullPointerException
at com/genexus/reports/GXReportViewerThreaded.GxDrawBitMap
El error fue corregido.
• Errores con variables read only en work panels.
Se corrigieron varios errores con variables read only en work panels.
Era posible editar variables long varchar de un único renglón (no multiline).
Era posible borrar el contenido de un campo de mas de una línea (multiline)
El error fue corregido.
• No se actualizaban parámetros de salida en llamada a procedimiento main en 2 capas.
Al invocar a un procedimiento main, no se actualizaban los parámetros de salida cuando la aplicación se
ejecutaba en 2 capas.
El error fue corregido.
• Error al abrir archivo de texto por segunda vez
Cuando se utilizaban las funciones de manejo de Archivos ASCII delimitadas, si se realizaba la secuencia:
abrir, cerrar y abrir el mismo archivo de texto, el segundo abrir no funcionaba, presentándose el siguiente
mensaje de error: Error ADF0005: open function in use.
El error fue corregido.
• Error en ejecución si se tiene variable carácter con picture numérica
Se tiene una variable de tipo character en el Form de un Work Panel con picture numérico con "." o ",". En
tiempo de ejecución se presentaba el siguiente mensaje de error:
1
java.lang.InternalError
at com/genexus/GXEdit.getStringValue (GXEdit.java:324)
at com/genexus/GUIObjectString.getValue (GUIObjectString.java:32)
El error fue corregido.
• Error al oprimir "." en campo numérico con decimales
Al digitar solamente el separador decimal ( punto ( ".") o coma (“,”)) configurado en la preference 'Set
Decimal Separator' en un campo numérico con decimales (en control edit) se presentaba el siguiente
mensaje de error:
java.lang.InternalError: parseException in GXEdit
at com/genexus/GXEditPictureNumeric.numberKeyReleased
El error fue corregido.
• Problema con inserción de subtipos
Cuando en el mismo new se insertaban varios subtipos del mismo supertipo, se estaba almacenando el
último valor referenciado en el grupo new. Por ejemplo, al ejecutar el siguiente procedimiento:
new
ViaCod = 1
ViaNom = "Viaje"
CiuOriCod = 1 // Ciudad Origen - Subtipo de CiuCod (grupo Ciudad Origen)
CiuDesCod = 2 // Ciudad Destino - Subtipo de CiuCod (grupo Ciudad Destino)
endnew
se insertaban los siguientes valores en la tabla:
ViaCod ViaNom CiuOriCod
CiuDesCod
1
"Viaje" 2
2
El error fue corregido.
• No leía bien los subtipos fuera del evento load
Cuando se leían, en eventos que no fueran el LOAD, registros que tuvieran mas de un subtipo del mismo
supertipo, los valores retornados no eran correctos.
El error fue corregido.
• No funcionaba bien la "space bar" en diálogo modal y WFC
En algunos casos, cuando se usa la interfaz de usuario WFC y se trabaja con diálogo modal, si se tenía el
foco sobre el botón Confirm y se presionaba la barra espaciadora para ejecutarlo, la aplicación se colgaba.
El error fue corregido.
• Error al compilar programa de reorg: CX.JAVA
Las reorganizaciones que borraban atributos de una tabla, causaban el error de compilación
cX.java(43,7) : error J0049: Undefined name 'dboXXXXX'
El error fue corregido.
• Error "not suitable driver" ejecutando applets en Netscape
Al ejecutar una aplicación como applet desde Netscape, estando las clases no empaquetadas en el servidor
se presentaba el siguiente mensaje de error: "Not suitable driver".
El error fue corregido.
• La función YMDHMSTOT( 0, 0, 0, HH, MM, SS) devuelve un valor nulo
La función YMDHMSTOT con parámetros nulos en la fecha (es decir año, mes y día) devuelve el valor
nulo, cuando debería devolver la hora. Por ejemplo si tenemos una variable de tipo datetime (0,5) a la cual
se le asigna ymdhmstot( 0, 0, 0, 12, 00, 00), ésta quedaba vacía.
El error fue corregido.
2
Ejecución en 3 capas
• Al registrar el servidor de aplicaciones da: java.lang.Error: couldn't open scm
Se permitía levantar el servidor de aplicaciones como servicio en en una plataforma NO NT, por ejemplo
Windows 9X., por lo que al presionar el botón "Save and update registery" en el GeneXs Server
Application Configuration cancelaba con el mensaje : java.lang.Error: couldn't open scm.
A partir de este patch no está habilitada la opción de levantar como servicio al servidor de aplicaciones, a
menos que se encuentre sobre un NT.
• En 3 capas se desconecta al usuario al X tiempo "IDLE"
En aplicaciones en 3 capas, si un usuario estaba inactivo mas del tiempo especificado en la preference
‘Connection Timeout’, el servidor de aplicaciones lo desconectaba, y en el cliente aparecía un mensaje del
tipo:
class
com.genexus.distributed.rmi.client.RmiApplicationClient.getRemoteProcedure(com.artech.fondos.fW0004
2) Error creating remote object
Can't find user information for handle 80476130
El error fue corregido.
• Error con las funciones ServerDate(), ServerTime(), ServerNow() sobre AS/400
Cuando se usaban las funciones ServerDate(), ServerTime() y/o ServerNow() en aplicaciones generadas en
3 capas sobre el AS/400, no estaban devolviendo ningún valor.
El error fue corregido.
• Error con las funciones ServerDate(), ServerTime(), ServerNow() con distintos Time Zones.
Cuando se ejecuta en 3 capas las funciones que devuelven la fecha y/o hora del servidor, los valores podían
no ser los correctos cuando el cliente y el servidor estaban en diferentes "Time Zone" (Control Panel Date/Time) . Se corrigió para que siempre se devuelvan los valores respecto al Time Zone del servidor.
El error fue corregido.
• Error 'Cursor name ambiguos' en 3 capas sobre AS/400
En el AS/400, al ejecutar dos veces la misma actualización, se presentaba el siguiente mensaje de error:
Server object error:
GXForwardSupplier.fetchFirst
Text
: Cursor name is ambiguous.
Error Code : -99999 SQLState : 3C000
El error fue corregido.
• En 3 capas no realiza rollback al desconectarse el usuario
No se estaba haciendo rollback cuando el usuario se desconectaba del servidor de aplicaciones con una
UTL abierta (por ejemplo si ejecuto un procedimiento con la propiedad Commit on exit=NO), esto podía
causar que volver a conectarse y ejecutar el mismo procedimiento, encontrara el registro lockeado o no
reutilizara la conexión establecida anteriormente.
El error fue corregido.
• En ServerConfig aparece siempre "data type"
En el ServerConfig-Namespace-Database Info del servidor de aplicaciones aparece el combobox para
setear el tipo de base de datos de Informix, cualquiera sea el DBMS utilizado.
• No funciona la opción "salir" de mensaje de error en applets
A pesar de oprimir el botón "salir" que presente este tipo de mensajes, reintenta ejecutar y aparece
nuevamente el mismo mensaje de error, por lo que no es posible salir de la aplicación.
El error fue corregido.
3
• Error de conexión al Servidor de Aplicaciones desde el Aplication Monitor
No era posible conectarse al servidor de Aplicaciones desde el GeneXus Application Server Monitor si se
comete un error al especificar el nombre del servidor. Al corregirlo, en el segundo intento no conseguía la
conexión al server y se presentaba el siguiente mensaje (en la consola del jview): “Descriptor not a
socket”
El error fue corregido.
• Nombres de location con mayúsculas / minúsculas
Si en el modelo GeneXus y en el servidor de aplicaciones, los nombres de los locations no se escribían de
la misma manera (usando la misma combinación de minúsculas y/o mayúsculas), la aplicación no
encontraba al servidor de aplicaciones, presentándose el siguiente mensaje
java.lang.NullPointerException
at com/genexus/distributed/rmi/client/RmiApplicationClient.getNewHandle
El error fue corregido.
• Error al cancelar un add de namespace "from file..."
Cuando en el ServerConfig-Namespaces-Add-from file, se seleccionaba CANCEL en el diálogo donde se
permite seleccionar el archivo de configuración (.cfg) para este nuevo namespace, se presentaba el
siguiente mensaje de error:
java.lang.IllegalArgumentException: Can't find user information for handle 0
at com/genexus/db/DBConnectionManager.getUserInformation
El error fue corregido.
Web Panels
• No se devuelve valor de variable HTTP_REFERER
En Web Panels se pueden utilizar variables de entorno para la obtención de información que se envía al
servidor web. En particular la variable HTTP_REFERER, devuelve la URL de la página que llamó a la que
se está desplegando, el problema es que no se estaba devolviendo el valor de esta variable.
El error fue corregido.
• No compila la función link en web panels si se le pasa una variable como parámetro
Si un web panel tiene
&Vble = "http://www.artech.com.uy"
&Mov.link = link(&Vble)
al compilarlo se presenta el siguiente mensaje de error: hlink.java(102,32) : error J0049: Undefined name
'av5vble'
El error fue corregido.
PATCH #1
Estas release notes contienen las correcciones de los errores reportados en versiones anteriores y además un
breve resumen de los cambios y nuevas facilidades que se implementaron en este patch. Por este motivo, si
se requiere información mas detallada, se recomienda consultar el manual del generador Java.
Importante
4
En esta versión se han realizado algunos cambios que implican realizar determinadas acciones para el
correcto funcionamiento de las aplicaciones generadas con versiones anteriores una vez aplicado este patch.
A continuación se detallan los mismos y la forma de solucionar las incompatibilidades existentes:
•
Cambiaron las clases estándar GeneXus
Si se utiliza el SDK de Microsoft, no permitirá generar/compilar correctamente algunos objetos,
presentándose mensajes de error del tipo:
error J0049: Undefined name '<alguna clase>'
Este problema se presenta solo si se había ejecutado como applet desde el Internet Explorer una aplicación
GeneXus generada con la versión anterior. En este caso habrá un conflicto entre las clases estándar
GeneXus que se instalan automáticamente en el Internet Explorer al ejecutar un applet GeneXus y las
clases que se distribuyen con el patch 1.
Para solucionar esta incompatibilidad existen dos posibilidades:
1. Ir al directorio Windows \Downloaded Program Files, posicionarse sobre “Genexus Java
Standard Classes”, presionar el botón derecho y seleccionar “Remove”.
2. Generar algún objeto cualquiera, y antes de compilar ejecutarlo como applet. Probablemente la
aplicación no funcione correctamente, pero se actualizarán las clases standard GeneXus con las de
la nueva versión del generador.
•
Cambiaron las GXDB++
Las clases de acceso a la base de datos (GXDB++) generadas con versiones anteriores son incompatibles
con las generadas por esta versión (patch 1) del generador. Como los programas generados utilizan estas
clases, existirán conflictos entre ellos y las gxdb++ generadas con versiones anteriores.
Para solucionar esta incompatibilidad es necesario regenerar las gxdb++, lo cual se realiza corriendo un
“Create Database”. Si no se desea crear la base de datos física, se recomienda utilizar la preference
“Reorganize Server Tables” = No.
Nota: Esto implica que no se puede instalar el generador si se tiene alguna reorganización pendiente, dado
que al regenerar las GXDB++ se actualizará el modelo.
•
Cambió el nombre del JM<Modelo>.ARI
En la versión anterior del generador, se creaba un archivo llamado JM<número de modelo>.ARI en el
directorio de la base de conocimiento, que tenía almacenada información que el generador y el Deployment
Wizard necesitan para funcionar correctamente. Este mecanismo se generalizó para que lo puedan utilizar
todos los generadores, y el nombre pasó a ser SM<Generador>_<Modelo>.ARI, siendo <Generador> un
número interno del generador. En Java, este número es el 11.
Para solucionar esta incompatibilidad, de forma que el contenido de este nuevo archivo quede actualizado
es necesario realizar un “Build All” y regenerar las GXDB++ haciendo un ‘Create Database’.
Cambios a tomar en cuenta en caso de trabajar en 3 capas
• Cambió la GXDCOMJ.DLL
A pesar de haber cambiado, es compatible hacia atrás (puede usarse la nueva con clientes viejos).
Al ejecutar como applet, se actualizará automáticamente en el cliente. Si se ejecuta como
5
application, es necesario volver a registrar manualmente la DLL en el cliente. Tanto si se ejecuta
como applet o como application, es necesario registrarla manualmente en el servidor.
• Cambió el GXJVSRV.EXE
Ha cambiado el ejecutable del servicio NT (gxjvsrv.exe), por lo que es necesario actualizarlo en
los servidores de aplicaciones, junto con las nuevas clases estándar de GeneXus.
• Cambios en configuración del pool de conexiones
La configuración del pool de conexiones pasó de estar a nivel de todo el servidor de aplicaciones a
estar a nivel de cada namespace. Como consecuencia de esto, si se utiliza el servidor de
aplicaciones con un archivo de configuración (server.cfg) viejo, el tamaño de los pools de
conexiones quedará en 0 y no funcionará correctamente.
Para solucionar esta incompatibilidad es necesario o bien volver a copiar un server.cfg generado
por la nueva versión del generador, o indicar utilizando el ServerConfig los valores del pool de
conexiones para cada namespace del servidor de aplicaciones.
Nuevas Facilidades
•
Se puede utilizar LDAP (Lightweight Directory Access Protocol) como mecanismo de
autentificación
LDAP (Lightweight Directory Access Protocol) es un protocolo que permite conectarse con servidores de
directorio que soporten LDAP, y realizar un conjunto de operaciones predefinidas. Una de estas
operaciones es la de autentificación.
Se agregaron en Ge neXus varias preferences que permiten controlar la utilización de LDAP, la descripción
de las mismas se puede consultar en el manual del generador bajo la sección LDAP. En dicha sección se
puede encontrar más información sobre las ventajas de su utilización.
•
Se implementaron las funciones para manejo de archivos ASCII delimitados
Los archivos ASCII Delimitados son archivos de texto (modificables con prácticamente cualquier editor de
textos) comúnmente utilizados para transferir información entre diferentes aplicaciones.
Es posible a partir de este patch, leer y grabar este tipo de archivos. Para ello se proveen un conjunto de
funciones. Por mas detalles sobre la descripción de la sintaxis y parámetros de estas funciones de lectura y
escritura de archivos de texto se puede consultar el manual del generador bajo la sección FUNCIONES DE
TEXTO.
•
Se cambió el mecanismo de llamadas a programas externos (“Stored Procedures”)
A partir de esta versión es posible realizar la definición de programas externos de una forma un poco mas
sofisticada, que permite brindar mas información al generador sobre el mismo. Actualmente, para definir
que se esta llamando a un stored procedure, es necesario especificar su nombre en la preference “List of
remote programas (JDBC)”
En particular para el caso de AS/400, el nuevo mecanismo nos permite bastante más flexibilidad que el
anterior, dado que antes estábamos forzados a que todos los parámetros fueran de ‘in/out’, que los
programas estuvieran en las bibliotecas declaradas en las preferences, y que los tipos de los parámetros
fueran ‘numeric’ y ‘char’. Ahora se puede llamar a cualquier procedimiento del AS/400.
Por mas detalles sobre la definición de este archivo para implementar este nuevo mecanismo se puede
consultar el manual del generador bajo la sección LLAMADAS A PROGRAMAS EXTERNOS.
6
NOTA: Aun en esta versión se soporta el mecanismo anterior, por lo que NO habrá incompatibilidad en
casos de llamadas a programas externos utilizando la preference.
Soporte de comando DROP COLUMN en SQL Server 7.0
El comando DROP COLUMN permite eliminar una columna de una tabla con un comando SQL, por lo
que su uso agiliza el proceso de reorganización de tablas en estas condiciones (ya que no se tiene que crear
una nueva tabla temporal con el resto de las columnas y luego copiar todos los datos).
Hasta esta versión solamente el DBMS INFORMIX soportaba esto. A partir de la versión 7.0 de SQL
Server, esto esta disponible.
A partir de este patch se usará esta facilidad cuando la preference SQL Server/Version tenga seteado el
valor "7.0 o superior" y cuando la reorganización de una tabla involucre únicamente ELIMINAR uno o más
atributos. También se usa cuando se eliminan atributos y se agregan atributos nuevos para los cuales no se
tiene forma de calcular su valor. Esto es cuando en la navegación no aparezca entre paréntesis el nombre
de la tabla con la cual lo inicializara.
La sintaxis es ALTER TABLE <Table> DROP COLUMN <COL1>, <COL2
Limitación Temporal:
Sql Server 7.0 no permite realizar 'Drop Column' sobre una columna que tiene algún Índice asociado. Por
este motivo y porque aun no se ha podido contornar el problema, no es posible usar este comando en el
caso mencionado.
Lo que se debe hacer cuando se está ante una reorganización de este tipo, es cambiar las preferences “SQL
Server/Versión” a "6.x" y “Copy Table Groups” a Never
De lo contrario al ejecutar la reorganización se desplegará el siguiente mensaje de error:
ErrorCode: 4922 SQLState 01000 Statement : [<SERVER>]ALTER TABLE DROP COLUMN
<NomIndice> failed because INDEX <NOM INDICE> accesses this column.
•
Cambio en generación del OUTER JOIN para SQL Server 7.0
Para la versión 7.0 de SQL Server (ver preference SQL Server/Version) se genera el join con una nueva
sintaxis correspondiente al standard SQL-92.
El cambio fue realizado por dos razones:
a. Es lo recomendado en los manuales de SQL Server.
b. Detectamos un error de comportamiento de SQL Server 7.0 con la sintaxis anterior.
•
Mejoras en el Deployment Wizard
•
•
•
•
En el segundo paso se cambió la forma de especificar la forma de agregar una lista de clases desde
un archivo a los distintos “location”. Se agregó un check box “Add classes from file” en vez del
botón “From File”. Ahora se puede elegir un único archivo con la lista de clases, y se puede
eliminar (antes no era posible eliminarlo)
Posibilidad de eliminar archivos en el segundo paso. Además del botón 'Add objects' hay un nuevo
botón 'Remove file' que solo permite eliminar archivos que fueron agregados manualmente.
En las contraseñas, se despliegan "*" al escribirlas.
Se controla mediante mensajes de error cuando algún objeto necesario no se encuentra (por
ejemplo si no se encuentra una clase porque no se compiló el .java) impidiendo seguir al usuario.
7
•
•
•
•
•
•
•
•
•
•
•
Mejoras en Web Panels
•
•
•
•
En el “location” del servidor, solo incluye los 'automatic remote procedures' de los objetos que
pueden ser llamados por los mains seleccionados. Antes incluía todos los ‘automatic remote
procedures’.
Con Netscape, el .JAR que se instalaba en la máquina del usuario final no quedaba firmado. Se
firmaba el .JAR con la instalación (que es un .JAR que tiene adentro el .JAR a instalar, y un script
que indica como instalarlo), pero no el .JAR que estaba adentro.
Se validan los datos en la pantalla de transferencia. No se permite poner un host vacío si transfiero
con FTP, el directorio del COPY tiene que existir, etc.)
En los HTML generados se pone como <Title> la descripción del objeto main.
Con Netscape si agregaba un .JAR a mano que estaba en un directorio distinto al directorio
corriente funcionaba mal
En el Browser Deployment, para Microsoft, se soporta hacer un timestamp del archivo. Para que
funcione correctamente hay que tener acceso a Internet. El timestamp lo que hace es certificar que
el fichero fue firmado en determinado mo mento. Esto permite que si el certificado digital expira,
el fichero siga siendo válido si fue firmado antes de que el certificado expirara.
Al apretar 'Exit' en la pantalla de 'Transfer', si estoy en el ultimo output processor que seleccioné,
entonces salgo automáticamente del Deployment Wizard.
En el JAR Deployment se incluye la opción de transferir las clases de GeneXus.
Se implementó un 'AS400 Deployment' que permite transferir código Java al AS/400, compilarlo,
etc. Por mas detalles ver el manual del generador.
En el Browser Deployment, se soporta que al instalar las clases de la aplicación se cambie la
configuración DCOM de los clientes. Ver en el manual del generador los detalles de configuración
de esta nueva opción.
Hasta el momento, los errores que se producían en tiempo de ejecución en Web Panels quedaban
documentados en el log JDBC. A partir de ahora los mismos también se envían a ‘stderr’, si se
está utilizando JRUN estos errores se redirigen a un archivo stderr.log .
Los campos numéricos de output (que no se modifican) se alinean a la derecha. Si se utilizan
tablas HTML (preference Use Tables con valor Yes) se indica que la celda debe ser alineada a la
derecha. Si no se utilizan tablas (preference Use Tables con valor No), se rellena el campo con
espacios a la izquierda hasta llegar al largo del campo. Esto último no garantiza la alineación si se
utiliza un tipo de letra proporcional.
Se soporta el uso de la regla HIDDEN que permite especificar una lista de atributos y/o variables
que se encuentran "ocultas". Los atributos/variables de dicha lista se envían al browser (como
parte del código HTML generado) pero el usuario final no los ve y/o puede modificarlos.
De esta forma se puede determinar, por ejemplo si una variable fue modificada una vez ejecutado
el Web Panel. Esto es válido para atributos/variables que no se muestran en el subfile.
Mejoras en ejecución en tres capas
•
•
•
•
•
•
Se soporta la opción 'Create all connections at startup' para los pools de conexiones.
Se puede configurar el pool de conexiones a nivel del namespace en vez de tenerlo que configurar
a nivel de todo el servidor de aplicaciones.
Si desde el Application Server Monitor se ejecuta el comando 'Shutdown Application Server', y el
servidor de aplicaciones está ejecutando como servicio en NT, se para el servicio.
Cuando se ejecutaba la aplicación en 3 capas con DCOM, si ocurría algún error en tiempo de
ejecución, el mensaje siempre era 'Not such interface supported'. Ahora aparece un mensaje mas
explicativo.
Se cambió el diálogo que muestra los errores a los usuarios para hacerlo más amigable y darle la
posibilidad de Retry cuando corresponde.
Se hicieron algunas optimizaciones pequeñas para la ejecución en múltiples capas (en algunos
casos se evitan llamadas al servidor que antes se realizaban)
8
•
Mejoras en el Report Viewer
La versión de la RBUILDER.DLL (versión 3.5.0) que se libera con este patch incorpora las siguientes
facilidades:
•
Posibilidad de generar trace. Para habilitarlo hay que incluir la entrada Trace en la sección trace
del gxprn.ini del directorio de la aplicación:
[Trace]
Trace=1
El log se genera hacia un archivo con nombre autogenerado y extensión log en el directorio data. Para
deshabilitarlo poner Trace=0.
•
•
Se implementó el soporte Multilenguaje. A partir de esta versión, la interfaz del Report Viewer
será presentada en el lenguaje seteado en las Preferences del modelo. Soporta los siguientes
lenguajes: Español, Italiano, Portugués e Inglés.
Mejoras Varias
•
•
•
•
Se soporta utilizar las funciones de mail como funciones en vez de como llamadas a
procedimientos. La sintaxis que se permitía anteriormente era : call('gxmsndb', ...), ahora se
permite además la sintaxis &err = gxmsndb(...)
Cuando se ejecutan las funciones de POP3 con las clases de debug se genera un _gx_pop3.log con
el log
En los combos/listboxes dinámicos ordenados por descripción, si el foco esta en el combo/listbox
y uno escribe sobre dicho control, se va posicionando de acuerdo a las teclas digitadas (por
ejemplo, si escribo 'ABC' se posiciona en la primer línea que empiece con ABC). Solo esta
implementado para WFC.
Se implementó el poder poner variables bitmap en el subfile. Para esto hay que agregar una
variable de tipo Bitmap en el subfile, y cargarla en el evento Load utilizando la función
LoadBitmap.
Errores Corregidos
•
Se corrigieron errores ejecutando en tres capas.
•
•
•
•
•
Para el código que ejecutaba en el servidor, no se tomaban en cuenta las preferences: Decimal
Point, Year Limit, Date Format y Time Format, se usaban como si fuera en ingles.
Cuando se paraba el servicio NT del servidor de aplicaciones GeneXus, no se estaban cerrando
explícitamente las conexiones que estuvieran abiertas.
Las llamadas a stored procedures no funcionaban correctamente cuando se llamaban desde clientes
y las gxdb++ estaban remotas.
Se estaba grabando mal el isolation level al usar el ServerConfig. En vez de grabar como GeneXus
en el server.cfg los valores 'CR' y 'UR' según el valor seteado en la preference, estaba grabando '1'
y '2' respectivamente. En caso que ya se tenga un server.cfg configurado con el ServerConfig,
recomienda reconfigurarlo de forma que se actualicen estos valores.
Se corrigieron errores en fórmulas.
9
•
•
•
•
•
Se corrigieron errores en Interfaz.
•
•
•
•
No funcionaba correctamente la lectura/asignación de la propiedad height de los forms.
Se corrigieron problemas existentes con work panels modales y utilizando WFC, por ejemplo
cuando se ponía la ventana maximized en el evento Start o cuando se seteaba la preference ‘show
form’ en ‘before start event’.
Problemas con Radio buttons y WFC. Cuando se asigna un valor a una variable/atributo asociado
a un radio button antes de desplegar la pantalla, y el radio button es el control obtiene el foco,
entonces el valor del radio button se reseteaba al valor de la primer opción, aunque se asignara a la
variable el valor de otra.
Se corrigieron errores en funciones de mail.
•
•
•
•
•
No compilaban los objetos que tuvieran fórmulas verticales que dependan de un atributo que esté
en la tabla extendida. El mensaje de error que se presentaba era: error J0049: Undefined name
'fR00XXX'.
No compilaban los objetos que tuvieran fórmulas MAX/MIN sobre atributos que no fueran
numéricos.
Si por ejemplo se trataba de un tipo date, el mensaje de error que se presentaba era: error J0067:
Cannot convert 'double' to 'Date'
No funcionaban las fórmulas MAX/MIN aggregate/select con mas de dos parámetros cuando en el
segundo parámetro se comparaba contra una función, y el primer parámetro no era numérico, por
ejemplo: max(PrdPrcFch, PrdPrcFch <= today(), 0, PrdPrc);
No funcionaban correctamente las fórmulas SUM/COUNT optimizadas en el AS/400 cuando no
había registros que cumplieran la condición del SUM/COUNT.
Al recibir un mensaje (a través de una sesión POP3) que tenía un attachment de un archivo de
texto (.txt), lo incluía en el texto en vez de traerlo como attachment.
Al recibir un mensaje (a través de una sesión POP3) que tenía un attachment, no grababa
correctamente el nombre de este archivo cuando a la función gxMAttachDir se le pasaba un
directorio sin "\" al final.
En algún casos al recibir un mensaje (a través de una sesión POP3) aparecían sin decodificar (por
ejemplo los caracteres de 8 bits aparecían con =20). Dependía del programa de correo que enviara
el mensaje (por ejemplo: Pegasus Mail).
En las funciones para mandar mails, dependiendo del servidor SMTP se presentaba el siguiente
mensaje: 'Unable to send mail: 501 HELO requires domain address.'.
Se corrigieron errores en Web Panels.
•
•
•
•
•
Si se daba un valor a la preference ‘Images Directory’, el mismo no era incluído en el archivo
server.cfg, por lo que en tiempo de ejecución no se encontraban las imágenes referenciadas en el
Web Panel.
Se producía un error de compilación en cualquier Web Panel que tuviese en algún evento una
línea del tipo Control.Caption=’a’+’b’.
Si se tenía la preference ‘Use Tables’ con valor ‘No’ se producía un error al compilar cualquier
Web Panel.
Se producía un error de compilación si se tenía un Web Panel sin tabla base y en el evento Load se
cargaba el subfile utilizando el comando Load.
No funcionaba la función Loadbitmap para mostrar imágenes en Web Panels. Si se tenía una
variable tipo bitmap en un Web Panel, y se utilizaba la función Loadbitmap para cargar la imagen
a partir del camino de la misma, en tiempo de ejecución se desplegaba el camino en lugar de la
imagen.
10
•
•
•
Error: java.lang.ClassFormatError: com/genexus/db/driver/GXStatement (Invalid start pc/length in
local var table) al ejecutar Web Panel con clases de debug. Se corrigió el error mencionado
anteriormente que se producía al ejecutar un Web Panel con las clases de debug y un intérprete
que no fuese el jview.
No se estaban reutilizando las conexiones, por lo que cada Web Panel se volvía a conectar con la
base de datos.
Se corrigieron errores varios.
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
Error al compilar objetos con subtipos. Se presentaban mensajes de error con la siguiente forma al
compilar objetos que involucran atributos subtipos: error J0235: 'sub0008600090' is not a method
in class 'dbcXXXX'. La mayoría de estos casos se corrigieron en esta versión. Sin embargo pueden
persistir problemas en modelos con gran cantidad de subtipos y encontrarse éstos desagrupados.
Se recomienda siempre agrupar los subtipos para estos casos.
Error al ejecutar Combo dinámico cargando atributo fecha. Si se tenía un work panel con un
combo dinámico cuya clave se carga de atributo de tipo distinto de DATE/DATETIME y su
descripción de un atributo tipo DATE/DATETIME, se presentaba el siguiente error al ejecutarlo:
java.lang.ClassCastException: java/lang/Double at com/genexus/GXComboBox.addItem
Error al compilar objeto con ComboBoxes o ListBoxes a los cuales se les aplica el método
AddItem pasándole como parámetro un atributo de tipo numérico en la descripción. El error que se
presentaba era: error J0078: Class 'GXComboBox' doesn't have a method that matches
'addItem(short, short)'
Si en un work panel con tab dialogs había un subfile en algún tab, el foco lo obtenía el tab que
tenia le subfile en vez del primer tab del tab dialog.
Las funciones serverDate/serverTime no funcionaban correctamente en el AS/400 si se tenía
seteada la preference “Transactional Integrity” en YES.
Error al compilar si se pasa &line como parámetro. Cuando un reporte llamaba a otro pasándole
como parámetro la variable &line y este parámetro no era el primero, se presentaba el siguiente
mensaje de error: “error J0081: Value for argument 1 cannot be converted from 'GXShort' in call
to 'void r<nom_reporte>.execute(IReportHandler, GXShort, GXInt)'
No funcionaban correctamente aquellos objetos que contenían en un for each llamadas a una
subrutina que navegaba sobre la misma tabla del for each llamador. Por ejemplo, no eran cargadas
correctamente en el form de un work panel las variables asignadas en el for each llamador
Si en una subrutina, Header o Footer se usaba un atributo afuera de todo for each, tanto en el
código como en un print block, se estaba tomando el valor vacío, o en los work panels el valor del
for each del work panel, si se cargaba ese atributo. Ahora se comporta como el resto de los
generadores, es decir se toma el último valor cargado para ese atributo en algún for each.
Si se ponía algun valor en la preference 'Package Name', se estaba creando la estructura de
directorios correspondiente al nombre del package en el directorio raíz del disco donde se
encuentra el modelo.
Podían ocurrir errores de redondeo cuando se hacían operaciones aritméticas con variables que en
Java se definian como float (N (X, Y) X < 10, Y > 0).
No se podia llamar a la función Msg() ni a un workpanel desde el evento Load de un subfile con
carga a pedido, asi como tampoco realizar cierto tipo de modificaciones en las propiedades de los
controles.
No se podía crear una base de datos sobre el SQL Server si se tenía seteada la preference “Declare
Referential Integrity” en Yes.
Se presentaba un error al ejecutar sobre DB2 Common Servers un procedimiento que recorrían la
una tabla por un índice descendiente y se realizaba una actualización en esa misma tabla.
Error de compilación si se tiene una variable bitmap en un work panel con subfile y la preference
refresh 'when any variable changes'
Error de compilación en algunos casos de for eachs con cortes de control. El mensaje de error que
se presentaba era del tipo: 'undefined dboXXXX_2_1'.
Si en una comparación se ponían strings entre paréntesis, no compilaban dando un mensaje de
error J0010 "Syntax error" . Por ejemplo, no funcionaba if ("a" + "b" ) ="ab".
11
•
•
No se estaba tomando en cuenta la preference “Isolation Level”.
Si se llamaba desde un applet a un reporte que incluía imágenes, éstas no se desplegaban.
12