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
© Copyright 2024