Skip to content

Bugs Fixed in DataFlex 19.0

Runtime

Comparisons with Decimal datatype might result in an overflow error

Bug 7361, reported by Quality Assurance

If a comparison is performed on a Decimal datatype the comparison may raise an Operation Overflow error and return a wrong evaluation. For example:

Decimal gd1 gd2
Move -200 to gd1
Move 9999999999999999 to gd2
If (gd1 > gd2) Begin // this raises an error. bad
End

This will raise an overflow error for the evaluation. This is a byproduct of the comparison logic which subtracts these two numbers. This causes an overflow, which raises an error when it should not.

Note that an actual subtraction should raise an error:

Decimal gd1 gd2 gd3
Move -200 to gd1
Move 9999999999999999 to gd2
Move (gd1 - gd2) to gd3 // this raises an error. expected

In addition there are very rare cases where a Number datatype will return an improper result for comparison. This is also a side-effect of the internal subtraction but only happens when there is an overflow that is exactly 0.

Number gn1 gn2
Move -.001 to gn1
Move 99999999999999.999 to gn2
If (gn1 > gn2) Begin // will return true. bad
End

Both of these issues are very old as the number comparison logic for Number and Decimal have not been changed for years.


Setting a mask in windows framework that is longer than 255 characters results in memory overwrite

Bug 7347, reported by Vincent Oorsprong

Setting a mask in the windows framework (psMask or Form_Mask) that is longer than 255 characters causes a memory overwrite. It is not expected, or all that practical, to create a mask that long. Masks should not be longer than 255 characters and if they are they should be truncated at 255 characters.

Example:

Object oSalesPName is a cDbCJGridColumn
    Entry_Item SalesP.Name
    Set piWidth to 300
    Set psCaption to "Name"
    Set peDataType to Mask_Window
    Set psMask to (Repeat("*",300))
End_Object

Manual finding and changing the Found indicator inside OnConstrain may result in the find improperly failing

Bug 7284, reported by Quality Assurance

Manual finding and changing the Found indicator inside OnConstrain may result in the constrained find improperly failing.

The DD methods Read_By_Recnum, ReadByRowId and ReadByRowIdEx all exhibit the same behavior. If a constrained find is successful it should return True, otherwise false. In rare cases, it is possible for a constraint test to set the DataFlex Found indicator to False. If that happens the constrained find is considered a failure, even if the constraint test succeeded!

The primary way Found can be altered is to have a constrain-as that calls a custom function that finds a record in some other table. Finding records inside of a constraint function is a fragile technique.

The runtime now makes sure that Found is not improperly altered by a constraint test.

This is not new to 18.2; this has always worked this way.


SearchArray with an array of the Address type always returns 0

Bug 7283, reported by Jeroen Steehouder

When creating an array of type Address[] then SearchArray returns 0 even when searching for a value that is not in the array. The sample below demonstrates the issue where iIndex becomes 0 where it should be -1.

Procedure Example
    Address a1 a2
    Address[] aaVars
    Integer iIndex
    Integer iVar1 iVar2

    Move 0 to iVar1
    Move 0 to iVar2
    Move (AddressOf(iVar1)) to a1
    Move (AddressOf(iVar2)) to a2

    Move a1 to aaVars[0]
    Move (SearchArray(a2, aaVars)) to iIndex
    If (iIndex = -1) Send Info_Box "Correct!"
    Else Send Stop_Box "Wait... what... ?!"
End_Procedure

AppendArray parameter indexLast is ignored

Bug 7275, reported by Quality Assurance

The function AppendArray does not use the last parameter, called indexLast. Instead, it always appends the complete second array to the first array.

Code sample:

String[] ucResult ucFirst ucSecond
Move "a" to ucFirst[0]
Move "p" to ucFirst[1]
Move "p" to ucSecond[0]
Move "l" to ucSecond[1]
Move "e" to ucSecond[2]
Move (AppendArray(ucFirst, ucSecond, 0, 1)) to ucResult

This results in 5 elements in ucResult instead of 4.


Setting ComBold to true makes the color of the cell without focus be white

Bug 7111, reported by Ronaldo Nakamashi

In trying to color a bold font in a cDbCJGridColumn object, when pbSelectionEnable is True, the font on the selected row is white by default.

The problem is that cells configured to use a different color and bold will use the white font color when the cell doesn't have the focus.

To reproduce: - Drop the attached Order.vw in the Order sample workspace - Run the sample - Find an order - Click on 'Item ID' on the grid — notice the color of the Description column (in bold) will turn white


Random function combined with process pooling

Bug 6610, reported by Bob Cergol

When using the Random function on a web application that runs using process pooling the outcome doesn't seem to be very random. As the random generator is seeded with the time on startup of the webapp process there is a big chance that they will be seeded with the same value. This results in the Random function returning the same sequence of numbers for the different processes.

Example web-service function:

{ Published=True }
{ Description="" }
Function RandomNumber Integer iMax Returns Integer
    Function_Return (Random(iMax))
End_Function

If this function is called multiple times on a webapp with process pooling enabled and a minimum pool of 2 you may get the same number twice in a row. Sometimes the web application needs to be restarted to re-seed the processes.


Context for error 11 (field too large for field) is lost when this occurs inside of a transaction

Bug 5632, reported by Bob Cergol

When an error 11, "Field too large for field allocation", is encountered the error report is supposed to include the table/column where this occurs. Normally this happens such as:

Procedure Activating
    Forward Send Activating
    Move 9999999999 to customer.customer_number
End_Procedure

However when this occurs inside of a DD save (e.g. Save_main_file or Request_Entry_update) or within an explicit transaction, the context information is not displayed.

Example. Add a button to Order.vw with the following code:

Procedure OnClick
    // if within a transaction, api context is lost. Remove the transaction, it works
    Begin_Transaction
        Move 999999999 to Invt.On_Hand
    End_Transaction
End_Procedure

Database Explorer

Single record view mode can blow up (in height) the size of the controls

Bug 7353, reported by Quality Assurance

When store and reload of MRU data is turned on the single record view mode can create huge controls on the screen.

Test steps: 1. Turn on the option (and for testing the confirm question option so that you know the values are used!) 2. Open table in single record view mode 3. Close table (Get layout saved) 4. Open table again and see controls that are out of proportion.


Switching between grid and single record view mode does not display text column values

Bug 7352, reported by Arnold Franken

The contents of a text column are not shown when switching between grid line mode and single record view mode.


Exclude column from grid when length = 0

Bug 7349, reported by Quality Assurance

Exclude a table column from the data grid when its length is zero.

For example, SQL column types (such as SpatialLocation, a geography type, in the AdventureWorks sample database table Person.Address) return a length of 0 bytes. These should not be displayed in Database Explorer.


Invalid message DoCloseExploredTable

Bug 7348, reported by Quality Assurance

If you have a table open and choose "Close" from the floating menu in the filelist tree you can get an error 98 (invalid message) DoCloseExploredFile.


Wrong icon displayed when closing DBE while maximized

Bug 7334, reported by Quality Assurance

When maximizing DBE and then closing it, next time we open DBE, it will be large on the screen BUT not maximized — the system icon is set to "maximize" and we can go a tad bigger. DBE should have been opened maximized instead.

Note: when closing 18.2 DBE while maximized, it opens back up still maximized and the icon is correct. The wrong icon displaying is new to 19.0.


Database Explorer may be positioned on the wrong screen when using multiple monitors

Bug 7333, reported by Anders Ohrt

When starting Database Explorer, it is positioned on the wrong screen and mostly outside of the screen.

The Studio and Database Builder do not do this, so something is "special" about Database Explorer. It has been like this for several revisions.

Example setup: three monitors, with the central one being the "main" one. From left to right, Windows numbers them #2, #1, #3.

If DBE is not maximized, closing it and restarting restores its previous position. But, if DBE is maximized and then closed, on restart it may be positioned wrong. For example, maximizing DE on the main monitor (#1), closing and restarting may position DE non-maximized on monitor #3 with only the caption bar visible.


'Filter by Value' now uses the 'current value' of the column instead of the 'changed value' as in previous revisions

Bug 7330, reported by Anders Ohrt

When using the "Filter by Value" function in Database Explorer, the "current value" of the column is used, not the "changed value" as it was previously (in 18.2 and earlier).

Previously, you could enter a column, enter the value you wanted to search on, and select "Filter by Value" to filter. In 19.0, if you do the same it will search on the value that was in the column when you entered, not the new value you've entered.

Example: 1. Open the Order Entry workspace in Database Explorer 19.0. 2. Select the OrderDtl table. 3. Select the Order_Number column, first row. 4. The current cell will contain "101". 5. Enter "110" and press Alt-R + V.

The result is that your input is ignored, and all "101" rows are shown instead.


Open table via TABLE.INT does not work with Managed Connections

Bug 7328, reported by Hans van de Laar

Dragging and dropping several .INT files that contain a different connection ID than the current workspace on the interface causes issues. The connection IDs are read from either dfconnid.ini or .INT. Same can be done by pressing the open-as button or opening an .INT file via file extension association.

If you use the file association of .INT with Database Explorer and the INT file uses a connection ID while the data folder does not contain a .int file with a connection ID, you cannot open the table anymore.


Writings in dialogs may display too small when in high DPI

Bug 7326, reported by Andreas Berg

When the display's DPI is set high (e.g. 250%), the font in the "tip of the day" dialog can be too small to be readable — it doesn't scale like the rest of the screen.


Change Columnvalues init columnname does not work when field number is shown in the grid caption

Bug 7317, reported by Matthias Burkhardt

If the "Show Column numbers in label" is turned on the popup of "Change Column Values" does not initialize itself correctly.

Testing steps: 1. Turn on the show field numbers in label option 2. Open table in grid mode 3. Press Alt+M for Modify Column Value

Result: It does not default to the current column.


Collapsed table branch can show '-' sign

Bug 7095, reported by Andrew Kennard

  • Expand a table branch (e.g. Order Detail)
  • Expand its Parent branch
  • Click on one of the parent table names
  • Click on [+] at the table root branch again to collapse the tree

Result: You are left with a [-] in the tree next to the table name and will not be able to expand the tree branch again.


A maximized panel does not remember on which monitor it was maximized

Bug 7063, reported by Clive Richmond

DbExplorer doesn't remember which monitor it was last on. Example behavior: - If DbExplorer starts up on monitor 1 and you switch it to full screen, close and re-open then it remembers this. - If you move DbExplorer to monitor 2, switch to full screen, close and re-open then it does not. It is restored full screen but on monitor 1.


Installation

Button to Activate DataFlex Personal Edition does not work

Bug 7329, reported by Ronaldo Nakamashi

After installing 19.0 DataFlex Studio PE, the "Activate DataFlex Personal" dialog comes up but clicking on the "Get Activation Code" button does not do anything.


API

Attempting to delete a CLI, non-temporary index outside of a structure_begin/end block raises access violation

Bug 7318, reported by John Tuohy

In 19.0, the CLI drivers allow creating and deleting temporary indexes outside of the Structure_Begin / Structure_End block. You can only delete a temporary index outside of this block. If you attempt to delete a normal index, you get an access violation. You should get an error instead.

Example:

Open Customer
Delete_Index Customer.File_Number 1

Of course, this is a programming bug and you should not attempt this, but the error should not be an access violation.

Error occurs with CLI driver 6.2.0.40.


Packages

SQLStrAppend may fail when parameter replacement string contains wildcard characters with numbers

Bug 7341, reported by Quality Assurance

When you use SQLStrAppend while the source filter uses wildcard characters (% in SQL Server) combined with numbers (e.g. '%2013%') the append creates a bad result.

Example:

String sFilter1 sFilter2 sFilter

Move "Project.ProjectId like '%2013%'" to sFilter1
Move "Project.ProjecName like '%2013%'" to sFilter2
Get SQLStrAppend of oProject_DD sFilter1 sFilter2 to sFilter

Results in:

(Project.ProjectId like 'Project.ProjecName like '%2013%'013%') AND Project.ProjecName like '%2013%'

cMonthCalendar class: OnChangeDate should be OnChange

Bug 7340, reported by Quality Assurance

The OnChangeDate event in the cMonthCalendar class is misnamed. It should be OnChange.


pbLoginOnOpen has a wrong initial value

Bug 7335, reported by Emil Stojanov

The property pbLoginOnOpen is documented with a default of True and it is True, but the properties dialog shows False.


Copying and pasting from a ValidationTable-connected grid combo to another only copies the number of chars in the value

Bug 7319, reported by Mathew Davidian

Copying and pasting from a ValidationTable-connected grid combo to another only copies the number of chars in the value, instead of the description.

STEPS: 1. In the Order Entry sample workspace, add an ASCII 1 column named VTTest to OrderDtl 2. Add this VT to the DD:

Object VTTestVT is a DescriptionValidationTable
    Procedure Fill_List
        Forward Send Fill_List
        Send Add_Table_Value "A" "Hispanic Male"
        Send Add_Table_Value "B" "Hispanic Female"
        Send Add_Table_Value "C" "White Male"
    End_Procedure
End_Object
  1. Add this grid column to the grid in Order.vw:
Object oOrderDtl_VTTest is a cDbCJGridColumn
    Entry_Item OrderDtl.VTTest
    Set piWidth to 28
    Set psCaption to "VTTest"
    Set pbComboButton to True
End_Object
  1. Compile and run
  2. Try to copy a value (description) from the DescriptionValidationTable to another column.

Result: Only the first character is copied.


RemoveNamedNode causes memory leak

Bug 7311, reported by Woody Spencer

Sending the method RemoveNamedNode to a cXmlDomElement object or any object that is based on a class that uses cXmlDomNodeMixin will result in a memory leak. This leak does not occur with RemoveNamedNode in the cXMLDOMNamedNodeMap class.

This bug only impacts you if your code calls RemoveNamedNode.

TEST STEPS: 1. Replace XML-2.vw in the Specialized Components sample workspace with the attached sample view. 2. Open the Studio to the Specialized Components sample workspace 3. Compile and run XML-Sample.src 4. Open XML - Example 2 from the menu 5. Open Windows Task Manager to monitor memory usage 6. Repeatedly click on the 'Write Customer to XML file' button

Result: Watch the memory go up and not back down

This bug goes back to the earliest versions of XML support in DataFlex.


Using Set Field_Current_Value to pass a text/binary type doesn't work when Value is not a string datatype

Bug 7306, reported by Vincent Oorsprong

If you use Set Field_Current_Value or Set Field_Entry_Value to update an extended DD field value (df_text or df_binary) it will only work if the value passed (sValue) is a string. Passing something else, like a Variant, and expecting automatic type casting will not work.

Example:

Variant vVar
Move "Test" to vVar
Set Field_Current_Value of Customer_DD Field Customer.Comments to vVar

This will put undefined data into this DD field buffer.

This only happens if: 1. You call Set Field_Current_Value (Set Field_Entry_Value) with something other than a string (in the above example vVar is a variant) 2. The Table field value type you are setting is df_text or df_binary (in the above example Customer.Comments is df_text).

Normally you would not use Field_Current_Value for text/binary types, but it is supported and should work.


Using CJ grids with pbNeedPostEntering causes mouse navigation problems and errors

Bug 7286, reported by Doug Goldner

Setting pbNeedPostEntering to True in a cCJGrid's OnEntering event may raise errors or show strange behaviors when used with mouse navigation.

To duplicate: 1. Add to order.vw's cDbCJGrid object:

Procedure OnEntering
    Set pbNeedPostEntering to True
End_Procedure
  1. Find first order.
  2. Double click on the 3rd row's QTY column.

Depending on the version you may get a COM error or you may see the edit box on the wrong row (1st row) and the edited value (in the third row) having the wrong value (1st row value).

Mouse navigation to a different row/column when post-entering is enabled is limited. It should not navigate to a different row but stay where it was (this is a limitation of using the post-entering logic). Whenever possible avoid using post-entering and pbNeedPostEntering.


Bottom selection of Scrollbar menu on legacy Grid or dbGrid causes an error

Bug 7285, reported by Quality Assurance

If you right-click on the scrollbar on a legacy Grid or dbGrid, and choose the "Bottom" option, the app will generate an error. Stack trace:

SET_TOP_ITEM (16) - oGrid (51) - at address 22135
MSG_KEY (55) - oGrid (51) - in native code
MSG_KEY (55) - oGrid (51) - at address 1331
MSG_KEY (55) - oGrid (51) - at address 21738
MSG_SETVSCROLLBOX (1192) - oGrid (51) - in native code
MSG_SETVSCROLLBOX (1192) - oGrid (51) - at address 22041
MSG_CREATE_DIALOG (711) - oMain (49) - in native code
MSG_CREATE_DIALOG (711) - oMain (49) - at address 916
MSG_ACTIVATE (117) - oMain (49) - in native code
MSG_ACTIVATE (117) - oMain (49) - at address 1684
MSG_ACTIVATE (117) - oMain (49) - at address 15983
[start] - at address 73272

cDbCJGrid finds wrong records after prompt list cancellation

Bug 7254, reported by Raveen Ryan Sundram

Tested and found this exists in DF18.x and DF19.0.

STEPS: 1. Start/Run Win Order Entry 2. In the "Order Entry" view - press the prompt button for the "Order Number" field - Prompt list displays and should be highlighting order "101" 3. Press the CANCEL button - You should be back in the "Order Entry" view and cursor should be on the "Order Number" field 4. Click anywhere on the grid (e.g. Description field)

Result: Grid is refreshed with a blank row and part of the order number 101 lines.


IsFieldCommitted should be public

Bug 7225, reported by Peter Bragg

IsFieldCommitted is defined as Private in BaseData_Set.pkg and is not listed in CodeSense. However, it appears in documentation and slides suggesting it was intended to be public. This will be double-checked to ensure 19.0 is accurate.


cWebEdit allows data with bad characters to be saved

Bug 7212, reported by Quality Assurance

Invalid control characters saved in web applications may cause JSON parse errors on the client:

Unhandled Program Error on the client
Received Invalid JSON from the server.
Error: 999
JSON parse: bad character in string literal at line 1 column 2484 of the JSON data

Test Data (saved and displayed correctly in BugTracker's older pre-JSON WebApp framework):

Blab la
Test 1
Test 2

WinPrint2_api.pkg has an ending ; in an External_Function declaration

Bug 7146, reported by Allan Kim Eriksen

Example incorrect code:

External_Function WP_SetUserDefinedPapersize "SetUserDefinedPapersize" WinPrint.dll ; // sets the size of user-defined paper
    UInteger iPaperSize ; // hi-word=length; lo-word=width
    Returns Boolean; // True, if success; False if error occurred

The final ; after Returns Boolean is incorrect.


Wrong translation to Portuguese for the Month of May

Bug 7135, reported by Quality Assurance

In Portuguese, the short for the month of May (MAIO) is MAIO.


cCJGridColumnEdit.pkg and cCJGrid.pkg have method starting as procedure and ending as Function

Bug 7133, reported by Joao Mauricio Rinardo

Examples mixing Procedure and Function syntax:

cCJGridColumnEdit.pkg:

// Any navigation to custom edit is not treated as a focus event
// see counterpart in cCJGrid.pkg
{ NoDoc=True}
Procedure ObjectFocusChanged Handle hoFrom
    Function_Return
End_Function

cCJGrid.pkg:

// from custom edit to grid, is not treated as a focus event. By the time this is called, the edit is probably deactivated
// and phoCustomEdit is 0. We will assume that an inactive from object is a closed edit and do nothing.
// see edit control counterpart in cCJGridColumnEdit.pkg
{ NoDoc=True }
Procedure ObjectFocusChanged Handle hoFrom
    Boolean bCancel
    If (hoFrom>Desktop and hoFrom<>phoCustomEdit(Self) and Active_State(hoFrom)) Begin
        Forward Send ObjectFocusChanged hoFrom
    End

End_Function

These should consistently use Procedure/Function syntax.


cImageList32 doesn't pick the best icon size for the imagelist's requested height and width

Bug 6311, reported by Emil Stojanov

cImageList32 doesn't pick the best icon size for the imagelist's requested height and width. When an icon file is added via AddImage or AddIcon it should pick the closest image from the file and scale. Instead it uses the default large icon size and scales from there. AddIcon calls LoadImage() using LR_DEFAULTSIZE which looks for the large icon size and scales from there. It should be changed to pass height and width of the image list.


Help

Language Reference: Get_Licensed_Max_Users has incorrect description

Bug 7350, reported by Quality Assurance

The Help for Get_Licensed_Max_Users states that it will return the maximum number of concurrent users licensed for the current serial number. That is not true — client licenses with different serial numbers can be stacked and Get_Licensed_Max_Users will return the total number of users for all stacked client licenses.


Language Reference: IsAdministrator Function has wrong example

Bug 7338, reported by Ivan Kaupa

Help\LanguageReference.chm::IsAdministrator.htm contains an incorrect example.

Incorrect example:

// Is user running the program as an administrator?
Move (IsAdministrator()) to bIsAdmin

If bIsAdmin Begin

Since the function returns True if the program is running with administrative privileges, the conditional should be:

If (not (bIsAdmin)) Begin

Data Dictionary Modeler: keyboard shortcut to move between columns, but stay on same property, has disappeared

Bug 7313, reported by Mathew Davidian

In previous versions Ctrl+PgUp and Ctrl+PgDn could be used to go up/down the column list while staying on the same property. In 19.0 this behavior changed and now duplicates Ctrl+Home / Ctrl+End. This feature is documented on the "Data Dictionary Column Properties" help page. Note: this was a doc mismatch — the hot key was changed to Ctrl+U and Ctrl+D.


Documentation should state that AddressOf function should not be evaluated by Eval()

Bug 6593, reported by Samuel Pizarro

The Eval() function should document that not all functions can/should be evaluated using Eval(). In particular, functions that are passed or return memory pointers (address type) should not be used within an Eval(). For example, AddressOf() should not be used inside of an Eval() expression.

Documentation should be updated to reflect this guidance.


Studio Wizards

SQL Connection Manager: Unhandled error when right-clicking on caption row

Bug 7272, reported by Clive Richmond

Right-clicking on the caption row produces an Unhandled Studio Error:

C:\DataFlex 19.0\Bin\Studio.exe
Context menu not attached to commandbars

Error: 4402

Please report this error to Data Access Corporation

Stack trace:

MSG_POPUP (290) - oObject (1954) - at address 58018
MSG_ONHEADERRIGHTCLICK (11076) - oConnectionsGrid (1921) - at address 73060
...
[start] - at address 248634

WSDL import wizard creates 'Construct_object' instead of 'Construct_Object'

Bug 5224, reported by Quality Assurance

WSDL import wizard creates Construct_object instead of Construct_Object. Note the casing.


Studio

Studio issues with alias tables when using SQL drivers. Adding an alias or refreshing an alias raises errors

Bug 7362, reported by Quality Assurance

When working with SQL drivers: 1. Adding a new Alias table to the Studio will output an error to the Studio's Outpanel. The operation is actually fine. 2. Refreshing the Alias table from the Studio will raise an error and the Refresh will not occur.

This is new to 19.0 and a side-effect of the more comprehensive refresh logic.

Note: Refreshing the main (non-alias) table also refreshes all alias tables. Refreshing the alias table directly is allowed, but may be of limited value.


Is$WebApp conditional is not being automatically maintained when opening a Windows Project

Bug 7337, reported by Quality Assurance

Is$WebApp conditional for projects is not being added to Windows projects automatically.

To reproduce: 1. Open a workspace with a single Windows Project (e.g. Order Entry). 2. Tools → Configure Workspace → Conditionals. 3. If Is$WebApp is present then remove it, save, restart the Studio and open the workspace. 4. Is$WebApp is not present — it should be added automatically when opening a project.


Start Center News Feed shows pointer cursor shape on non-clickable text

Bug 7312, reported by Quality Assurance

Start Center item description shows a "hand" pointer suggesting it's a link, but it's not clickable.


If you open the Studio with the Code Editor open, it is inactive until you click in another pane

Bug 7261, reported by Quality Assurance

Steps: 1. Open the Studio to any workspace 2. Open one view in the Code Editor 3. Close the Studio 4. Open the Studio and reopen the workspace (ensure Studio is not configured to auto-reopen the workspace) 5. Code Editor is inactive until you click another pane and back


The save icon is not responding to source code changes until the Studio has initialised the designer

Bug 7244, reported by Ian Smith

  1. Start Studio and open a workspace
  2. Ensure a source file is open in code mode and selected
  3. Restart Studio and reload the workspace
  4. Make code changes — the Save icon does not become active
  5. Toggle in/out of designer mode or switch to a designer tab and the Save icon will start responding

In the Studio cDbCJGrids and cWebGrids, Field_Label_Long is not used when Field_Label_Short is blank

Bug 7240, reported by Raveen Ryan Sundram

When adding DEO labels via the DDO Modeler drag & drop, the Studio should use Long labels for form DEOs and Short labels for Grid Column DEOs. If Short Label is blank, the Long Label should be used. With cDbCJGrid and cWebList/Grid columns, the Long label is never used — the column name is used instead.

How to test: 1. Set only the Long Label for a field; ensure Short Label is blank. 2. Insert a cDbCJGrid in a view. 3. Using the DDO Explorer, drag the field to the grid. Result: Column name is created using Field_Label_Short (blank) and falls back to the column name without considering Field_Label_Long.


Code generated by WebServiceClassGenerator does not compile

Bug 7220, reported by Hans van de Laar

Creating a client webservice class with "Support Simple Type with null member" selected creates code that will not compile. The fix: added DefineQualSimpleNullableParameter.


Dashboard text overrun

Bug 7164, reported by Quality Assurance

When long strings are displayed on the dashboard (e.g. connection string), the text may run beyond the designated area.


Crash when selecting a table in the Data Dictionary Modeler's Structures Tab

Bug 7159, reported by Vincent Oorsprong

Steps: 1. Open the DD Modeler 2. Use the suggestion list to select a table in any of the DD's Required Parent, Required Child or External Table list 3. Use the mouse to click and select a table from the suggestion list

Result: Crash


Web Server

Wasadmin automatically completes a manually entered name to an existing name while you probably don't want to

Bug 7231, reported by Quality Assurance

When registering a new web application using the Web Application Administrator it autocompletes the virtual directory name if the one entered is a part of a full name. So if you already have WebOrder_19 it may not allow you to create a share called WebOrder.

To reproduce: - Ensure a share WebOrder_19 or WebOrder_18_2 exists - Open Web Application Administrator → Configure New Web Application - Select a WebApp.exe - On the 'Please select a web server share...' step enter WebOrder as the virtual directory name - Press Next then Previous — the virtual directory name may have changed

This problem has existed for a long time.


Web Application Administrator shows negative values for messages

Bug 7172, reported by Evertjan Dondergoor

Long-running web applications with lots of traffic sometimes show negative values for 'Client Messages' and 'Server Messages'.


WebApp Framework

Error 4402 on back navigation using breadcrumb

Bug 7363, reported by Jacques Delannay

When navigating back using the breadcrumb it sometimes gives error 4402: Object .. is out of scope for WebGet ...

To reproduce: 1. Use Google Chrome (62.0.3202.94) 2. Open the WebOrderMobile sample 3. Login (must login if not already) 4. Open the customer select from the dashboard 5. Open the customer zoom by clicking the (i) button 6. Click on 'Select customer' in the breadcrumb

Result: Error 4402 occurs.

Note: This turned out to be a bug in the Chrome password manager that invalidly triggers focus events on the password field. It doesn't happen in Incognito mode. See: https://bugs.chromium.org/p/chromium/issues/detail?id=780834


Large amounts of server property data are not always stored properly

Bug 7358, reported by Quality Assurance

With a large amount of server properties or with big values, the server property system can fail due to calculation bugs in the pagination system. The properties are serialized to JSON and if they don't fit in a single record they spread across multiple records improperly.


cWebAccordionContainer: Controls inside accordion cards can sometimes still get the focus

Bug 7357, reported by Quality Assurance

When nesting an accordion container inside a tab container then controls on an expanded card can still receive focus when on another tab. This can cause the controls to display and scramble the screen contents.

To reproduce: - Place the attached Order.wo in WebOrder - Run WebOrder and follow displayed instructions Result: Contents of tab pages may disappear or move position or move to another tab.


cWebList: Search on manual list fails when ordering is reversed

Bug 7346, reported by Hans van de Laar

The built-in search function of the list fails when the list is sorted in reversed order. This only happens when the search is performed on the client (peDbGridType=gtAllData / gtManual or pbDataAware=False).

To reproduce: - Add the attached view to WebOrderMobile - Sort on the first column, reverse sorting, type "elev" and press Enter Result: It should jump to "Eleven West" but it doesn't.

Note: This is new in 19.0.


cWebForm: Error on WebSet of psMask before the control is rendered

Bug 7342, reported by Raveen Ryan Sundram

Performing a WebSet of psMask (cWebBaseDEO) before the view containing the form is rendered causes a JavaScript error which prevents the view from rendering completely.

To reproduce: - Open WebOrder, Customer.wo view - Under oWebTabContainer | oAddress_page, find oCustomerPhone_Number - Place this code in the oCustomerPhone_Number object:

Procedure Refresh Integer eMode
    String sMask
    Forward Send Refresh eMode
    If (not(AppSynching(Self))) Begin
        If (Customer.Phone_Number > "") Move "(###) ###-####" to sMask
        WebSet psMask to sMask
    End
End_Procedure
  • Run in Chrome and open Developer Tools
  • Select View | Customer Maintenance — watch for errors like:
    Uncaught TypeError: Cannot read property '_oDfDomH' of null
        at Object.removeDomListener
    

WebList: JavaScript error when double clicking header

Bug 7336, reported by Quality Assurance

Double-clicking on the list header causes a JavaScript error: this.oC.headDblClick is not a function.

To reproduce: - Open WebOrder and run in Chrome - Select Demo | Grids and Lists | Constrained Grid - Double-click a column header (e.g. Address) Result: Error like:

Uncaught TypeError: this.oC.headDblClick is not a function
    at WebListHeaderView.onHeadDblClick


WebSetResponsive on pbFillHeight of cWebTabContainer causes script error

Bug 7331, reported by Hans van de Laar

Using WebSetResponsive on pbFillHeight of the cWebTabContainer, setting it to False on rmTablet causes a JavaScript error when the view is rendered.

Example:

Object oWebTabContainer is a cWebTabContainer
    Set pbFillHeight to True
    WebSetResponsive pbFillHeight rmTablet to False
End_Object

To reproduce: - Add the example to DemoSlider.wo (WebOrder) - Run in Chrome, toggle device to iPad, view Demo | Controls | Slider Result: Error like:

Uncaught TypeError: Cannot read property 'appendChild' of null
    at WebTabContainer.renderAllCards
    at WebTabContainer.set_pbFillHeight


Clicking the X of a modal dialog in the designer actually closes it

Bug 7304, reported by Sture Andersen

The designer does not properly disable the close button of a modal dialog so it can be closed in the designer, leaving the designer in an unusable state.

To reproduce: - Open a modal panel such as SalesPWebLookup.wo in Designer view - Click the X in the captionbar of the panel inside Designer view Result: The panel disappears from the designer


Forward keyboard navigation to cWebGrid with first column disabled fails

Bug 7250, reported by Bob Cergol

STEPS: 1. Open Order.wo in WebOrder 2. Comment out last 3 DEOs in header 3. Set first order grid column (oInvtItem_ID) to pbEnabled=False 4. Compile and run 5. Find an order 6. Press Tab to move to Order Date and again to move to the grid

Result: Navigation does not move to the grid the first time. After clicking the grid with the mouse it works subsequently.

Note: Behavior improved by considering enabled state when determining the initial column.


cWebTimer doesn't start outside views

Bug 7241, reported by Quality Assurance

cWebTimer does not start automatically when used outside of views even if pbAutoStart is set to True.


cWebList / cWebGrid: JavaScript error on WebSet pbEnabled before initialization

Bug 7230, reported by Quality Assurance

Doing a WebSet of pbEnabled on a cWebList/cWebGrid during OnLoad or a DDO event can result in:

df-min.js:1005 Uncaught TypeError: Cannot set property 'tabIndex' of undefined
    at WebGrid.applyEnabled

This happens if the control is not yet rendered. To reproduce, add the attached view to WebOrder and open TestGridWebsetOnLoad.


Mobile Zoom Wizard generates 'Clear/Add' caption on button which should say 'Cancel Changes'

Bug 7222, reported by Quality Assurance

Mobile Zoom Wizard generates an action group menu item with the caption "Clear/Add" while it performs a RefreshRecord. It should be "Cancel Changes" as in WebOrderMobile.


OnCloseModalDialog not called

Bug 7218, reported by Quality Assurance

OnCloseModalDialog sometimes doesn't fire when opening a modal dialog. This happens when the modal queue contains a modal dialog (e.g. locking dialog or ShowYesNo) while the dialog is shown — psInvokingView was set wrong. Fixed by adjusting invocation handling.


DD Debug - Node IDs must be unique error

Bug 7197, reported by Hans van de Laar

Running web version of DD Debug on a view with diamond relations shows 'Node IDs must be unique'. This was due to a recursive issue where the same DD was added to the treeview multiple times.

To reproduce: add the attached view to WebOrder, include WebDD_Debug.wo in WebApp.src, run, select DoubleGridTest, press Ctrl+D.


cWebGrid: Row navigation issues inserting new rows in a manual grid

Bug 7194, reported by Marco Kuipers

In a cWebGrid with pbDataAware=False, pbOfflineEditing=False, and OnSaveRow not altering the rowid, tabbing after entering data may move the cursor to the first column of the same row instead of the next row.

To reproduce: add the attached view TestOfflineGridIssue to WebOrder and follow the steps.


cWebSlider doesn't trigger OnChange when pbRange is true

Bug 7178, reported by Leif Angestam

If pbRange is True then OnChange does not fire regardless of pbServerOnChange.

Example:

Object oWebSliderToFrom is a cWebSlider
    Set piColumnSpan to 5
    Set piColumnIndex to 1
    Set piLabelOffset to 50

    Set piMinValue to 1
    Set piMaxValue to 24
    Set pbRanged to True
    Set piFrom to 8
    Set piTo to 17
    Set pbShowValue to True
    Set pbServerOnChange to True

    Procedure OnChange String sNewValue String sOldValue
        Forward Send OnChange sNewValue sOldValue
        String sFrom sTo
        WebGet piFrom to sFrom
        WebGet piTo to sTo

        Send ShowInfoBox (SFormat("From: %1 To: %2", sFrom, sTo))
    End_Procedure
End_Object

OnChange should fire for ranged sliders when appropriate.


showInfoBalloon / showControlError: After the balloon is hidden it still blocks clicks on controls behind itself

Bug 7176, reported by Quality Assurance

After an info or error balloon is hidden it may still block clicks on background controls. The destroy logic was adjusted.


File Upload: psAccept doesn't accept files with extra '.' in the name

Bug 7175, reported by Adriano Rodrigues

Setting psAccept to a file extension (e.g. .xml) didn't accept files with multiple . characters in their names (e.g. abc.123.xml). The accept logic was fixed to parse extensions properly.


cWebActionMenu: Adding menu items directly doesn't work as advertised in the DOC

Bug 7174, reported by Quality Assurance

Adding items directly to a cWebActionMenu doesn't display immediately — items only appear after switching to a view that has a cWebMenuGroup. To reproduce, add menu items in WebOrderMobile's oMainActions.


cWebList: Search on numeric column in a list with peDbGridType set to gtAllData doesn't work properly

Bug 7170, reported by Quality Assurance

Searching a numeric column in a non-data-aware WebList (peDbGridType = gtAllData) causes a JavaScript error and no search. To reproduce: open inventory prompt list in WebOrder, change sorting to 'On hand' and type a number.


cWebMenuButton: OnCloseModalDialog is not published

Bug 7167, reported by Raveen Ryan Sundram

Opening a dialog from a web menu button and closing produces: This web method 'OnCloseModalDialog' is not published by the target Object 'oButton'. This was caused by a missing Forward Send End_Construct_Object. Also affected OnFocus and OnBlur.


cWebCombo: WebSet of psValue doesn't always work from OnNavigateForward

Bug 7166, reported by Hans van de Laar

Refilling a combo in NavigateForward while it was filled during view load with other values causes psValue to not always be respected. If initial items do not include the specific value, psValue may be ignored.


Error balloon causes view NavigateForward to fail first time after cancel

Bug 7163, reported by Thomas Murphy

If a validation error displays an error balloon and the view is closed using cancel, the next NavigateForward to the view may fail the first time. This was due to a JavaScript error in the destroy function of the InfoBalloon executed during navigation.

To reproduce: add the attached main and child views to WebOrder, trigger validation error, cancel, then try to navigate forward again.


WebSetResponsive rules not applied on default view after NavigateBegin

Bug 7143, reported by Harm Wibier

Doing a NavigateBegin on the default view doesn't apply WebSetResponsive rules. Reproduce by adding a button that sends NavigateBegin to the dashboard; on mobile emulation the dashboard may render as desktop.

Example:

Object oWebButton1 is a cWebButton
    Set piColumnSpan to 0
    Set psCaption to "Home"

    Procedure OnClick
        Send NavigateBegin of oDashboard Self False
    End_Procedure
End_Object

Unhandled error 999 on cWebSliders

Bug 7141, reported by Raveen Ryan Sundram

An unhandled error 999 can occur on cWebSlider under certain interactions. Example reproduction provided in WebOrderMobile sample.


cWebGroup: Nested groups invalidly display their caption element

Bug 7136, reported by Peter Bragg

Nesting a group with pbShowCaption=False inside a group with pbShowCaption=True still shows the inner caption element, causing rendering issues. Fixed CSS/DOM behavior.


Responsive scaling issue on iPhone when switching to landscape mode

Bug 7134, reported by Dave Robinson

Dashboard tiles on iPhone 6 become very wide when switching to landscape and stay that way. This happens when the app is added to the iPhone home screen.


cWebList: Multi line header on Internet Explorer with pbFillHeight can have rendering issues

Bug 7131, reported by Quality Assurance

A list with multiple header lines (pbNewLine) combined with pbFillHeight=True sometimes shows rendering issues in Internet Explorer 11. Repro sample provided.


cWebForm: Attempt to run uncompiled expression error with numeric fields on mobile

Bug 7117, reported by Ronaldo Nakamashi

Using cWebForm on mobile devices with peDataType=typeNumber can cause 'Attempt to run uncompiled expression...' errors when the value is empty and the field has focus when a server call is made. pbHTML5NumberOnMobile must be True. Repro includes two forms and tabbing interactions.


pbNewLine combined with cWebGrid

Bug 7114, reported by Roel Westhoff

Setting pbNewLine=True on columns within a cWebGrid causes the columns on the next line to become unselectable using the mouse. Example: set pbNewLine of oInvtUnit_Price in Order.wo.


WebTreeView may not show correct collapse/expand symbol for root item

Bug 7113, reported by Quality Assurance

A tree with only a single item at root level doesn't properly render the collapse/expand arrow (or plus/minus) for themes other than Df_Windows_Like. Repro sample provided. Note: CSS class for this special case wasn't included when converting to font-icons.


cWebGrid: Clicking an empty row while on the new row doesn't save and create a new row

Bug 7107, reported by Quality Assurance

When creating a new row, clicking empty rows below the grid should trigger a save and create another new row. It did in 18.0 but not in 18.2/19.0. Reproduce via Order view.


cWebGroup: Truncates with pbFillHeight and content large enough

Bug 7106, reported by Raveen Ryan Sundram

Using cWebGroup combined with pbFillHeight and content that fills the entire group causes clipping. Example provided for WebOrderMobile.


cWebGrid: Recursive clear with two grids on one DD

Bug 7104, reported by Quality Assurance

If two grids are attached to the same child DD, clearing the parent or selecting a parent with no children can cause an endless loop of finds and flickering UI. This was due to recursive server calls where grids change current row to 'new' and trigger clears.


cWebColumnButton objects do not include space between them

Bug 7103, reported by Quality Assurance

Multiple cWebColumnButton buttons display without spacing and appear as one band of color. Add whitespace between buttons to differentiate.

Example column:

Object oCustomerButtons is a cWebColumnButton
    Set pbDynamic to True
    Set psCaption to "Buttons"
    Set piWidth to 80
    Set pbFixedWidth to True
    Set psCSSClass to "RowDetail"
    Procedure OnDefineButtons
        // Use AddButton to define a button (sID, sCaption, sCSSClass)
        Send AddButton "E" "AllEt" ""
        Send AddButton "X" "AllX" ""
        Send AddButton "G" "AllG" ""
    End_Procedure
End_Object

cWebTreeView: OnSelect triggers too often

Bug 7087, reported by Quality Assurance

Clicking an already selected item in the TreeView sometimes triggers OnSelect. OnSelect should only trigger when the selected item changes.


Mobile Zoom wizard generates classname that doesn't exist

Bug 6964, reported by Thomas Murphy

Mobile Zoom wizard generates a cancel menu item using a CSS class WebRefreshMenuItem that didn't exist. It now generates WebIcon_Refresh (added in 19.0).

Example generated code previously:

Object oCancelChangesBtn is a cWebMenuItem
    Set psCSSClass to "WebRefreshMenuItem"
    Set psCaption to "Clear/Add"
    Set peActionDisplay to adMenu
    Procedure OnClick
        Send RefreshRecord
    End_Procedure
End_Object

Character 007 causes Invalid JSON

Bug 6948, reported by Quality Assurance

If a database field contains invalid control characters (e.g. ASCII 7) and the record is displayed in a Web Framework application, it shows:

JSON.parse: bad control character in string literal at line 1 column ...

Example:

{ Published=True }
Function TestString Returns String
    Function_Return ('"abc"' + Character(7) + "--")
End_Function

Add this function to a web-service and call it using JSON to reproduce. Control characters must be encoded when returned from the server.


OnSetCalculatedValue may stop cWebList data loading

Bug 6837, reported by Joao Mauricio Rinardo

If your code sets the FOUND indicator inside OnSetCalculatedValue the list will stop loading data.

To reproduce: - Add the attached view to WebOrder - Run WebOrder → ScrollTest - Scroll to the bottom of the grid — it will stop at Number 80 instead of 100 when Found changes to 0.


cWebList: If you search for a date starting to type on the client, it displays the current date

Bug 6835, reported by Frank Valcarcel

When typing a date in a web lookup list, the search popup shows and the date is already filled in, so typed input is ignored until you select or delete the existing date. Sample view attached to WebOrder.


Current row of grid on webview goes off viewable area

Bug 6830, reported by Anders Ohrt

A cWebList can position rows off screen during keyboard navigation. Example and steps provided. Resizing the browser corrects the issue. Repro steps included.


Icon indicating sorting order in WebGrids and WebLists show the inverse order

Bug 6799, reported by Joao Mauricio Rinardo

The icon indicating a column's sort order shows the inverse order (ascending icon shown when list is descending and vice versa). Examples attached.