PDA

View Full Version : Compatibility Feedback



Stephen W. Meeley
5-Jan-2017, 05:02 PM
To all,

As usual, one of the areas we'd like to hear about as early as possible in the Alpha / Beta phase are any possible compatibility issues - our goal is always to allow existing application to be brought forward with as little change as possible (and hopefully none).

So, before you settle in to start experimenting with all the nifty new toys, we'd appreciate it if you could take as many of your existing applications as possible, migrate them to 19.0 and give them a quick once-over and respond to this thread with your observations.

We don't expect any incompatibilities, but it's always better to hear positive results.

Thanks in advance for your input,

Your Development Team

Chris Spencer
5-Jan-2017, 07:27 PM
Hi Stephen

Converted my main clients windows application and all seems ok

This is an MSSQL backend.

Will need more thorough testing just to be sure all is ok

Will then try a few in house apps and see how they go.

Then move on to webapps.

Michael Mullan
6-Jan-2017, 05:25 AM
Looks good.

Perfectly copied my existing Studio Config. (Layout, tools Menu, preferences ) Good Job!

I see Codejock Changes in here, what's the underlying revision of CJ used in the Studio?

1. The shortcut it installs in Windows 10 Start menu thing is titled "Dataflex 2016 - 19.0"
this is also is the Title of the studio.

2. The Appsrc path in my "big" workspace is "AppSrcPath=.\AppSrc;.\ads_pkg;.\vdfquery;.\Embedde dSQL;.\AppSrc\GlobalSubClasses;.\AppSrc\Config;.\A ppSrc\SubClasses;C:\Program Files (x86)\Mertech Data Systems\DB Drivers\DataFlex\lib;"
The Migration Utility REALLY does not like multiple paths in "appsrcpath="

I removed everything after the first ";' in the path and it was happy.

I didn't (yet) go through all the workspace libraries, because work. Will do soon.

I think the primary driver for this client to migrate will be the coolio "tab" interface. I think they will like that. Mind you, I have other clients who want MDI but where Views can be pulled outside the bounds of the parent window. (Like the properties panel in the studio, can someone write a blog on how to do that please?)

Stephen W. Meeley
6-Jan-2017, 05:46 AM
Michael,

Thanks for the feedback.

The Studio currently used the 17.1.0 CJ MFC version - it will be brought up to sync with the rest of the system (currently 17.2.0).

1. The 2016 references will be fixed for Alpha 2.

2. Not sure about the AppSrc path report (certainly not new behavior). Expected usage would be a combination of use statements with paths (for subfolders of AppSrc and libraries (where the AppSrcPath gets constructed). While we may be able to look into this type of use in the future I would not expect this to change for 19.0.

I wonder if the CJSig libraries support the floating panels you are looking to do?

Stephen W. Meeley
6-Jan-2017, 06:18 AM
Thanks for the feedback Chris. For the MSSQL app - a couple of questions.

What was the prior host revision? Were the existing connection strings in the table.int files or using connection ids? If connection ids, how were those stored? It's actually important for us to know that in our major overhaul for managed connections we didn't "break" anything for existing applications using SQL drivers. We don't think we did, but feedback is really good in the connectivity areas.

Are you planning to use Managed Connections there (eventually)?

DaveR
6-Jan-2017, 09:05 AM
Seemingly migrated all sources from 18.2 without issue, and compiled 407 SDI exes successfully. Same number of err files. Haven't done any testing yet. Flat icons in the Studio look amazing.

Stephen W. Meeley
6-Jan-2017, 09:16 AM
Dave,

I assume that by "same number of err files" you mean the same you got when compiling under 18.2, yes? :rolleyes:

DaveR
6-Jan-2017, 09:20 AM
Dave,

I assume that by "same number of err files" you mean the same you got when compiling under 18.2, yes? :rolleyes:

Yeah. I've a few codefragments that I keep around until I get back to them.

Incidentally, latest CJ is 17.3 (since october 2016) - would mixing that with 17.2 impact things? Looking at the 17.3 release notes it seems mostly bug fixes.

IJmert
6-Jan-2017, 09:28 AM
Oh Yeah.

Our main application including all libraries does compile and run. No problems detected so far. Except for some bitmaps/icons that don't exist anymore, but that was fixed very easy.
Very old skin files don't work anymore, but the skinfiles from DF19 do work.

So far, so good.

Stephen W. Meeley
6-Jan-2017, 09:46 AM
Thanks for the feedback.

We figured that anyone using older bitmaps or icons can bring them along from the older DF area (rather than carrying them around in the main product for the next 20 years :cool:).

Were the old .cjstyles files a problem just because they were already in your workspace and needed to be replaced with the new set from Lib or are there skins that no longer exist at all? This is something we could report on during migration (perhaps not solve, but at least mention if .msstyles or .cjstyles are detected in Programs).

DaveR
6-Jan-2017, 10:54 AM
...

Were the old .cjstyles files a problem just because they were already in your workspace and needed to be replaced with the new set from Lib or are there skins that no longer exist at all? This is something we could report on during migration (perhaps not solve, but at least mention if .msstyles or .cjstyles are detected in Programs).

interesting. I can copy the cjstyles from the lib folder to programs folder on the workspace and select the one I want to use, but in the same program running from production programs folder they aren't 'seen'.

Stephen W. Meeley
6-Jan-2017, 11:51 AM
Dave,

Not sure what your application is doing - but I just tried the following test. I compile the Skinning sample and then exited the Studio and ran the .exe. While doing so I subtracted (or added) the various .cjsytles file and refreshed the skin selector and they came and went as expected.

Chris Spencer
6-Jan-2017, 04:17 PM
Stephen

I used a custom written connection class (have done since connection Ids were introduced)

I used connection ids in the INT files.

I extended the config.ws to hold the connections and my connection class parsed this to deleted and recreate connections

It allowed the one app to have a popup at start that allowed user to select which database to work with.

This still is valid and works as tested in the app in question

Once I have investigated the implementation if it is a minor change to my callses I will probably switch

But nothing got broken which is always a plus

Stephen W. Meeley
6-Jan-2017, 04:22 PM
Chris,

The "nothing got broken" is the news we wanted to hear (first, anyway).

Thanks!

phvwijk
6-Jan-2017, 07:40 PM
As usual, one of the areas we'd like to hear about as early as possible in the Alpha / Beta phase are any possible compatibility issues

Converted all Libraries, Converted the big application.

two problems.

The bmp files reported in an other Post.
The compiler error I got in 18.2, same fix works.

It is all up and running.

Peter

Clive Richmond
7-Jan-2017, 11:01 PM
Hi Stephen,

I moved the entire application suite up yesterday (about a dozen individual programs). There was some preliminary work which was expected, such as reviewing our packages folder, creating a new CodeJock Controls package for 17.2 and generating a bunch of new manifest files. But apart from that the programs all compiled first time and the application is up-n-running.

I have also taken the next step and switched to using the new Managed Connections class. This task was relatively easy for us as our implementation was more about establishing connection ids and less about management. It was also implemented as a mixin class to our subclassed workspace. So much of the work was spent replacing the mixin with a subclass of cConnection and finding the appropriate method to use plus a lot of testing. So far Iíve been very happy with the results.

Hans van de Laar
9-Jan-2017, 11:14 AM
Stephen,

Just migrated a 18.2 mobile touch application to 19.0.
- migration (including all libraries went without problem)
- changed {webproperty = true} into {webproperty = Server} and noticed several differences:
* OEM to ANSI problems showing up when web string properties contains diacritical characters
* a lot of DDO renentrancy problems are coming up?
- checkbox on a cWebColumnCheckbox is displayed to the next column if I don't explicitly set its peAlign to alignleft.

Sample program:
- WebOrder , Demo, Multi DDO structure: selecting a customer in the groupt 'Inactive customers' always throws a "Cannot refind record' error.

Focus
9-Jan-2017, 11:58 AM
Migrated and compiled our main app

Had the missing old bitmaps like others which I simply copied over

During migrating the libraries I got the error below

The application runs and I have found a couple of records but that is all the testing I've done so far



C:\PROGRA~2\DATAFL~1.0\Bin\Studio.exe
Referenced Array Index Out of Bounds


Error: 4509


Please report this error to Data Access Corporation


GET_ALLPAGESFORMAP (16299) - oObject (4186) - at address 196450
GET_INDEXPAGEFORMAP (16302) - oObject (4186) - at address 196469
MSG_BUILDSUMMARY (16728) - oSummaryListOfWhatWillBeDone (3040) - at address 205107
MSG_DISPLAYSUMMARY (16729) - oSummaryListOfWhatWillBeDone (3040) - at address 205121
MSG_ONENTERING (11020) - oSummaryPage (3032) - at address 205243
MSG_SWITCHTOPAGE (15526) - oWorkspaceMigrationWizard_pnl (2931) - at address 196540
MSG_SWITCHPAGE (15527) - oWorkspaceMigrationWizard_pnl (2931) - at address 168293
MSG_SWITCHPAGE (15527) - oNextButton (3049) - in native code
MSG_ONCLICK (4639) - oNextButton (3049) - at address 168513
MSG_COMMAND (648) - oNextButton (3049) - in native code
MSG_CREATE_DIALOG (711) - oWorkspaceMigrationWizard_pnl (2931) - in native code
MSG_CREATE_DIALOG (711) - oWorkspaceMigrationWizard_pnl (2931) - at address 1489
MSG_ACTIVATE (117) - oWorkspaceMigrationWizard_pnl (2931) - in native code
MSG_ACTIVATE (117) - oWorkspaceMigrationWizard_pnl (2931) - at address 2257
MSG_POPUP (290) - oWorkspaceMigrationWizard_pnl (2931) - in native code
MSG_POPUP_MODAL (4309) - oWorkspaceMigrationWizard_pnl (2931) - at address 1434
GET_STARTMIGRATIONWIZARD (16673) - oWorkspaceMigrationWizard_pnl (2931) - at address 203304
MSG_LOADWORKSPACE (15198) - oMain (801) - at address 159200
GET_EXECUTE@0 (12154) - oStudioCommand (635) - at address 134525
MSG_ONCOMMAND@1 (12171) - oActionManager (633) - at address 87880
MSG_REQUESTCOMMAND (15239) - oOpenWorkspaceItem (860) - at address 160841
[start] - at address 247331

Edgard
10-Jan-2017, 08:09 AM
Hi, Stephen

Converted 2 applications:

Total Symbols : 71672
Total Commands : 187306
Total Windows : 1
Total Pages : 1
Static Data : 1770259
Message area : 1474900
Total Blocks : 65782

and the other:

Total Symbols : 142541
Total Commands : 506612
Total Windows : 128
Total Pages : 8
Static Data : 5546291
Message area : 4018307
Total Blocks : 172635

Follow my comments:

A) During the migration of areas (See attach):
The renamed file: BrokDF18_2Bad.sws was created in the source area and not in the destination: BrokDF19.
I do not know if this occurred once because the data area is shared on the server for both versions.
This is not serious, but it required manual intervention.

B) I understand about the removal of bitmaps from the past.
As already reported, this does not impact, though, would be appreciated, if the registry key of the old WinPrint,
Data Access Worldwide/Visual Dataflex/16.0 existing in Data Access Wordlwide/Dataflex/19.0/Winprint, but the DLL looks at the old key.
I know you will remember, that winprint is obsolete.
There is no crying and dreaming, like every Brazilian, that Winprint 2 had the same graphic features as Winprint and a button to configure and change the printer.

C) Why can not I see the Recnum Column in the DataDictionary class object?
DemoButtonTest.vw (2)
This occurs in previous versions and sometimes the criticism appears on the troubleshooter, as I noticed in the new Order Entry:
- External reference to superclass 'cDbScrollingContainer'. Verify that the correct Use declaration is present and/or that the superclass is defined before this line.
- External reference to superclass 'cDbScrollingClientArea'. Verify that the correct Use declaration is present and/or that the superclass is defined before this line.

The tests in my application were basic without creating databases.
If you want to know, if I would use DF19 in this release: YES, because I can easily do a downgrade.

As for the colors and appearances, which are getting more and more faded, thus accompanying my deficit vision!

I am available for any clarification

Harm Wibier
10-Jan-2017, 08:20 AM
Sample program:
- WebOrder , Demo, Multi DDO structure: selecting a customer in the groupt 'Inactive customers' always throws a "Cannot refind record' error.
I suspect that you used the prompt list? The pbAutoServer property of the oPromptList object inside oCustomerWebLookup should probably be changed to true so it will only show the customers that match the constraint




* OEM to ANSI problems showing up when web string properties contains diacritical characters

What database are you using? Do you have an example of a character causing issues?



* a lot of DDO renentrancy problems are coming up?

Could you provide a sample?

Bob Cergol
10-Jan-2017, 09:34 AM
I suspect that you used the prompt list? The pbAutoServer property of the oPromptList object inside oCustomerWebLookup should probably be changed to true so it will only show the customers that match the constraint


Harm, I can demonstrate that this technique fails on the first execution of the prompt list using the standard WebOrder example, modified to constrain Orderhea to Customer -- only when run outside the studio -- in DF18.2 -- so maybe its fixed in 19. If so, then I've been fighting too hard to workaround various issues using 18.2 for a project I am working on.

Bob

Peter van Mil
10-Jan-2017, 09:45 AM
Converted a small DF 18.2 Windows project without problems. Get_Attribute DF_DRIVER_SQLSERVER_CLIENT_VERSION learned me that DF 19.0 is using the Microsoft ODBC Driver for SQL Server client software. The Office2010 and Office2013 themes worked fine.

Stephen W. Meeley
10-Jan-2017, 09:45 AM
Bob,

Can you email me the modified example?

Stephen W. Meeley
10-Jan-2017, 10:47 AM
Hi Peter,

The MSSQL driver always uses the highest available Microsoft client available on the system (that's been true for years).

Edit: A clarification - our driver has always used the highest available MS client available on the system and was supported at the time that driver was released. For instance, in the 6.1 drivers shipped with DF 18.2 we had not yet added official support for MSSQL 2014 and 2106 - so they didn't "know about" the newer MS clients (even if they were installed on the system) so they didn't try to use them.

We need to update the doc on this because MS has changed what they provide as clients. Here is some more detailed information...

A little history about SQL Clients, since this has become complicated due to all kind of changes.

These are the clients the current Connectivity Kit recognizes and uses:


#define SQLSERVER2000CLIENT 8 /* "SQL Server" */
#define SQLSERVER2005CLIENT 9 /* "SQL Native Client" */
#define SQLSERVER2008CLIENT 10 /* "SQL Server Native Client 10.0" */
#define SQLSERVER2012CLIENT 11 /* "SQL Server Native Client 11.0" */
#define SQLSERVER2014CLIENT 12 /* “ODBC Driver 11 for SQL Server” */
#define SQLSERVER2016CLIENT 13 /* “ODBC Driver 13 for SQL Server” */

The Connectivity Kit will always use the highest version installed on a client workstation.

Microsoft announced some time ago that "SQL Server Native Client 11.0" was the last Native Client version. There is no native client version for SQL 2014 and SQL 2016. SQL Server 2014 and SQL Server 2016 still come with SQL Native Client 11.0.

The successors for SQL Native Client are:

ODBC Driver 11 for SQL Server comes with SQL Server 2014
ODBC Driver 13 for SQL Server comes with SQL Server 2016

The term ODBC seems to have a negative sound to some developers. ODBC is seen as ‘general’ as opposed to ‘dedicated’ and is considered slower. This is not the case and it is the route Microsoft has chosen - it is not specific to DataFlex.

Bob Worsley
10-Jan-2017, 11:02 AM
Nice explanation Stephen, thanks

Bob Cergol
10-Jan-2017, 02:42 PM
Turns out I was under the wrong impression that I could set pbAutoSever in a prompt_callback procedure in the invoking object. Apparently it is not a web property, and attempting to WebSet it generates a runtime error. For web applications, if you need that behavior in a prompt list then you must hard code that property in the prompt list. The wizard creates those lists with the property set false. The problem with hard-coding it is that if you then want the list to be unconstrained if no parent record was selected, it doesn't work, because without finding a parent, the list will come up empty. In Windows apps I'm in the habit of setting this property dynamically in a call-back routine according to whether a parent record is found, or some other condition.

Bob

DaveR
10-Jan-2017, 04:05 PM
Dave,

Not sure what your application is doing - but I just tried the following test. I compile the Skinning sample and then exited the Studio and ran the .exe. While doing so I subtracted (or added) the various .cjsytles file and refreshed the skin selector and they came and went as expected.

I just copied the styles files into the server programs folder, nothing else. I'm using teh standard enumerateskins dialog from eth skins example. I'm puzzle why it works locally but not with the exe and skins copied to the server.

Clive Richmond
11-Jan-2017, 10:28 AM
Hi Stephen,


These are the clients the current Connectivity Kit recognizes and uses:


#define SQLSERVER2000CLIENT 8 /* "SQL Server" */
#define SQLSERVER2005CLIENT 9 /* "SQL Native Client" */
#define SQLSERVER2008CLIENT 10 /* "SQL Server Native Client 10.0" */
#define SQLSERVER2012CLIENT 11 /* "SQL Server Native Client 11.0" */
#define SQLSERVER2014CLIENT 12 /* “ODBC Driver 11 for SQL Server” */
#define SQLSERVER2016CLIENT 13 /* “ODBC Driver 13 for SQL Server” */

The Connectivity Kit will always use the highest version installed on a client workstation.

Microsoft announced some time ago that "SQL Server Native Client 11.0" was the last Native Client version. There is no native client version for SQL 2014 and SQL 2016. SQL Server 2014 and SQL Server 2016 still come with SQL Native Client 11.0.

The successors for SQL Native Client are:

ODBC Driver 11 for SQL Server comes with SQL Server 2014
ODBC Driver 13 for SQL Server comes with SQL Server 2016


Does this mean the 6.2 driver now recognizes the Match_Client_Server_Version (http://support.dataaccess.com/Forums/showthread.php?53307-Sql-Server-2014&p=279597#post279597)setting?

Stephen W. Meeley
11-Jan-2017, 12:07 PM
Clive,

I hadn't thought about that (nice catch). It certainly should but I haven't tested it yet. Have you tried it?

DaveR
11-Jan-2017, 03:33 PM
Solved it. .ws pathing differed between versions 18.2 and 19.0 :cool:

Clive Richmond
11-Jan-2017, 11:27 PM
Hi Stephen,


Have you tried it?

Briefly this morning, but using a DataFlex 18.0 client environment. For what I saw I'd say Martin has managed to get this functionality working again.

The one query I have is I don't think this is a "Unhandled Program Error". It is really a configuration error and, if triggered, should abort the application once the message has been dismissed.

Observations when Match_Client_Server_Version is set 1 in mssqldrv.int.


10569

10571

10570

10572

Stephen W. Meeley
12-Jan-2017, 05:53 AM
Clive,

My guess is that the check mechanism itself hasn't changed at all - it was merely that "matching" clients for MSSQL 2014 (and 2016) were not "known" to the DataFlex side (we added support for 2014 after the driver was released and didn't do an update). Now that the newer clients are known, the mechanism simply worked the way it was designed from the start.

We can look into making this a handled error - you think it should be fatal as well?

Peter Crook
12-Jan-2017, 06:27 AM
Looks good.

I think the primary driver for this client to migrate will be the coolio "tab" interface. I think they will like that. Mind you, I have other clients who want MDI but where Views can be pulled outside the bounds of the parent window. (Like the properties panel in the studio, can someone write a blog on how to do that please?)
I did it by basing all my windows (views) on a tool panel and augmenting its definition by importing methods from other classes. Quite a lot of work but it suits me and effectively gives an SDI application.

Clive Richmond
12-Jan-2017, 07:17 AM
Hi Stephen,


We can look into making this a handled error - you think it should be fatal as well?

Hmm good question. One thing I didnít try this morning was installing the ODBC Driver 13 to see what would happen. The server is MS-SQL Server 2014 Standard. Iíve just completed that test Ė removed version 11, rebooted, installed 13 - and the application loaded fine. Iíd say if the client driver matches or exceeds that found on the server all is well.

When the error does trigger I think it should remain fatal. My thinking is if you are prepared to change Match_Cleint_Server_Versionís default you are probably chasing some rogue workstation out in the field that is causing intermittent havoc.

I remember doing just that when we started out with CK 5.x. and were experiencing some strange data integrity issues. I didnít have far to travel. It was the machine next mine, with the wrong native client, but it was only used on Wednesdays or Fridays.

Michael Mullan
12-Jan-2017, 08:01 AM
That seems like a neat solution. I'd probably use the CodeJock panels though, simply because I have them.

Focus
12-Jan-2017, 08:14 AM
Many moons ago I think you posted a screen shot of this on here somewhere, Can't seem to find it. Do you still have it ? Just curious

Harm Wibier
12-Jan-2017, 08:25 AM
FYI: In the next build the OEM to ANSI problem and the DDO reentrancy issue should be fixed.

Harm Wibier
12-Jan-2017, 08:30 AM
Turns out I was under the wrong impression that I could set pbAutoSever in a prompt_callback procedure in the invoking object. Apparently it is not a web property, and attempting to WebSet it generates a runtime error. For web applications, if you need that behavior in a prompt list then you must hard code that property in the prompt list. The wizard creates those lists with the property set false. The problem with hard-coding it is that if you then want the list to be unconstrained if no parent record was selected, it doesn't work, because without finding a parent, the list will come up empty. In Windows apps I'm in the habit of setting this property dynamically in a call-back routine according to whether a parent record is found, or some other condition.

Bob

You are right that pbAutoServer is not a web property and that it is hard (I don't see how) to make it dynamic based on which view is calling the DD. The reason why it is not a web property is most likely security. Making it a client web property would allow changing it on the client and could provide a way to work around constraints.

This is not new to 19.0 but it is something we might want to reconsider (and maybe it should become a server web property).

Samuel Pizarro
13-Jan-2017, 11:39 AM
(and maybe it should become a server web propert

It seems a good case for it!
+1

IJmert
16-Jan-2017, 05:46 AM
Old skinfiles where like StyleXP.msstyles en not cjstyles. This worked in previous versions of the skin framework but do not in DF 19.0. It is not a big issue for us.

Peter Crook
20-Jan-2017, 12:08 PM
I thought I'd posted a screenshot too but couldn't find in the File Upload Manager. I now see that that it has several pages but I can't upload the file presumably because I've deleted it from my computer (..or was it on my previous computer?...).
However there's a button at the top right of the thumbnail that tells you which posts the image was used in - it was this (http://support.dataaccess.com/Forums/showthread.php?52699-Detecting-and-using-a-second-screen-monitor&p=271054#post271054)one and this (http://support.dataaccess.com/Forums/showthread.php?46193-Internal-Compiler-Error-prevents-compilation&p=227496#post227496)one.
These were augmented with a reply to a query from Garret (here (http://support.dataaccess.com/Forums/showthread.php?46193-Internal-Compiler-Error-prevents-compilation&p=227496#post227496) - ignore the final paragraph about List & Label - I don't use it anymore).

Clive Richmond
23-Feb-2017, 11:13 AM
Hi Stephen,


We can look into making this a handled error - you think it should be fatal as well?

Thanks. This displays a useful message and exits gracefully. Also I very much like the new keyword Minimum_Client_Version. A nice addition.

Match_Client_Server_Version 1
10673

Minimum_Client_Version 12
10674

(DataFlex 19.0a2)

Samuel Pizarro
23-Feb-2017, 11:24 AM
those are really nice stuff!