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: Column 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 null(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 foreign key. 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 table 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
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 referential integrity 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
• 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
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 -
• 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 view 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 cursor 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