Documentos de Académico
Documentos de Profesional
Documentos de Cultura
P661VBSP
P661VBSP
PATCH # 6
IMPORTANTE: Es necesario aplicar este patch en las terminales de trabajo, ya que se actualizan los
siguientes archivos del sistema:
• gxform60.dll
• gxchr513.dll
• gxchr613.dll
Al aplicar el patch en una terminal de trabajo, se graba en el directorio Windows (o similar según el sistema
operativo) el archivo GXW61VbN.006 que indica que patch se tiene instalado en la estación de trabajo.
• Reporte salvado como RTF no quedaba bien alineado en los campos numéricos
La alineación de los campos numéricos no quedaba bien en un reporte salvado como archivo RTF. Si se
salvaba un reporte generado con el Report Viewer como archivo RTF, los campos numéricos quedaban
alineados a la izquierda en vez de quedar alineados a la derecha.
La Rbuilder.dll versión 3.5.3 que se libera con este patch soluciona este problema.
• ‘Error No. 3078' con Change Level y al dar ESC muchas veces
Se tenía un Work Panel que llamaba a una Transacción de dos niveles pasándole la clave del primer nivel
como parámetro. Desde esa Transacción, mediante un botón, se llamaba a otra de dos niveles pasándole la
clave del primer nivel como parámetro.
Se tenía la preference Esc Key Action = Change Level.
Si se ejecutaba la aplicación y se empezaban a dar de alta registros en las Transacciones, y si estando en la
segunda luego de ingresar varios registros en el subfile se presionaba Esc varias veces seguidas, se producía
el error.
El error fue corregido.
GXEdit
Cliente / Servidor
• Trabajando con N generadores por modelo, se copiaban los programas estándar de los N
generadores
Estando con n generadores por modelo, por ejemplo uno Java y otro Visual Basic C/S, lo que sucedía era
que al momento de especificar y generar un objeto sea cual sea su generador asociado, siempre copiaba los
archivos estándares tanto para Visual Basic como para Java.
El error fue corregido.
• ‘Error: Function call on left_hand side of assignment must return variant or object’ al llamar a
RPC
Si se tenía un objeto Visual Basic C/S que realizaba una llamada RPC a un procedimiento C/SQL
pasándole parámetros de tipo VarChar, en ejecución se producía el error mencionado.
El error fue corregido.
Web Panels
PATCH # 5
IMPORTANTE:
En este patch se introdujo un nuevo dialogo Select Component. Este tiene una opción Componentes
Standard, si marca esta opción instalara el generador y los programas standard de Visual Basic,
de lo contrario instalara únicamente los archivos del sistema. Por mas información referirse a los
documentos:
o www.genexus.com/newpatch/patchsp2.pdf
o www.genexus.com/newpatch/terminales.pdf
El problema era que de la forma que estaba hecha la llamada al terminar la generación, el generador seguía
ejecutándose, sin cerrar inmediatamente los archivos, entonces cuando GeneXus quería abrir esos archivos
no podía porque ya estaban abiertos.
El error fue corregido.
PATCH # 4
IMPORTANTE: Es necesario aplicar este patch en las terminales de trabajo, ya que se actualizan los
siguientes archivos del sistema:
• gxform60.dll
• gxchr613.dll
Al aplicar el patch en una terminal de trabajo, se graba en el directorio Windows/System (o similar según el
sistema operativo) el archivo GXW61VbN.004 que indica que patch se tiene instalado en la estación de
trabajo.
Web Panels
PATCH # 3
• 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 que a partir
de ahora la interface del Report Viewer será presentada en el lenguaje seteado en las Preferences del
modelo.
Lenguajes soportados: Español, Italiano, Portugués, Inglés.
GXSELDIR(....)
Nota: En el caso de la función GXCalculate, cuando se utiliza como UDP, el valor que se devuelve es el
resultado de la operación realizada.
o El valor retornado por esta función era 0 aunque el correo se enviara correctamente.
o Cuando se cerraba la aplicación luego de haber enviado un correo se producía el error
"Runtime error 48: File not found: RBUILDER.DLL".
Web Panels
PATCH # 2
A partir de este patch se está utilizando una nueva tecnología para el armado de los mismos.
La principal ventaja del uso de esta tecnología es la posibilidad de modificar y registrar archivos del
sistema (dlls y ocx que se encuentran en el directorio windows\system), esto implica la eliminación de los
patches del NSetup.
• Archivos del sistema (por ejemplo: bibliotecas y controles que se instalan en windows\system)
Cuando también instale archivos del sistema, será necesario aplicar el patch en el servidor y en
todas las estaciones de trabajo seleccionando el directorio donde está instalado GeneXus.
Nota: En una nueva terminal de trabajo es necesario instalar el NSetup de la instalación original, y el patch
correspondiente. Los nuevos patches eliminan los patches del NSetup, pero no el NSetup.
• Se eliminaron las preferences: Include Mail Functions, Graphic Functions, Excel OLE Functions y
Common Dialog Functions
A partir de este patch se incluyen las Extensions, que permite detectar automáticamente el uso de estas
funciones, y en el proyecto GeneXus se incluyen los archivos sólo en caso que sean necesarios.
Para que este cambio tenga efecto se debe borrar el archivo de extensión VER del directorio del modelo, y
volvier a generar forzados todos los objetos.
Por más información al respecto, se recomienda leer el documento en:
http://www.genexus.com/forum/tips/extpgmvb2.htm
•
• Graficador Visual Basic y tipo de datos
A partir de este patch del generador es posible pasar cualquier tipo de datos para la matriz de datos del
graficador (parámetro “Data” de las funciones GXMakeGraph, GXPrintGraph o GXSaveGraph).
• A partir de esta versión el Report Viewer permite realizar Trace.
La versión de la Rbuilder.dll (versión 3.4.2), que se libera con este patch, incorpora trace.
Para habilitarlo, hay que incluir la entrada Trace en la sección trace del gxprn.ini del directorio de la
aplicación, de la siguiente manera:
[Trace]
Trace=[0|1]
Por ahora no hay niveles de detalle, es decir, el valor 0 deshabilita el trace, 1 o más lo habilita.
El trace se graba en un archivo con nombre autogenerado y extensión LOG en el directorio del modelo.
NOTA: A partir de la versión 3.4.1 de la Rbuilder.dl en adelante, es requerimiento tener instalado el SP3
del Visual Studio 6.0 (esto es por las msvcrt.dll y mfc42.dll que éste actualiza).
El error fue corregido en la rbuilder.dll 3.4.2 que se libera con este patch.
El error fue corregido en la rbuilder.dll 3.4.2 que se libera con este patch.
• Se permitía cambiar el valor de una Foreign Key, teniendo prompt y regla noaccept
Si se tenía una Transacción con una Foreign Key con prompt asociado y en las reglas se tenía la regla
noaccept(‘Foreign Key’) if Update , al ingresar a la Transacción en modo Update el valor de la Foreign
Key igual se podía modificar, seleccionando el valor desde el prompt.
El error fue corregido.
o Si se tenía una transacción de un nivel con subfile, con una clave foránea y mientras se estaba
modificando una línea, con F4 se llamaba a la lista de selección, al volver a la transacción se
desplegaba el mensaje '<Table> was changed' y a continuación el mensaje 'Update error'.
Cuando se ejecutaba el Work Panel y se presionaba la tecla de función asociada al evento, no se disparaba
el evento.
El error fue corregido.
• 'Record already exists' al hacer refresh en el subfile de una Transacción utilizando GX Edit
Si se tenía una Transacción de dos niveles, la cual se llamaba pasándole clave y modo, teniendo la
preference Default Edit Control = GX Edit, cuando se modificaba el valor de algún atributo del subfile y se
realizaba un refresh de la Transacción, se desplegaba el mensaje de error.
Por mas información sobre el comportamiento del comando refresh, se recomienda leer el documento en:
http://www.artech.com.uy/forum/tips/refmandc.htm.
El error fue corregido.
Web Panels
Cliente / Servidor
• Configuración de Máxima cantidad de cursores abiertos
La cantidad de cursores abiertos simultáneamente (por cada aplicación que se esta ejecutando en un PC
cliente) a partir de ahora es configurable, o sea, es posible indicar la cantidad de cursores que pueden estar
abiertos incluyendo en el GXCS.INI (que debe ir en el directorio de windows) lo siguiente:
[GeneXus C/S]
MaxOpenStatements = N
El valor por defecto sigue siendo el mismo (que era fijo hasta ahora): 100 cursores.
Esta feature es especialmente aplicable al AS400 en las últimas versiones del SO.
Nota: El rango de valores posible de aplicar depende del DBMS, por lo que se debe conocer estos valores
del DBMS antes de usar esta feature.
Error code: -204 in 0 Text is: "[IBM][Client Access ODBC Driver (32-bit)][DB2/400 SQL]SQL0204 -
PCBOCLI in URSPG type *N not found."
Se eliminó la preference "Default remote procedure location" pues en las últimas versiones de Client
Access, si se califica el nombre del programa al llamar se genera el error nombrado.
IMPORTANTE: Por compatibilidad con el pasado, si bien se eliminó la preferencia también se agregó la
opción de configuración WA0002 (Workaround 2) para utilizar en el CONFIG.GX que funcione igual que
antes por si se esta con el funcionamiento "viejo" del Client Access. En tal caso se deberá poner en el
CONFIG.GX (archivo de texto que debe ir en el directorio de la Knowledge Base ) la siguiente línea para
que sus programas continúen funcionando como antes:
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.
Limitación Temporal: SQL Server 7.0 no permite realizar 'Drop Column' sobre una columna que tiene
algún Indice 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 esta ante una reorganización de este tipo, es cambiar la preference SQL
Server/Version a "6.x"
De lo contrario al ejecutar la reorganización se desplegará el siguiente error: Error 4922, The text of the
message is: "[Microsoft][ODBC SQL Server Driver][SQL Server]ALTER TABLE DROP COLUMN
<attribute> failed because INDEX <index> accesses this column."
• "Incorrect syntax near CALL" al llamar a un stored procedure
Se tiene un objeto GeneXus en el que se hace una llamada a un stored procedure del SQL Server. Se tiene
seteada la preference List of remote programs con el nombre de dicho stored procedure. Al ejecutar la
llamada se producía el error:
Error 170 The text for the message is: [Microsoft][ODBC SQL Server Driver]Line1: Incorrect sintax near
'CALL'.
El problema se debe a que para llamar a un stored procedure se debe utilizar la siguiente sentencia:
'[EXECUTE PROCEDURE nnnn()]'
Donde nnn es el nombre del procedimiento almacenado.
El error fue corregido.
A*
B
C
D
Se pasa a prototipo y se crea la Base de Datos correctamente. En diseño se realizan los siguientes cambios:
En la tabla se elimina el atributo C.
Se elimina el atributo C de la Base de Conocimiento.
Al ejecutar la reorganización correspondiente se producía un error:
a. El DBMS es Informix
b. Se eliminaba un atributo de una tabla
c. Se eliminaba el atributo también del modelo de diseño (Advanced/Attribute/Remove).
• Error code: -3: .... Invalid date format si se generaba con VB 5.0
Si se tenía una transacción con un atributo definido con DateTime sin parte de fecha T(0.5), cuando se
ejecuta la transacción y ingresaba un valor para ese atributo, al confirmar se daba el error mencionado.
El error fue corregido.
TRNA
A*
A1
(B*
B1
B2)
El problema con esto era que el AND tiene mayor precedencia que el OR entonces la formula se disparaba
incorrectamente sumando todos las líneas en las cuales B1 = 'B'.
Error Code -524 in 0 text is: '[INTERSOLV][ODBC Informix Driver][Informix]Lock table can only be
used within a transaction.
• 'Sub or function not defined', al utilizar las funciones Now(), AddYr() o AddMth()
Si se utilizaban las funciones Now(), AddYr() o AddMth() en una comparación, o en una condición de un
Work Panel, por ejemplo: If Now() >= &DateTime, se producía el error mencionado.
El error fue corregido.
Patch # 1
• Patch #1 del Workstation Setup
Este patch debe ser instalado para que los cambios realizados en el generador de Visual Basic funcionen
correctamente. Se incluyen las siguientes .dlls, para el generador Visual Basic:
GXREPOS.DLL Es necesaria para utilizar la nueva Preference del modelo ‘Generate Data for Microsoft
Repository’, a los efectos de poder interactuar con el Repositorio de Microsoft.
Se requiere tener instalado el Service Pack 3 del Visual Studio 6.0, para que la misma registre
correctamente.
GXFORM60.DLL Se utiliza al trabajar con GXEdit (Preference 'Default Edit Control' = GXEdit)
GXCHART6.DLL Correspondiente al graficador para Visual Basic 6.0. Se requiere tener instalado el
Service Pack 3 del Visual Studio 6.0, para que la misma registre correctamente.
Por más información sobre la instalación de este patch, se recomienda leer las Release Notes del mismo.
IMPORTANTE: El comportamiento del default de esta preference es el contrario al que se tenía hasta este
momento, por lo que si se desea mantener el mismo comportamiento al que tenía, será necesario cambiar el
valor de la preference antes de generar cualquier objeto.
Para mejorar la alineación de los controles en una página Web se ha introducido una nueva preference
denominada 'Use Tables', que habilita el uso de tablas HTML. Esta preference se encuentra tanto a nivel de
modelo como a nivel de objeto, siendo los valores posibles Yes o No. El valor por defecto de la preference
es Yes.
Básicamente, las tablas HTML son como las utilizadas en Word, para alinear cualquier página web, se
incluyen las imágenes, el texto, etc. dentro de las celdas, obteniendo el diseño deseado.
Al habilitar esta preference se incluyen los controles del form diseñado en GeneXus, dentro de las celdas
de la tabla, mejorando de esta forma la alineación de los Web Panels.
Por más información sobre implementación y compatibilidad se recomienda leer el documento que se
encuentra en: http://www.artech.com.uy/forum/tips/alignwp.htm
• Nueva preference a nivel de modelo y propiedad a nivel de objeto ‘Include <PRE></PRE> Tags’ en
Web Panels
Se agregó una nueva preference ‘Include <PRE></PRE> Tags’ a nivel de modelo, así como a nivel de
objeto. Hasta el momento todo lo que contenía el form se incluía dentro de estos Tags HTML, que indican
que el texto está preformateado.
Los valores posibles de esta preference son Yes o No. El valor por defecto es Yes.
El valor No, permite que el browser realice el formateo del código HTML enviado por GeneXus, es
utilizado para desarrollar páginas que agregan código HTML.
Importante: Esta preference es ignorada si el valor de la preference 'Use Tables' está seteada en Yes.
• Nueva preference a nivel de modelo y propiedad a nivel de objeto ‘Include standard header’ en Web
Panels
Al ejecutar un Web Panel se visualiza un título seguido de una línea, este título también se muestra en la
barra superior del browser que se está utilizando. El título mencionado, es por defecto la descripción del
objeto.
A partir de este momento se agrega una nueva preference 'Include standard header' a nivel de modelo, así
como a nivel de objeto. De esta forma se permite indicar si se va a generar el título del Web Panel o no.
Los valores posibles son Yes o No. El valor por defecto es Yes.
Si se indica que el título no se debe generar (Valor No de la preference), se elimina en forma automática la
línea, pero se mantiene la descripción que se muestra en la barra superior del browser.
• Nueva preference a nivel de modelo y propiedad a nivel de objeto ‘Include standard footer’ en Web
Panels
Al ejecutar un Web Panel generado por GeneXus se visualiza a continuación del contenido del form una
línea de separación final. Se agregó una preference 'Include standard footer' que permite controlar la
generación de dicha línea.
Los valores posibles son Yes o No. El valor por defecto es Yes.
Por más información sobre el funcionamiento del GeneXus VB Reload Utility, se recomienda leer el
documento que se encuentra en: http://www.artech.com.uy/forum/tips/reload.htm.
• Las funciones EOM, ADDMTH y ADDYR pasan a retornar el mismo tipo de datos que el primer
parámetro que reciben
Las funciones EOM, ADDMTH y ADDYR pasan a retornar el mismo tipo de datos que el primer
parámetro que reciben, o sea, si el mismo es DATE retornan DATE, si es DATETIME, retornan
DATETIME.
Las operaciones válidas serán las que correspondan a cada tipo de los antes mencionados.
Algunos ejemplo de operaciones validas son:
Nota: Para que esto funcione correctamente, se requiere tener aplicado el Patch 2 del Development
Environment de esta versión.
• No se visualizaba valor de variable en subfile de work panel luego de ejecutar comando For each
line
Se tenía un work panel con subfile, y una variable en el mismo que se modificaba en un evento mediante un
comando For each line. El valor de la variable se modificaba bien, pero el mismo no se visualizaba en la
fila en la que estaba posicionado el cursor.
El error fue corregido.
• La tecla Enter no disparaba el evento Enter en work panel, ejecutando con Visual Basic 6.0
Si se ejecutaba una aplicación con Visual Basic 6.0, y no se tenía el Enter como avance de campo, al
presionar la tecla Enter no se disparaba el evento correspondiente.
El error fue corregido.
allownulls(PrCod ) ;
donde PrCod era clave forenea, PrDes es un atributo inferido, y PdrDes es un atributo almacenado en la
tabla base que se carga del inferido con la regla asignacion. En ejecucion, cuando la clave era nula, y se
digitaba un valor en PdrDes, el mismo se blanqueaba al dar avance de campo.
El error fue corregido.
• El foco se posicionaba en el último campo de un work panel si se tenía una variable de tipo
bitmap
Si en un work panel se tenía una variable de tipo bitmap como primer campo, al ejecutar el mismo el foco
se posicionaba en el último campo del objeto.
El error fue corregido.
• Err 217 Run-time type error in embedded C expresion, en modelo con data views
Podía producirse este error en forma aleatoria al generar objetos que accedieran a tablas externas, definidas
mediante data views.
El error fue corregido.
• Runtime error 3420 ‘Object invalid or no longer set’ con ‘Show Form’ = After Start Event
Se tenía un work panel de ‘Trabajar con’ que llamaba a una transacción pasándole el modo, y la preference
‘Show Form’ = After Start Event. Al llamar a la transacción en modo Delete, se desplegaba el mensaje de
confirmación, y al dar avance de campo o presionar el botón de Confirm, se producía el error.
El error fue corregido.
• Runtime error 3011, con data views a tablas Access con nombres de mas de 8 caracteres
Se tenía un data view sobre una tabla Access cuyo nombre era de mas de 8 caracteres. En ejecución se
producía el Runtime error 3011 ‘The Microsoft Jet Database engine could not find the object <tabla>…’.
El error fue corregido.
• Runtime error 3420 con comando Return en el Evento Enter y tecla Enter, en Visual Basic 6.0
Se tenía un work panel con subfile, y en el evento Enter un comando return. Si se ejecutaba con Visual
Basic 6.0, al presionar la tecla Enter, se producía un Runtime Error 3420 ‘Object invalid or no longer set’.
El error fue corregido.
• Error ‘Invalid procedure call or argument’ en Evento Enter en web panel con checkbox
Se producía el error en ejecución si en un web panel se tenía un control de tipo checkbox al que no se
hubiera seleccionado un valor, y se ejecutaba el evento Enter.
El error fue corregido.
• ‘Invalid Cualifier’ al compilar Web Panels con métodos Clear, Additem y Remove item
Se tenía un Web Panel que usaba en el evento Start los métodos Clear, Additem y Removeitem para cargar
valores en un Combo Box, al compilar cualquiera de los tres métodos se daba el error.
El error fue corregido.
Client/Server
- ServerNow(): Retorna un tipo de datos DateTime cuyo valor corresponde a la fecha y hora del
servidor en el momento de realizar la llamada.
- ServerDate(): Retorna un tipo de datos Date cuyo valor corresponde a la fecha del servidor en el
momento de realizar la llamada.
- ServerTime(): Retorna un tipo de datos Char de 8 caracteres en formato HH:MM:SS cuyo valor
corresponde a la hora del servidor en el momento de realizar la llamada
Consideraciones:
La fecha y hora del servidor serán tomadas del DBMS principal especificado en el modelo
GeneXus.
Si se trabaja contra Access, donde estas funciones no se aplican, se utilizarán las siguientes equivalencias:
1. FUNCIÓN EQUIVALE A
ServerNow() Now()
ServerDate() SysDate()
ServerTime() SysTime()
El llamado a estas funciones implica un acceso a la base de datos. Este acceso puede ser costoso en tiempo,
particularmente en ambientes Client/Server. Por esta razón se recomienda utilizarlas con criterio.
Nota: Para poder utilizar estas funciones es necesario tener instalado el patch 1 del Development
Environment.
El factor de bloqueo en aplicaciones C/S con AS/400 se aumentó de 2 a 50, esto significa que los "blocked
fetch" que antes leían bloques de 2 registros, a partir de esta versión leen bloques de 50 registros. Esto tiene
una mejora de performance significativa en las operaciones de lectura las aplicaciones C/S con AS/400 .
IMPORTANTE: Es importante destacar que esto puede producir errores en las aplicaciones dependiendo
de la versión de Client Access que se esté utilizando.
Si al utilizar el código generado a partir de este patch se obtienen algunos de estos errores:
"Error -508 Cursor not positioned on a locked row"
"Error Code: -407 in text 0 Text is sql0407 - No se permiten valores nulos en la columna
<nombrecolumna> en la tabla <nombretabla> en <nombrebiblioteca>"
Para evitar estos errores, se recomienda actualizar la versión del Client Acces, actualizar el Service Level
de la versión de Client Access y actualizar los PTFs del AS/400.
Si se continúa con el problema, se puede utilizar el siguiente workaround que vuelve a generar el mismo
código que se generaba antes del cambio que se mencionó anteriormente:
ATENCION: Esto vuelve a dar problemas de performance, por lo tanto se recomienda utilizarlo con
precaución.
Aplicar este WA es lo mismo que configurar en el Data Source, en el Tab Performance, sección "Record
Blocking Type:" con el valor "Disable record blocking".
Por mas información al respecto se recomiendo leer el documento en:
http://www.artech.com.uy/forum/tips/vbblock.htm