<<

VISUAL FOXPRO C/S GENERATOR 6 EVOLUTION I

PATCH #8

• Event and after trn rule are executed even when it isn’t confirmed We have a simple Transaction or a two-level one. The Transaction has got the ‘Confirm Transactions’ property in YES.

If, when giving the message "Confirm transactions? " we press N, which causes a rollback, anyway the event and the after trn rule are executed. The error has been corrected.

• Err 217 Run-time error in embedded C expression in reorganization This error occurred in a special case of reorganization. The error has been corrected.

• The focus doesn’t return the same record after event with Refresh Keep We have a Work Panel that displays hundreds of records. The Load Records property is in Load on Request. In some cases, after executing an event that also executes a refresh keep, the focus doesn’t remain on the place it was before executing the event. The error has been corrected.

• Scroll Bar and load on request We have a Work Panel with subfile. The Load Records property is on Load on Request. We click under de scroll bar (on the scroll’s empty part, to advance to several records). Then we try to click on a subfile record, but the focus places on the last record of the last page loaded, not on the one that we try to click. The error has been corrected.

• Array dimensions are invalid We have a Work Panel with 2 combo box. The second one is loaded from the first one’s data. The load is performed on a subroutine that is called on the click event of the first one. If the second one has many data to load from the first one, in some cases this error occurs. The error has been corrected.

• Attribute gets focus even with conditional noaccept in transaction We have a two-level transaction. All secondary attributes of first level have conditional noaccept and also all attributes of second level. If we press TAB on the code and the conditions are anyway fulfilled, it places on the last attribute of the first level. The error has been corrected.

• Problem with click on dynamic combo box in tab control We have a two-level transaction. The first level is placed on the first tab control page and the second one on the second page. The second level is shown in a subfile (grid) and one of the attributes (grid) that is foreign code is shown in a dynamic combo box. If we click on the dynamic combo box and choose a value without having validated the code with tab, the code recently entered is closed. The error has been corrected.

• The correct way in update isn’t shown in tool bar We have any transaction that allows working in any way, i.e., inserting or modifying records.

If we are in insert mode and then we pass to a record already existent, the shown mode on the tool bar should be 'Update', but it isn’t. It remains in 'Add' Note: the &mode contains the correct value. The error has been corrected.

PATCH # 7

• Update not generated in complex navigation The general case of this error had been corrected in Patch 5 of this same generator. A particular case related to it was corrected in this patch.

The error was corrected.

• Application required connection when validating secondary attribute There is a simple trn, like this: A* B C If tab / shift-tab was used to navigate between the secondary fields B and C (both in update and insert), for each tab / shift tab a sentence SQL which required connection with the DBMS was executed. That produced an unnecessary overhead with consequences in the performance of the application.

The error was corrected.

• Version 3.6.0.0 of the Report Viewer has been released with the following new features:

Offset The section Offset (mm) was added to the dialog that appears when the gxsetfrm is executed (used to configure the output of the report associated to a value of the rule printer). It allows determining both the horizontal (X) and vertical (Y) offset in millimeters. Those offsets will be used to print the reports.

There are 2 places where the offset can be defined. One is in the general screen (GeneXus form Editor) and the other is in the configuration screen of a form in particular. The first one applies to all the forms. If the second one is specified, it prevails over the definition of the first for that form.

The offset values may be positive or negative.

Note: Each printer has its own unprintable area, which can be configured in its driver (for Windows 9X). It is not possible to print in that area. That is, the offset values entered will be added to the values of the unprintable area of the printer. Therefore, the real offset of the report in the paper comes from adding both values.

Further information of the rule Printer and Report Viewer can be found in the following document: http://www.genexus.com/forum/tips/printings.htm

• Graph: description was the name of the language variable If the command GRAPH was called with variables as parameters - graph('graph',&date,&total), when the graph was edited the columns had the internal name of the variable as name.

From this version on, the variables that act as columns in the graph appear with the GeneXus description.

• Button without associated event is disabled. From this version on the buttons without an event associated are disabled.

• GPF in Workpanel with subfile and attribute C(253) If an attribute or variable character type with length 252 or more was shown, in execution occurred a Visual FoxPro general error. This happened because Visual FoxPro does not support the picture K applied to those fields. The problem was solved by not generating the picture in that case.

The error was corrected.

• Problem with event click in subfile of a TRN There is a TRN with 2 subfiles. Two events click are defined; one over an attribute of the first subfile and another over an attribute of the second subfile. When the TRN was executed, the following error occurred 'Property COLUMNS is not a method or event'

The error was corrected.

• Conditional noaccept did not work properly over subfile If there was a conditional noaccept in a trn of 2 levels over each one of the second level attributes, then they were not taken into account. For example trn A* B (C* D) rules: //these noaccepts were not taken into account noaccept(C) if A=1; noaccept(D) if A=1;

The error was corrected.

• Resource problems with the rbuilder.dll If a report was sent to print many times using the printing dialog, it displayed 'out of memory'. The problem was that the rbuilder.dll is not releasing the resources correctly.

The error was corrected.

• Cannot call setfocus from within a when ... There is a wkp with a selection variable and a subfile. In the event enter another wkp (modal) is called, and a subfile attribute is passed to it. The Enter button can be accessed using ALT+C (it has caption &Confirm, for ex.) If Alt+C (an action that executes the call to another wkp) was pressed while the load was executed, the error mentioned occurred when coming back from that wkp in the following line of the gxform.prg:

THIS.controls(THISFORM.GX_last_focus+THISFORM.GXCtrlSkip).SetFocus()

The error was corrected.

• Focus did not position itself in key in trn with noaccepts There is a trn, and over its secondary fields there is the rule noaccept if update. In addition to that another object after insert .or. update is called. After entering a record and coming back from the object called, the focus positioned itself in the confirm button of the trn and not in the key attribute as it should.

This only happened if the object called was exited by pressing ESC. It did not happen if it was closed by pressing CLOSE with the MOUSE.

The error was corrected.

• Wkp modal activated menubar of the caller when pressing Hot key There is a wkp with menubar that calls another. The menubar of the caller has options that can be accessed using Shift+S and other combinations. If one of those combinations was pressed while being in the wkp, the menubar of the wkp caller was activated. After that, some of the keys did not work anymore –those that had associated an option in the menubar of the caller -.

The error was corrected.

• Did not save blanks in description of variable of list box or combo box There is a list box with a variable associated. When values with blanks at the beginning and/or at the end were added, they were ignored in the load of the listbox

For example &text2 = space(36 ) + '5678' &text.additem(&text2 ,&text2 ) It should be " _36 spaces_ 5678", but it was seen as "5678".

The error was corrected.

• Entering new lines in a Long Varchar field In the Work Panels, in a Long Varchar field (memo), it was not possible to add a new line on purpose. That is, when enter was pressed, either the field was exited or the event ENTER was executed, but the line could not be “confirmed”.

The error was corrected.

• Graph did not load data depending on the regional settings If the decimal separator was set as DOT in the regional settings of the machine, then the graph was not loaded. The error was corrected.

• Error(..) if (key) was executed too early There is a 2 level trn with tab control. The first level is in the first sheet of the tab control, and the second level in the second sheet. There is a rule error(...) if null(atrkey); where atrkey is the key of the first level. After a record was entered, the error rule was triggered.

The error was corrected.

• It requested confirmation too early in trn with only one attribute There is a one level trn and the key is not shown on screen (it is received by parameter). Only one secondary attribute is shown. In the preferences there is Confirm each action. Confirmation was asked when entering to the trn, so it was not possible to modify the secondary attribute.

The error was corrected.

• Problems with focus and prompt in trn with tab control There is a 2 level trn. The key of the first level is out of the tab control. The rest of the first level is in the first sheet and the second level in the second sheet. The last attribute accepted in the first level is a . If TAB was pressed after bringing the foreign key using the prompt, the focus positioned itself again in the key of the first level, and all the data entered was lost.

The error was corrected.

• Focus went back to key in trn with check box and rule noaccept There is the following trn: trn: A* B C D // is checkbox E rules: noaccept(C ) IF B = 0 ; noaccept(D ) IF B = 0 ;

If B=0, when TAB was pressed to get out of the field, the focus went back to the key of the trn instead of going to the attribute E.

The error was corrected.

• Selected record was not the one shown on screen There is a wkp with load on request. The base has many records loaded (more than the ones that fit on screen).

If the scrollbar section under the elevator was pressed with the mouse –to go down many records at a time- and then an event that used data from the record was executed, that data corresponded to the record of the previous click.

The error was corrected.

• Conditional noaccept over variable in wkp did not work There is a wkp with 2 variables. The second variable is disabled according to a condition that depends on the first variable. For example: In the form there are &v1 and &v2, and in the rules there is: noaccept(&v2) if .not. null(&v1); The variable &v2 was always accepted, without taking into account the rule.

The error was corrected.

• Rule after( att ) was triggered too early There is a trn with a key made up by 2 attributes. The first attribute is also foreign key and is received by parameter. There is a rule AttKey2 = 2 if null(AttKey2) .and. after(AttKey2);

The problem was that the rule was triggered immediately after entering to the trn. Therefore, the attribute AttKey2 was instantiated in 2.

The error was corrected.

PATCH # 6

• Passing parameters using RPC and OS’s different versions The way of passing the parameters to the AS/400 via RPC has changed in versions 4.4 of AS/400’s OS. In some cases it happened that C/S applications that performed remote calls to RPG or COBOL worked well with the OS’s old versions, but they had trouble when passing parameters in the new versions. For example, there were cases where either the parameters were not returned or the ‘Decimal Data Error’ occurred.

Solution: The OS preference was added for the AS/400 Version, in the AS/400 section. The possible values are the OS’ different versions from V2R2 to V4R2. The value by default is V2R2. This preference is fundamental for the RPC calls.

• Two events with the same function key in a two-level transaction Two events can be defined in Xbase, with a different name, but with the same function key associated, as long as the level sentence is used, specifying that each event belongs to a different level. For example, the following thing can be done:

TRN: A* B (C* D)

Events: Event 'one' 6 level A call(wkp1) EndEvent

Event 'two' 6 level D call(wkp2) EndEvent

This behavior was also implemented in VFP in order to maintain compatibility and for making the models’ updating to VFP easy for GeneXus users.

• When performing RPC to an AIX the numeric variable’s value is modified Several parameters are passed to a procedure that calls via RPC. The first variable is N(3) that is not modified in the procedure. The trouble is that when calling it several times, it starts modifying the variable’s value. The problem was that the values’ assignment when returning the server’s value was wrongly performed and in some cases some added figures appeared after the returned value.

The error was corrected.

Improvement in the C/S performance with DB2/400: The number of simultaneously open sentences against the AS/400 has been increased. The value has been increased from 100 to 250 open sentences. It has been proved in many installations that this considerably improves the applications performance. This value is configurable anyway, for more information refer to SAC 7203

• NULL( Att/Var) of Character or Varchar type in Oracle You have a condition of NULL(Att/Var) type where Att/Var is of Character or Varchar type and this condition goes to the server (it is generated in an SQL sentence). The result of the execution could be not correct. The scheme for comparing Oracle strings is somehow ‘different’ from what we are used to in GeneXus and this was the trouble’s cause. Since this moment, the former condition is substituted by ‘RTRIM(Att/Var) IS NULL’ and this has the results that we expect.

• Error -181 in DB2/400 with VFP and datetime key You have a key with a datetime attribute as a part of the key. When executing the associated transaction the error message appears.

Client Access ODBC Driver (32 bit) DB2/400 SQL 0181: 'Value in date, time or timestamp string not valid'.

This message is also displayed if in a transaction with two datetime fields a record is inserted and the value of one of the datetime field is not initialized:

a* T1 (datetime) T2 (datetime)

The error was corrected.

• You have a table declared as local in a Client / Server model. If you enter the transaction associated to that table it does not place itself on the first record as it normally happens, but it stays in Insert waiting for the user to enter a key. The error was corrected.

• Formula was not updated when record was erased. You have a two-level transaction like this:

TRN A* B C (D* E F G)

C is defined as SUM(G). G is defined as an E * F redundant formula.

If a record of the second level was erased, the C formula was not properly updated.

The error was corrected.

• The table’s name was truncated to 8 characters in Data View A Data View is defined to a table with a name of more than 8 characters. You have a procedure with the following code:

For Each order A delete Endfor.

This generates an optimized delete. The trouble is that in this case, in the table’s locking sentence, the table’s name is truncated.

Note: The trouble occurs against Oracle and not with SQL Server. The locking sentence is not generated against SQL Server.

The error was corrected.

• Change of Behavior: It performed loop once in Insert when it did not have to. You have the following transaction with the following rules:

A* B

Parm(&mode); &A = udp(PNumerator ,'ONE' ) IF Insert .AND. after(confirm ); A = &A IF insert .AND. after(confirm );

When a transaction with Insert mode was called, loop once was performed when you ended inserting a record, and it should not do that.

The error was corrected.

Note: There are cases when the loop once in Insert must be performed, for example when the mode and the key are received per parameter or when the mode is received and apart from that you have an equal(key, constant) rule.

• Report saved as RTF didn’t align the numeric fields correctly The numeric fields alignment was not correct in reports saved as RTF. If a report generated with the Report Viewer was saved as RTF the numeric fields were aligned to the left instead of right. Rbuilder.dll version 3.5.3 released with this patch solves this problem.

• Common Dialog: The &IniPath did not work in the one of the functions of the VFP Common dialogs. You have the following things in a work panel’s Select event.

&IniPath= 'C:\Dir1'

Call("GxSelFil",&Select,&IniPath,&Extension,'Caption','',0)

It called the function but positioned on the data directory of the Model(Data00?).

We corrected: gxnewfile (and gxnewfil), gxselfile (and gxselfil) and gxselpict (and gxselpic) Note: the common dialogs functions with 8 letters (gxnewfil for example) are still included because of compatibility. In GeneXus Ceibo they will not be included.

The error was corrected.

• In a work panel without base table, when entering the load event it is executed twice. You have a work panel without base table (without subfile). It receives a variable per parameter that is displayed in the form. With the default properties (Load Startup = Yes). When entering it, the load event is executed twice.

The error was corrected.

• Work panel modal with msg in Start did not enable menubar options You have a work panel that has a msg in the Start event. If the work panel is modal, the menubar options were not enabled. The error was corrected.

• Focus was positioned on subfile after prompt in transaction with Tab Control You have a two-level transaction. The second level is in a tab control. Inside the first level there is a foreign key. If you pressed F4 on the foreign key, when returning from the prompt the focus was placed on the first field accepted in the tab control and not on the foreign key as it should do.

The error was corrected.

• Record already exists in a two-level transaction with noaccept You have a two-level transaction. The second level key is also a foreign key. The transaction receives the mode and a variable as a parameter. In update and delete a variable is assigned to the key and in this case the key is not accepted. If a record for which entered lines did not exist was entered in Update and being in the subfile you pressed ESC, the Record Already Exists error occurred before performing the loop once.

The error was corrected.

• Filter condition did not work correctly in work panel You have a work panel with a variable for performing a filter on a table. For example, you have the following transaction:

Atr1* Atr2

You have a work panel and in the form you have:

&Var1 Atr2

In the work panel conditions you have: Atr1 = &Var1;

When the value that is entered in &Var2 does not exist in the table, the value that had been previously displayed in the Atr2 attribute is not erased (the value that had been selected with the previous filter stays).

The error was corrected.

• Arrays were not defined as local in procedures. The arrays were not defined as local in the programs generated in VFP. As a consequence, the recursive calls between procedures that used arrays did not work. The error was corrected.

NOTE: Recursive calls in general are not supported in GeneXus. There are particular cases that do work, for example, the recursive calls between procedures generated in VFP, fpw, xbase that go on the dbf's. If anyway you want to use recursions, you must take into account that those programs will probably not be able to be migrated to other platforms, for example C/S, where because of the scheme used for managing cursors, this generally stops working.

• A transaction with delete mode, ignored return of the start event You have a transaction that receives &mode as a parameter. Apart from that, according to a certain condition a return is triggered in the start event. If the mode was DLT (this is to say the transaction was called in delete mode), the return of the start event was ignored.

The error was corrected.

• The annex to subfile (grid) did not appear when it is inside tab. You have a subfile (grid) inside a tab control. The special annex that is added to the subfiles for them to be generated in equal position than in design did not appear. The error was corrected.

• Edit Box that contains DateTime and is not accepted was in gray. You have an edit box that contains an attribute or variable of DateTime type. If the field was not accepted, it was displayed with a gray background, not like the other controls that appear with a white background in this case. The error was corrected.

• It did not take decimals into account when generating Graphic. You have a work panel with a subfile that contains a numeric field with for example two decimals. You want to generate a Graphic through the GRAPH() command on the subfile’s data. The problem is that when passing the data to the graphic the numeric fields are truncated and the stay generated without the decimals. This is because the numeric fields in the grid corresponding to the graphic are generated as ‘General’.

The error was corrected in such a way that in the graphic as many decimals as the SET DECIMALS indicates are taken into account. This command can be placed in the gx_dsset.prg, which is a standard program. By default, two decimals are taken into account.

• The navigation buttons did not work in transaction with key in parm You have a transaction with a compound key. A part of the key is received per parameter and the rest of the key is shown on the screen. In this case the navigation buttons did not perform any action. The error was corrected.

• It was not possible to execute enter event in work panel without a button. You have the Field Exit = Tab preference or FoxPro 2.6 Generator. If you have a work panel without a button associated to the Enter event it was not possible to execute the Enter event.

The error was corrected. Apart from that, the following change in behavior was performed:

If you have the Field Exit = FoxPro 2.6 Generator preference, in a work panel with subfile, the enter changes field in the filters and in the subfile it triggers the enter unless it accepts something. In this last case it triggers the enter event after the last one accepted.

PATCH # 5

IMPORTANT: In this patch a new dialog (Select Component) has been introduced. It has an option Standard Components, when this option is marked Visual FoxPro’s generator and standard programs will be installed, otherwise only the system files will be installed. For more information refer to the following documents: • www.genexus.com/newpatch/patchen2.pdf • www.genexus.com/newpatch/terminalesen.pdf

• The error handler rule wasn’t implemented. It should implement the errors handling for C/S.

The error has been corrected

• Error 4922: ALTER TABLE DROP COLUMN failed When executing a reorganization that deletes an attribute that have an associated index, using SQL Server as DBMS, the error 4922 occurred, The text of the message is: "[Microsoft][ODBC SQL Server Driver][SQL Server]ALTER TABLE DROP COLUMN failed because INDEX accesses this column.".

The error has been corrected

• Variable is not found, when using nullvalue function If you had the preference "Generate NULL for nullvalue" = "Yes". In a plain transaction the following rule is entered: ATT = NULLVALUE(ATT ) if null(ATT ) .and. after(confirm ) ;

At execution, when the record was confirmed the following error occurred: "Variable 'XXATT' is not found" in the line GXSETNULL( 'T00065' , 2 , XXATT )

The error has been corrected

• Internal Error 3 when making the reorganization. The following error occurred after generating the reorganization:

Internal Error 3 in function CDatabase::OpenDB() ISAM error: -1--1-22-0

The problem was that in the way the call was made when finishing the generation, the generator continued executing without closing the files immediately. Then, when GeneXus wished to open those files the error showed that it couldn’t open them because they were already open.

The error has been corrected.

• Generator "hung" generating gxlock.prg in reorganization We had a C/S model with Declare preference in YES. If we made reorganization on the table that had subordinated table, then the generator was hung when generating the gxlock.prg.

For example, it happened if we had the following: A* B (C* D) And we made reorganization on attribute B.

The error has been corrected.

• Update wasn’t generated in complex navigation We had the following tables’ structure:

TableE tableA <<--->tableC table B <<---> table A tableD <<--->table B

We had two nested for eachs that weren’t control cuts and accessed to a common N1 table. In one of them the table was updated, and in the other it wasn’t.

A structure example is: FOR EACH B access to B, A and C update A // this update isn’t generated. FOR EACH D access to D and A //This record from A is different from the first one //(it has got subtypes) NEW in E END FOR END FOR

It applies for: Informix, SQL Server and DB2 It worked well in Oracle.

The error has been corrected

• It didn’t take into account the HIDETABS option in tab control If we set the Hide Tabs tab controls option in design, this option wasn’t taken into account. The error has been corrected.

• JPG images weren’t printed in reports with Report Viewer JPG images weren’t shown in reports when using the Report Viewer. If they were used in Work Panels they worked well. They didn’t work if we used a bitmap variable or if we used the loadbitmap function. The error has been corrected (GXDIB32.DLL with date 14/01/2000 or later)

• It loaded first subfile line in null We had a Work Panel with a text-type control and a subfile. The subfile only had a variable that was loaded in the load event. If the variable name was equal to that of the control text, the first subfile line remained with null value. The error has been corrected.

• It didn’t delete inferred attribute when making loop in Insert. We had two transactions in the following way:

TRN ONE A* B

TRN TWO A* B C* D

When we entered in the TRN TWO in Insert mode, after entering the first record it made the loop "zeroing" all the attributes less the one inferred (B). The error has been corrected

• Formulas' values were reinitialized when validating key We had a two-level common transaction with composed key in the second level. Besides, we had a formula that depended on one of the key attributes. The problem was that the formula was reinitialized after validating the code.

For example:

A* B (C* D* E F ) =C*2

F remained in zero after validating D.

The error has been corrected.

• Property ValToText not found with combo or check box in hidden We had a work panel with a subfile in which some fields were shown. Besides it was shown attributes in check box or combo box controls outside the subfile. A hidden rule was defined for them. When loading the work panel it showed the error property Valtotext not found in the following line: REPLACE Field3 WITH THISFORM.cCW1A3.ValToText(THISFORM.A3Field3)

The error has been corrected.

• Variable not found when using search on extended table attribute. We had a work panel with a subfile and with a condition variable. In the work panel it was shown an attribute that was inferred from the extended table. If we created a search rule that linked this attribute with the variable, when executing the subfile load the following error occurred: Variable not found. The error has been corrected.

• It didn’t take into account the Confirmation property in transactions If we had the Confirm preference at model level in its default value (Do not Confirm each action), then it didn’t take into account the transactions Confirmation property values. The error has been corrected.

• Form.refresh() initialized or cleaned the transaction key We had a two-level transaction that received mode and key. In Insert the first level key was numbered automatically. If, when being on the lines, we executed an event that executed the form refresh() method, after executing it the first-level key was initialized, also cleaning all the subfile because lines didn’t exist for the new key (null).

The error has been corrected

• It confirmed the subfile record if we “pricked” on Dynamic Combo We had a two-level transaction with subfile in the second level. In the second level we had a foreign key. On this foreign key we put a Dynamic Combo Box. If we advanced with TAB in the subfile line and then clicked with the mouse on the dynamic combo box of that line, it asked the line confirmation (if Confirm was in YES), or it directly confirmed that line leaving the focus in the lower line dynamic combo box.

The error has been corrected

• Error “object not found” We had any work panel and we performed a return in the Enter event. If the operator was too quick, the machine too slow, and besides the operator pressed the Enter key twice, then this error occurred.

The error has been corrected.

• First key wasn’t taken into account in subfile DateTime If we had a DateTime type field in a transaction subfile, when we entered to modify a record and tried to modify the DateTime attribute, the first key pressed wasn’t taken into account.

The error has been corrected

PATCH # 4

• Performance improvement for color rule with VFP 6.0 Some improvements were performed in the conditional and unconditional Color rule’s implementation, which favorably affect the performance; especially that one of workpanel with subfile, Color rule and with Load Records property in Load on Request.

• Defining a Combo Box on Varchar attributes was not possible You have an attribute of Varchar type. You want such an attribute to have control type Combo Box. At execution time the following error appeared: ‘Property ADDDATA is not found’ on the ‘This.AddData('ggkgk','dffdsf')’ line The error was corrected.

• SQL 204 - in type *N not found You have a model in which the reorganization’s generator is RPG/400; the generator by default is also RPG/400 and there is a secondary VFP C/S generator. You have a main work panel generated with VFP C/S that calls a main procedure generated with RPG/400 passing parameters to it. At execution time, when calling the procedure the following error occurred: ‘Error SQL-204 in type *N not found’. Where is the main VFP object that calls the RPG report and is the programs’ library. The problem was that in the stub, when the call was performed the library was indicated. The error was corrected.

• Attributes used in After TRN even are in null You have a transaction of a level in which the password is not accepted. This one is generated if insert .and. after(confirm). In he After Trn event all the attributes had the null value, except those ones hat participated in default rules. These ones had the value by default. The error was corrected.

• Problem with null dates in Informix In GeneXus version 5.6, when you generated with Informix, when recording a date attribute with nullvalue in the database, the attribute stayed with '1899-01-01' value, not being that value the minimum that Informix can store in a date field ('0001-01-01'). This trouble was solved in GeneXus version 6.0. Since that version, if the user wants to get the former behavior (nulldate= 01/01/1899), it is achieved the following way: include the line NullYear= 1899 in Windows' gxcs.ini file under the [GeneXus C/S] section. This works adequately when the nullvalue value is assigned to an attribute, but it does not work in the filters. For example if you have the following: for each where Att = nullvalue(Att) .... endfor

The filter is performed by the date 01/01/0001, not finding any records in the query. In order to solve the problem, apart from having the corresponding patch that solves the error, you have to add the following line in the config.gx file in the KB directory (if it does not exist you have to create it): NULLYEAR=1899.

The error was corrected.

• Variables are initialized when validating Key of the second level You have a two-level transaction with complex key in the second level. Besides, a variable that depends on one of the key attributes is shown. The problem was that the variable was re-initialized after validating the key.

For example:

A* B (C* D* E) &C=C if after(C);

&C stayed in zero after validating D. The error was corrected.

• File gxisalivedoc.prg does not exist A report was generated with the Printing Using dll = Yes and Report Viewer = No preferences. If the report had data, when executing it, the following error occurred (in the *.prg): File gxisalivedoc.prg does not exist on the line: IF GxIsAliveDoc( GXHDC)= 0

The error was corrected.

• Problem with Loadbitmap in Rules You have a two-level transaction for Clients:

Cod* (lin* Bmp)

Bmp has a bmp’s path. A variable of bitmap &BMP2 type is defined. The values are loaded in the subfile, and then the rule is defined:

&BMP2 = loadbitmap(Bmp );

The subfile’s values appear slipped one place and the paths appeared in LIN. The error was corrected.

• It returned to Tab Control’s former page after an event You have a work panel with a Tab Control of several pages. On a page, you have an edit box with a variable. On the other page you have a button and a Label (a text). After pressing the button that executes a message or that calls another work panel, the focus returns to the former page. The error was corrected.

• Problem using Visible property on a Radio Button You have a variable defined as a control of Radio Button type. In the control’s definition you add a heading to the Frame. When setting the variable’s Visible property in 0, the Radio Button disappears at execution time, but the Frame’s heading remains. The error was corrected.

• Function argument value, type or count is invalid You have a two-level transaction. The second level’s key is a foreign key. If you associate a Dynamic Combo Box (placed in the grid) to that key, the following error, named in the following line, occurred:

SEEK STR(THISFORM.A3C,1)+STR(THISFORM.A1A,1)

The error was corrected.

• The date time comparison in the conditions did not work. You have the following condition in a work panel: Clidatetime >= &datetime ; When the wkp was executed and the variable that worked as a filter was entered, if you pressed F5 in order to refresh the screen, the following error occurred: Operator/operand type mismatch

The error was corrected.

Patch # 3

• Common Dialog Functions may be called as UDPs From this patch the Common Dialog Functions may be called as non-standard functions and as UDPs. That is to say, a Common Dialog may be called in any of the following ways:

GXSELDIR(....)

&return = udp(GXSELDIR, ....)

In the &return variable it is returned whether the function worked correctly or not. It returns 1 if it worked well and 0 if an error occurred or the user cancelled.

PARTICULAR CASE In the case of GXCalculate function, when it is used as UDP, the returned value is the result of the operation performed.

• Report Viewer with Multilanguage support. The Multilanguage support has been implemented in the Report Viewer, in the Rbuilder version included in this patch. From now on the Report Viewer interface will be presented in the language set in the “Master Model Property” (design model properties). It supports the following languages: Spanish, Italian, Portuguese and English.

• Text mode reports may be saved as TXT files From the Rbuilder version included in this patch you may save the text mode reports as TXT files. To be able to achieve this you must select the File/Save As ... option, and select the TXT file type (Save as Type: Plain Text (*.txt))

• Problem with dynamicforecolor in data attribute. We had a data view on a table that contained attributes of length greater than 10. When making the data view on this table it cut off the names of the attributes at 10. We had a work panel with a subfile with data view attributes. We performed the conditional color rule on an attribute. When executing the work panel this error occurred: "Expression is invalid. Use a valid expression for Dynamicforecolor property”. This happened because when building the sentence for the dynamicforecolor, the attribute’s name wasn’t cut off at 10. The error has been corrected.

• Serverdate functions returned "" if we weren’t connected The serverdate, servertime, servernow functions were returning "" if we weren’t connected. From this patch, when you call one of these functions, first you connect and then you return the server requirement.

• First record positioning when entering a transaction with parm() VFP and VFP C/S generators have been modified in order it doesn’t perform the positioning and the loading of the first record when entering the transaction in case of receiving the code among the parameters. It isn’t necessary because in these cases it loads directly the record that the code indicates.

This caused an unnecessary overhead: it searched and loaded the first and then searched and loaded that of the code. The error has been corrected.

• Variable not found when calculating vertical formula It showed variable error not found and stopped on a line where it assigned a variable to a vector in the routine that calculated the vertical formula. The error occurred if we had 3 vertical formulas, two of which had equal navigation. They were calculated in a for each that went through the formulas table. The problem occurred because it was not closed. The error has been corrected.

• Error -10. The text for the message is "" This error occurred when we clicked on a work panel that had the load at startup=NO property. The error didn’t occurred if we had the property in YES.

It could also show: Error -10: The text for the message is: "[Microsoft] [ODBC SQL Server Driver] [SQL Server] Changed database context to

The error has been corrected.

• Error: -501 Cursor <...> not open. If VFP C/S was generated with DB2/400 and we had a two-level transaction as the following:

TRN1 A* B C (D* E F)

When being on the lines we wrote a code of an existent record (being positioned on another record, therefore the line was changed). When modifying some secondary attribute of this record and confirmed, the following message appeared "Error: -501 Cursor <...> not open"

The error has been corrected.

• Incorrect message using Confirm Transactions If we used the Confirm Transactions = Yes preference, and we had that the model’s language was Portuguese, the text was incorrect when the message was displayed. The message text said: Confirma a transa+,o ? The error has been corrected.

• It didn’t display the record data when deleting in DLT mode We had a “work with” type work panel that called a transaction in DLT mode. If the transaction had set the Confirm Transactions=YES property, the "Confirm Transaction?" message was displayed, but it didn’t show the records data to be deleted, but those of the next one. Besides, it showed the record code to be deleted in blank. The error has been corrected.

• Error -10 . The text for the message is: "" We had a one-level transaction in which the attributes were shown in a subfile. If we used the default_mode(insert) rule, this error occurred. If afterwards we cancelled, the program stopped in the gxform.prg in the AfterAllLevels procedure, with the COLUMNS is not an object message.

If we didn’t use the default_mode rule, it worked well.

The message text varies by DBMS. This happens against DB2400. If we work against Oracle, the error is " General Error ".

The error has been corrected.

• Serial Rule in two-level transaction without subfile We had a two-level transaction with the following structure:

InvId* InvUltLin (InvLinNum* InvQuant InvImp)

Rules: serial(InvLinNumo ,InvUltLin ,1 ) ;

The special feature was that the second level attributes weren’t within a subfile. The first record that was inserted in the second level had code 2, when it should be 1. The problem was that the serial rule was triggered twice.

The error has been corrected.

• Sometimes BMP isn’t viewed or printed In a bmp header, among other things there is the bmp size declaration. If this declaration didn’t coincide with the reality, the bmp wasn’t displayed in any application or utility that used the gxdib32.dll (This dll is used by GeneXus and the printing dll's). The checking has been inhibited in order that the bmp is anyway shown. (MSPaint also shows it in that case.)

The error has been corrected.

• File 'Lxxx.dbm' does not exist when compiling main menu. When compiling a main menu this error occurred. The problem was that when the menu was generated it was also generated the Mxxx.gfm file instead of the Lxxx.gfm. This caused that when the file with dbm extension was generated from gfm, Mxxx.dbm was generated instead of Lxxx.dbm. That is why we didn’t find the Lxxx.dbm file.

The error has been corrected.

• PL isn’t taken into account in text mode report. If we had a text mode report in which we set the PL, this set wasn’t taken into account. This was because the rbuilder.dll function named GxGetPageSizeY returned the page size wrongly. The error has been corrected in the rbuilder included in this patch.

• Record not found after deleting record in transaction We had a “work with” type work panel that called passing the code and DLT mode. After asking if we really wished to delete the data, the "Record not found" message was displayed.

The message was shown if we had the following in the rules: parm(&cod ,&Mode ) ; Cod = &cod IF update .OR. delete ; noaccept(Cod ) IF update .OR. delete ; //without this line the error didn’t occur.

The error has been corrected.

• Focus didn’t remain in subfile when entering in work panel with Tab Control We had a work panel with Load at Startup=YES. Besides, the work panel had the (grid) subfile in a Tab Control. In this case the focus didn’t remain in the subfile as it should.

Side effect: After calling another work panel, for example to see more data, the Load was executed again because the selection variable in that case was validated for first time.

The error has been corrected.

• Escape in transactions with two subfiles We had set the "Esc Key Action" preference with Exit level. We had a two-level transaction with two parallel subfiles

A* (B*) (C*)

When positioning on the B subfile and pressing escape, it exited the transaction. The correct behavior is to pass to C subfile.

The error has been corrected.

• It showed the “Record already exist” message in Insert mode in two-level transaction We had a two-level transaction that received, besides the mode, the first level code as parameter. If we didn’t accept the code this error occurred if we pressed ESC in the second level. The error has been corrected.

• It shows gxselfil.prg not found error when executing We had an application in which; for example, in a work panel we called the gxselfil function. If it wasn’t the prg or the fxp in the exe directory this error occurred. The problem was that the gxselfil wasn’t included in the project. The error has been corrected.

• Application compiled with VFP 5.0 is hung when printing If we compiled an application with VFP 5.0 and tried to print, the application was hung up. This happened if we had the entire printing and report viewer preferences by default. In the machine where it occurred it was installed the VFP 6.0 with SP3, therefore the rbuilder.dll had the necessary dll's to execute.

It didn’t happen if we put the Report Viewer=NO preference.

The error has been corrected.

Patch #2

• IMPORTANT: 1. Change in the patches applications methodology

Since this patch, a new technology is being used for assembling them. The main advantage of this technology’s use is the possibility of modifying and recording system’s files (.dll and . ocx that are in the window/system directory), this implies the elimination of the nsetup’s patches.

Such a patch will update: Programs files of GeneXus’ installation (for example, the development environment, the generator or standard programs). This is what we do until to now. It’s enough to apply the path on the server.

System file (for example, libraries and controls files that are installed in the windows\system’s directory) When it also installs system files, the patch must be applied in the server and in all the working stations, selecting the directory where GeneXus is installed.

Note: In a new work terminal it is necessary to install the Nsetup of the original installation, and that generator’s patch. The new patches eliminate Nsetup’s patches, but not the Nsetup.

2. Property GridHitTest not found in VFP 5.0 When the elevator is pressed in the vertical scrollbar and it is pushed downwards, the routine MousedDwn from the file gxform.prg is executed. In this routine VFP 6.0’s GridHitTest property is used. This routine is not defined in VFP 5.0, that’s why the mentioned error occurs. If you are compiling with VFP 5.0 you must download file gxform.prg from the patches pages and copy it to the model’s directory (dataxxx) and gxw61\gxvfp directory after installing the patch.

• Functions ServerDate, ServerTime, ServerNow in DB2/400 These functions were implemented for all DBMSs supported by GeneXus except DB2/400. From this patch and on, it is also available for DB2/400. For more information refer to the release notes of this generator patch #1 or to the following URL: http://www.artech.com.uy/forum/tips/sedati.htm ).

• The preference "Default remote procedure location" has been eliminated This applies for procedures that aren’t from the model. It didn’t find the RPC program in the library set in the Default Remote Procedure Location preference. When making the call it showed the error:

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."

The "Default remote procedure location" preference has been eliminated because in the last Client Access versions this error is generated if the program name is qualified.

IMPORTANT: For compliance with the past, even when the preference has been eliminated, we have also added the WA0002 (Workaround 2) configuration option to be used in CONFIG.GX file. This has been done so that if it is with the “old” Client Access working, it works as before. In that case, in the CONFIG.GX (text file that should be in the Knowledge Base directory), we must include the following line in order that its programs remain working as before:

WA0002=< "Default remote procedure location" preference previous value>

IMPORTANT NOTE: If previous to the installation of the version with the modification, you used the preference and it worked, now you should use the configuration option indicated above.

• Change in OUTER JOIN generation for SQL Server 7.0 For SQL Server version 7.0 (see SQL Server/Version preference) the join is generated with a new syntax, corresponding to the standard SQL-92. The change has been done due to two reasons: a. It is recommended in the SQL Server manuals. b. We detected an error in the SQL Server 7.0 behavior regarding the previous syntax.

The previous syntax was:

SELECT T1.FacTot, T2.CliNom, T1.CLiId, T1.FacId FROM FACT T1 (NOLOCK), CLIEN T2 (NOLOCK) WHERE T2.CLiId =* T1.CLiId ORDER BY T1.FacId ; and the current syntax is:

SELECT T1.FacTot, T2.CliNom, T1.CLiId, T1.FacId FROM (FACT T1(NOLOCK) LEFT JOIN CLIEN T2 (NOLOCK) ON T2.CLiId = T1.CLiId) ORDER BY T1.FacId ;

• DROP COLUMN command support in SQL Server 7.0 The DROP COLUMN command allows eliminating a column from a table with a SQL sentence. So, its use speeds up the tables’ reorganization process in these conditions (because you are not obliged to create a new temporal table with the remaining columns and then copy all the data). Up to this version only the DBMS INFORMIX supported this. From the SQL Server version 7.0 this is available.

From this patch we will use this facility when the SQL Server/Version preference has set the value "7.0 or superior", and when a table reorganization involves only ELIMINATING one or more attributes. It is also used when attributes are eliminated and new ones are added for which there is no way of calculating its value. This is when in the navigation it doesn’t appear between brackets the name of the table from which it is initialized.

The syntax if ALTER TABLE

DROP COLUMN ,

Temporary Restriction: SQL Server 7.0 does not allow performing a ‘Drop Column’ over a column that has an associated index. For this reason, and because we haven’t been able to find a workaround, it is not possible to use this command in this case. When you have to perform a reorganization of this type you must change the preference SQL Server/Version to "6.x". Otherwise when executing the reorganization the following error message will be displayed: Error 4922, The text of the message is: "[Microsoft][ODBC SQL Server Driver][SQL Server]ALTER TABLE DROP COLUMN failed because INDEX accesses this column."

• Configuration of the maximum number of opened cursors The number of simultaneously opened cursors (for each application executing in a client PC) is from now on configurable, that is, it is possible to indicate the number of cursors that can be opened including the following in the GXCS.INI (that must be in Windows directory) :

[GeneXus C/S] MaxOpenStatements = N

Where N is (forcedly) between 50 and 255, in other words if N < 50 --> N = 50 if N >255 --> N = 255.

The default value (that was fixed until now) is the same: 100 cursors This feature is specially applicable to the AS/400 in the last OS versions.

Note: The possible values range depends on the DBMS, therefore you must know these values before applying this feature.

• New Preference: Report Viewer / MODAL A preference has been added at model level in the Report Viewer section. It is named MODAL and takes YES (by default) and NO values.

Up to now the Report Viewer was generated in a modal way, i.e. once called the Report Viewer, we couldn’t return to the object that called it, and for example, call again the Report Viewer with another report. With this new preference this is possible if its value is in ‘NO’.

• Since this version, the Report Viewer allows performing Trace. The version of the Rbuilder.dll (version 3.4.2), that is released with this patch, incorporates trace. In order to enable it, it is necessary to include the Trace entry in the gxprn.ini’s of the application’s directory in the following way:

[Trace] Trace=[0|1]

For now, there are not detail level, this is to say, the 0 value disables the trace, and 1 or more enables it. The trace is stored in a file with autogenerated name and LOG extension in the model’s directory.

NOTE: Since Rbuilder.dl version 3.4.1 and on, having Visual Studio’s SP3 installed is a requirement (this is because of the msvcrt.dll and mfc42.dll it updates).

• Date problems with procedures and main reports. When a procedure or main report were called, all the needed settings with respect to the date and time were not being performed, the First Year of 20th century preference between them was not being taken into account, and the other settings that were not being taken into account were those of the Date Format and Time format preferences.

All these settings are performed when entering any Work Panel or Transaction, no matter if they are called by a procedure or by a main report.

This is a detail of the not performed settings:

SET SAFETY OFF // See VFP Help for more information SET BELL OFF // See VFP Help for more information SET REPROCESS TO 1 //Text extracted from VFP Help: “Specifies how many times and for how long Visual FoxPro attempts to lock a file or record after an unsuccessful locking attempt.” IF SET("DATE") != "BRITISH" SET DATE BRITISH // Preference Date Format ENDIF SET EXACT OFF // preference Set Exact SET CONFIRM ON // It is part of the Field Exit Preference’s implementation DO GX_YrLmt WITH 19, 40 // First Year of 20th century Preference IF SET("HOURS") != 24 // Time Format Preference SET HOURS TO 24 ENDIF SET READBORDER OFF // See VFP Help for more information IF SET("POINT") != "." // Decimal Separator Preference SET POINT TO "." SET SEPARATOR TO "," ENDIF DO GX_DSSet // Possible settings by Data Session.

Since this patch, these settings are also performed in the reports and procedures, so the error was corrected.

• “elevator’’ in Work Panel with ‘load on request’ did not work correctly There were troubles with the vertical scrollbar that only occurred with Work Panels with the Load property in Load On Request. For example, if the elevator moved down, it did not force the load of more records. In general, this behavior was not as good as it is in a Work Panel that has the property in Load All. Since this patch, a mechanism through which these problems and, in general, the whole scrollbar are solved was implemented.

• The SUM formula was not recalculated You have a transaction of 2 levels and a SUM (or COUNT) formula in the first level that depends on attributes of the second level. This last one is generated by a procedure that is invoked in an event. When returning from the procedure it did not refresh the formula’s value.

If the formula is NOT redundant, executing the subf.refresh() method that refreshes the subfile and the not redundant formulas of the first level is enough. Note: subf is the Grid’s Name

If the formula is redundant, the form.refresh() method that refreshes the whole contents of the form must be executed. The latter is implemented since this patch.

• If you were not connected, serverdate functions returned "" The serverdate, servertime, servernow functions were returning "" if you were not connected.

Since this patch, when one of these functions is called, first it connects and then it returns the server’s requirement.

• Error -524 when reorganizing No Ansi database in Informix You have a No Ansi database created in Informix, which has a log of the performed operations associated. When executing a reorganization of the database, the following error appeared an execution time:

Error Code -524 in 0 text is: '[INTERSOLV][ODBC Informix Driver][Informix]Lock table can only be used within a transaction.

The error was corrected.

• Problem with server...() functions Any of the functions that return the server date and time (serverdate(), servertime() or servernow()) is used in a loop, for example:

&I = 1 Do while &I <= 1000 If servernow().. . . &I = &I + 1 Enddo or in a For each.

If the number of iterations is big, a GPF occurred. The error was corrected.

• "Incorrect syntax near CALL" when calling a We have a GeneXus object where we make a call to a SQL Server stored procedure. We have the List of Remote Programs preference set with the name of this stored procedure. When executing the call an error occurred:

Error 170 The text for the message is: [Microsoft][ODBC SQL Server Driver]Line1: Incorrect syntax near 'CALL'.

We were using the following sentence [CALL PROCEDURE nnnn()]

The problem is due to the following: to call a stored procedure we must use the following sentence: '[EXECUTE PROCEDURE nnnn()]' Where nnn is the name of the stored procedure.

The error has been corrected.

• DateTime entered in VFP with ORACLE wasn’t displayed If we had a DateTime field and we generated VFP C/S with Oracle, when executing the following occurred: if, for example, we entered a field 10/10/10 10:10, when viewing it "10/10/10 10:09" was displayed.

This occurred because a data conversion and round problem between VFP and the C/S DLL.

Actually, in the example, in the database "10/10/10 10:09:59" was stored. This caused that when the attribute was as a code and was received as parameter, at execution it showed the error RECORD NOT FOUND. The problem was that there was an error in the conversion algorithm. The Record not found error will occur anyway with the entered data because now, if we enter 10:10 it won’t find the record 10:09:59. The solution is modifying the attribute definition to T(8,8) and re-generating all the programs again.

The error has been corrected.

• SQLERROR=-201 "A syntax error has occurred" in INFORMIX We have a transaction with the following structure:

A* B C D

We go to prototype and we create the Database correctly. In design we make the following changes: In the table we eliminate the attribute C. We eliminate the attribute C from the Knowledge Base. When executing the corresponding reorganization an error occurred:

SQLERROR=-201 "A syntax error has occurred"

The problem was that we were generating a sentence of like:

ALTER TABLE

DROP ()

Summarizing, it occurred in the following conditions: a. The DBMS is Informix b. An attribute was eliminated from a table. c. The attribute was also eliminated from the design model (Advanced/Attribute/Remove).

The error has been corrected.

• Ixxx is not a constraint We had the following transactions

TRN Clients CliCod* CliNam CountryCod

TRN Countries CountryCod* CountryDsc

If we had the "Declare Referential Integrity" preference in Yes, when creating the database it showed the error "IClient1 is not a constraint". This error occurred when executing the step 2 of the "Dropping referential integrity constraints" creation. The IClient1 index corresponded to the foreign key CountryCod in the Clients transaction.

The error has been corrected.

• Connection is busy with results for another hstmt It showed the following error "Error -3: The text for the message is [Microsoft][ODBC SQL Server Driver] Connection is busy with results for another hstmt"

We had the following transactions:

TRN1 TRN2 A* C* A1 A A2 A1 (B* A2 B1 B2)

Being in the TRN1 header we wanted to delete a record that had a reference in TRN2. When performing this, a message appeared indicating that the record couldn’t be deleted because there was a reference in TRN2. If after the message appeared we clicked on the subfile with the mouse, the described error occurred.

The error has been corrected.

• Connection is busy with results for another hstmt When the DMBS was SQL Server. It presented this error when in a two level transaction we tried to Delete in cascade. For example, we had the following transaction:

A* B (C* D)

Being positioned on the header and pressing Delete, the error message appeared. The error has been corrected.

• Varchar was created as Character in Oracle If we generated the database creation in Oracle, the Varchar fields were created as Char. This was independent from the Declare Varchar as Varchar2 preference.

The error has been corrected.

• Select sentence of Sum Aggregate/Select formulas was wrongly built. We had the following transaction:

TRNA A* A1 (B* B1 B2)

Where A1 was a Sum aggregate/select formula in the following way: sum(B2, B1 = 'A' .OR. B1 = 'B', 0);

This generated the following select sentence: SELECT SUM(B2) FROM TRNA1 WHERE (( A = ? ) AND B1 = 'A' OR B1 = 'B')

The problem with this was that the AND has stronger precedence that the OR, then the formula was triggered incorrectly, summing all the lines where B1 = 'B'.

If we defined the formula in the following way: sum(B2, (B1 = 'A' .OR. B1 = 'B'), 0);

Then the following select sentence, which is correct, was generated: SELECT SUM(B2) FROM TRNA1 WHERE (( A = ? ) AND (B1 = 'A' OR B1 = 'B'))

The error has been corrected.

has been modified, or
was changed in transaction that receives parameter We have a two level transaction that receives the first level code as parameter. Besides, the second level is displayed in editboxes, and the first level attributes and the second level code have are noaccept. Then, when we entered the transaction and modified a second level value twice, this error occurred. The error has been corrected.

• Invalid subscript reference We had a work panel with tab control; in one of the tab control pages there was a variable. Being positioned on that variable we pressed a button that called another work panel passing the variable as a parameter. When returning from the called work panel the error "Invalid subscript reference" occurred in the Gxform file, in the following line: gx_start_lvl = THIS.Pages(gx_page).Controls(gx_field).gx_level The error has been corrected.

• Error ‘Variable not found’ when using search(&var1 cond &var2) rule; We have a work panel with a selection variable &var2, and a subfile that contains another variable &var1. If we had a search(&var1 >= &var2) rule, then the application cancelled at execution giving the error “Variable var1 not found” The error has been corrected.

• The message ‘Record already exists’ appeared if &mode was received. We have the following transaction:

A* B (C* //plain level, it isn’t in a grid D) (E* //plain level, it isn’t in a grid F) G //G non-accepted attribute and/or formula rules: parm(&mode)

Then, if we entered the transaction in 'INS' (insert) mode, after confirming the second level it tried to position itself on the first level and gave 'Record already exist ' error.

The error has been corrected.

• It didn’t refresh at second level if code the key was received If we had a two level transaction and the second level was shown in edit boxes, i.e. it wasn’t a grid, and it received the first and second level keys as parameters, the second level data weren’t displayed. The error has been corrected.

• Random problems of reports loss We have detected some random problems with when printing reports. The reports sometimes weren’t included in the printer queue or they were partially included. For example: it occurred that sometimes a report wasn’t printed, or some of its pages weren’t printed.

The error has been corrected in the rbuilder.dll 3.4.1 that is released with this patch.

REQUIREMENTS: In order for the rbuilder.dll 3.4.1 to work correctly, Vstudio 6.0 SP3 should be installed. The reason is that it requires the following libraries: msvcrt.dll 6.00.8397.0 mfc42.dll 6.00.8447.0

NOTE: GeneXus 6 ev 1 NSETUP patch 3 will also install these libraries.

• Declare DLL call caused an exception If we sent a report to the screen and we closed the Report Viewer before the report was completely loaded, and then we called this report, when loading it again an error occurred:

IN VFP 6.0 Declare DLL call caused an exception In the line: IF LEVEL1 =GxDwText( gxHDC, RV12Pgmnam ,0,14+GX_Line,103,29+GX_Line , "Arial",10 ,256 ,0,0,0,0 ,0 ,0,0,0 , 1, 255,255,255 ) // in this line.

The error has been corrected in the rbuilder.dll 3.4.1 that is released with this patch.

• Problem with function keys and Report Viewer We had a work panel with some buttons with associated events, and to each one it was associated a function key. If in one of those events we called a report opening the Report Viewer, when returning no function key worked.

The error has been corrected.

• It printed sending directly to the screen. If we have a report, which prints data that is outside the printer’s printable area, at the moment of printing the following message appears: "The margins of the document are outside the printable area of page. Do you want to continue?". If we chose "NO", then the report was printed directly to the screen, but not using the Report Viewer interface, but the text was directly printed in the screen, leaving the screen “dirty”.

The error has been corrected in the rbuilder.dll 3.4.1 that is released with this patch.

• Date Separator=ITALIAN showed separators "-" instead of "/" If we set the Date Separator preference in ‘Italian’ it happened that the separators were "-" instead of "/". The error has been corrected.

• Field Exit = ‘Tab or Enter’ in Radio Button and Check Box in VFP Using the preference: Field Exit = Tab or Enter or Field Exit = FoxPro 2.6, when passing by a Radio Button with Enter, the last option remained selected. When passing by a Check Box with Enter, it changed its value.

The error has been corrected.

• Date Time didn't work with 12 hours format. We had a datetime type attribute defined. The "Time Format" preference had the value "12 hour format". If in the field we entered a value that didn’t correspond to the 12 hours format, for example 18:20, it didn’t convert it to the 12 hours format, and it didn’t advise that the time value was invalid.

The error has been corrected.

• Horizontal Scrollbar was showed in VFP If we have a subfile in an object, at execution it was showed with Horizontal Scrollbar, even when the checkbox for indicating this wasn’t marked. The error has been corrected.

• OnLineActivate didn’t work in Refresh We had a work panel with subfile. We programmed the OnLineActivate event in such a way that according to a subfile attribute value the button was enabled/disabled. Besides, there was another button that called a transaction to be able to modify the attribute value in the OnLineActivate; and when returning it made a refresh. If we were in a line of the subfile where the attribute value indicated that the first button should be disabled, the transaction was called to change this attribute value in order to enable the button. When returning from the transaction the attribute value indicated that the button should be enabled, but it remained disabled. That is to say, after the refresh the OnLineActivate wasn’t triggered.

The error has been solved.

• Problem in plain transaction with subfile We had a plain transaction with subfile. The “Confirm” preference was in "Confirm each action". When we entered the first record in the transaction, all worked correctly, but when we entered the second one, when pressing tab the confirmation message wasn’t displayed, and the focus instead of changing to the following line it remained in the same one, positioned in the key. When pressing tab all secondary attributes were deleted.

The error has been corrected.

• Refresh in Menu Bar didn’t work in Work Panel with filter We have a Work Panel that displays clients’ information and filters the Clients according to the code (with a variable). That is to say, in the work panel conditions we have:

Cliid < &Code

The work panel has a Menubar associated to it (with the refresh event). When entering a code value (to filter clients), and pressing the menu bar refresh, this wasn’t executed.

It occurred the same if we called the refresh command from the menu bar event (defined in the menu bar or in the work panel).

If the refresh was done, from a button or from the Work Panel refresh event, it was taken into account.

The error has been corrected.

• IsValid event wasn’t triggered in Array type variables We had a work panel with 3 variables; each one was a Variable column of a Numeric(3) Array. In the event Isvalid of each variable a msg command was associated. These weren’t displayed, i.e., the Isvalid event in Array variables wasn’t triggered.

The error has been corrected.

• It cleans the fields after confirming the first level We had a two level transaction. The Confirm preference was with the "Confirm each action" value. When entering the header, a message appeared asking for confirmation. If you chose “NO”, it returned to the header, but it cleaned all the entered fields. This wasn’t correct, because if the user made a mistake only in one field, he had to enter all fields again.

The error has been corrected.

didn’t work with the "Esc Key Action" preference in "Exit level" We had a transaction.

OrdNum* CliId CliNam (ProId* ProDsc ProPrc PorQnt)

From a work panel we called the transaction in update mode. In the subfile (transaction level 2), and having NoAccept in the level 1 attributes, we pressed the Escape key. If the "Esc Key Action" preference value was "Exit Form" it worked correctly and exited the transaction. If the "Esc Key Action" preference value was "Exit Level", it was maintained in the second level and it didn’t work correctly.

The error has been corrected.

• It initialized values with noaccept variable in second level We have a two levels transaction In the second level there is a no-accept field and another that is foreign key. If we had the Confirm=Confirm Each Action preference, and after entering the line data we chose NO when the confirmation dialog appeared, the focus went first to the second level code and then it tried to go to the last field (this provoked a flash). The problem was that when exiting the code field, the line was initialized and when passing through the foreign key an integrity error occurred. The problem was that it should go directly to the last field and shouldn’t initialize the line.

The error has been corrected.

• Problem with Default rule We had the following three level transaction:

TRN1 A* A1 (B* B1 (C* C1 C2 C3))

We had also the following rules: serial(C ,B1 ,1 ) ; noaccept(C ) IF Insert ; default(C1,9); default(C2,5);

In the transaction the header was entered, then the second level and after it passed to the subfile. When passing to the subfile the focus remained in the C1 attribute, because C had noaccept. When writing something in C1 the C2 field default rule was triggered, and when pressing tab to go to the next attribute the default rule on C1 was triggered. This behavior was only in the first line. When we entered another line it worked in the following way: it triggered the default rule on C2 when writing something in C1, but when pressing tab in C1 the default rule wasn’t triggered on it, but the entered value remained.

The error has been corrected.

• Bad outline indentation. Sometimes this error occurred when executing the developer menu.prg. It occurred in the following line:

THISFORM.MenuOutline.Indent((THISFORM.MenuOutline.listcount-1))=lnIndex

It is in the gx_vmenu.prg file

The error has been corrected.

Note: To solve the problem we must delete the following files in the data directory: *.gfo *.gfm *.dbm *.cdm

Where * is the model number.

• It did not show bitmap type variable. You had in a form a bitmap type variable placed on a rectangle that was filled with a certain color. Although at the time when the form was designed the bitmap type variable was seen on the rectangle, at execution time the bitmap was not seen, because the rectangle was on the variable.

The error was corrected.

• Cursor Function was not updated after set focus You have a Work Panel with two variables that are entered: &ini and &end. If &ini’s value was not correct, a set focus was performed to the same field.

Event &Ini.IsValid // Valid .. if (&Ini = 0) msg('Ini Invalid. Enter it again') &Ini.setfocus() endif Endevent

Apart from that, an event was defined for selecting &ini or &end’s values.

Event 'Select' 4 if cursor(&Ini) call(WSelect, &Ini) else if cursor(&End) call(WSelect, &End) endif endif EndEvent

If a mistaken value of ini (0) was entered and the Isvalid (Tab was given) was executed, when pressing F4 and selecting a value, this one was stored in the &end variable. This is to say, it was calling end’s selection list, because the cursor(end) function was returning true. This was not correct because a setfocus was performed to &ini and the focus was effectively in &ini. The error was corrected.

• The function keys are disabled. You had a WP that counted on some events that had function keys associated. In the start event of the WP there was a setfocus() to some field of the form. In the WP the function keys did not work until some other field got the focus. The error was corrected.

• The Refresh Timeout property did not work correctly. You had a WP in which the Refresh Timeout property was used with a period of 5 seconds and with the “Triggers” value in "Only when the objects has the focus". The problem appeared when from this WP another object was called with No Modal dialogue. In this case, the caller WP continued executing the Refresh although it did not have the focus. If it was called with modal dialogue it worked correctly.

The error was corrected.

Patch #1

• New option in Report Viewer: save report with format RTF A new functionality was added with the Rbuilder.dll included in this patch: to save a report in RTF format (Rich Text Format). This new functionality is in a beta version, with some known (temporary) limitations: colors are not taken into account in text control and lines, the size of some fonts is modified, the bitmaps are stored with the original size even when it is changed in the design.

NOTE: The only possibility is to save in RTF format. The opening of files in RTF format with the Report Viewer is not supported.

• Data type returned by the functions EOM, ADDMTH and ADDYR From this Patch and Patch 2 of the Development Environment GeneXus 6 evolution 1, the functions EOM, ADDMTH and ADDYR return the same data type as the first parameter received. That is, if the first parameter received is DATE they return DATE, if it is DATETIME they return DATETIME. The valid operations will be the ones corresponding to each of the before mentioned types.

Some examples of valid operations are:

Days = Eom(DateExp1 ) - DateExp2 ==> Days = Date - Date

IF addyr(DateExp1, NumExp ) >= DateExp2 ==> IF Date >= Date

IF addmth(DateTimeExp1, NumExp ) >= DateTimeExp1 ==> IF DateTime >= DateTime

The following operations, however, will not be valid:

Days = eom(DateTimeExp1 ) - DateTimeExp1 ==> Days = DateTime - DateTime ==> Use TDIFF()

IF addyr(DateTimeExp1 , NumExp ) >= DateExp1 ==> IF DateTime >= Date ==> Assign DateTimeExp1 to a Date type variable or DateExp1 to a DateTime variable

IF addmth( DateExp1 , NumExp ) >= DateTimeExp2 ==> IF Date >= DateTime ==> Assign DateTimeExp2 to a Date type variable or DateExp1 to a DateTime variable.

NOTE: All the functions in the VFP generators (stand-alone and C/S) already fulfilled this new specification, except the function EOM. The function EOM was adapted to fulfil this specification.

• Functions ServerDate, ServerTime and ServerNow in GX 6.1 Functions ServerDate, ServerTime and ServerNow that allow obtaining the database server's date and time in C/S environments have been implemented.

To be able to execute these functions you must have patch #1 of version 6 ev. 1 development environment.

The following explains each of these functions (this is also in the web site at the link: http://www.artech.com.uy/forum/tips/sedati.htm)

Server Date and Time

In the Client/Server applications it is common to need knowing the server date and/or time. This avoids having to synchronize all the client machines with that machine where DBMS is executed, and consequently the problems that this can generate in applications that depend on the date and time for their functioning.

Existent Functions

Currently, GeneXus has got the following functions that return the date and/or time from the machine were the application is executed (client):

Today() Time() Now() SysTime() SysDate()

The functions Today() and Time() respectively return the date and hour established for the job. This means that they remain invariable during the execution of the program(s) that participate in the JOB. They could be considered as functions that always return the "first" call value.

The functions Now(), SysDate() and SysTime() respectively return the DateTime, Date and Hour at the moment of being called. For this reason, the return values for repeated calls during the process execution may vary.

New Functions

The new functions are the following:

- ServerNow() It returns a DateTime data type which value corresponds to the server date and hour at the moment of making the call.

- ServerDate() It returns a Date data type which value corresponds to the server date at the moment of making the call.

- ServerTime() It returns a Char data type of 8 characters in HH:MM:SS format which value corresponds to the server hour at the moment of making the call.

Considerations

The server date and hour will be taken from the main DBMS specified in the GeneXus model.

These functions apply to all C/S generators (FoxPro for Windows C/S, Visual FoxPro C/S, Visual Basic C/S, C/SQL and Java), for the local generators (FoxPro, Visual FoxPro and Visual Basic) the following equivalencies must be used:

Function Equals to ServerNow() Now() ServerDate() SysDate() ServerTime() SysTime()

These functions call implies an access to the database. This access may be expensive in time,, for this reason it is recommended to use them with criterion.

Notes: • These functions aren’t available for DB2/400. • C/SQL and Java generators allow generating applications in more than one layer, that is, with a database server and one (or more) application servers. In this case functions ServerDate (), ServerTime () and ServerNow () return the information from the database server and functions Now () and Today () return the information from the application server.

• Error Code -302 in C/S application in AS/400 If conditions of the type Attribute = &var .or. null(&var) were used the following error occurred at execution:

'[IBM][ ODBC Controler of Client Access (32 bits)][DB2/400 SQL]SQL0302 - Conversion error on input host variable or parameter *N.'

This type of conditions started to be optimized so they could be solved by the DBMS. The problem is that in DB2/400 and DB2 Common Servers the mentioned error occurs, so a step backwards was taken and the optimization is not carried out anymore in these DBMS's.

Conclusion: att=&var .or. null(&var): It DOES go to the server EXCEPT in DB2/400 and DB2 Common Servers (so the error 302 does not occur) The error was corrected.

• DECLARE was not generated in call to an object generated in RPG There is a Client/Server model against DB2/400 and there is a MAIN procedure generated in RPG.

If this procedure received more than two parameters the DECLARE was not generated in the STUB.

If there are more than one parameter these lines are generated in Stub: LEVEL1 = .T. * Warning *** Could not generate declare for the following call. DO GX_CSC01

The error was corrected.

• Fist level of transaction was not stored if there was a bitmap variable. There is a two level transaction and a bitmap type variable is displayed on the form. In event Start this variable is loaded using function Loadbitmap(), the first level of the transaction was not stored. The error was corrected.

• Objects without transactional integrity were generated in C/S models. When there were objects that had been specified but not generated and a creation/reorganization was generated, those objects were generated without transactional integrity ignoring the value specified in the preference Transactional Integrity. The error was corrected.