
DataEase for DOS DQL Manual
With the "Re-Launch" of DataEase for DOS through LegEasy4DOS the need for a refresher in old syntaxe for commands and functions has returned with a vengeance.
Almost everybody has been able to keep track of their old applications but not as many has been able to keep hold of the manuals etc.
DataEase for DOS is so old that the manuals has never existed in electronic form.
But as part of our LegEasy program we have now dug up and old set and you can buy the DQL Manual in our WebShop for download.
A small preview of what you can expect is to be found under

100% DataEase
LegEasy4DOS Professional is a "pioneer" that showcase the future of DataEase.
No! The future is not retro, and the bit about it that is pioneering is not the fact that you can fun DataEase for DOS applications.
That feature is basically just how it should always have been and a catch-up with our history.
Take a closer look - The entire product is made IN DataEase following up on a "slogan" we had when we sat out to refurbish DataEase.
DataEase need to be made in DataEase!

LegEasy4DOS - How it works?
The interest in LegEasy4DOS has been "overwhelming" since we released it at the end of last week.
A lot of eagerly awaiting Professional clients jumped at it and the feedback was not late to come.
Most of you are overjoyed and excited by this opportunity to run DataEase for DOS in a modern environment, and more than happy to scrap your old XP computers and Novell servers that has kept you up at night with worry - when will it draw its last breath and what will I do then?
However not all feedback is good and some of you have been "disappointed" too.
Some of this disappointment is down to us having problem with our server park after the release due to an unexpected heavy load - don't they always say that - but some of you have been running bench mark tests and compared it to "Native" DfD on Native XP, WIndows 7 x32 etc. and the results has baffled you.
Why is it sometimes much slower and then sometimes much faster than the comparison?
In the article below we will try to explain this and how LegEasy4DOS is designed and how it works.

LegEasy4DOS Professional Release 05.08.16
The response to our Personal version of L4D has been fantastic and it has given us great motivation in the work leading up to the release of our long awaited Professional version of L4D.
We won't spend too much time extrapolating its virtues here but limit ourselves to announcing it's release and showcase its beauty ;-)
Further down the article you will find the FREE FOR ALL Trial Key you can use to get the first "spin" in this brand new interpretation of DataEase (for DOS).

New Support Manager and new Support Products introduced
For a long time we have been focusing on improving our software products, but we have now entered a new phase where we will focus more and more on the entire customer experience.
One issue that has been raised more often than others is the lack of a dedicated support service so this is one of the areas were we will now focus.
Last month we hired Fatma Adel as our new Support Manager. She has now had some time to settle in and are more than eager to start helping you resolve your issues.

100% DataEase
LegEasy4DOS Professional is a "pioneer" that showcase the future of DataEase.
No! The future is not retro, and the bit about it that is pioneering is not the fact that you can fun DataEase for DOS applications.
That feature is basically just how it should always have been and a catch-up with our history.
Take a closer look - The entire product is made IN DataEase following up on a "slogan" we had when we sat out to refurbish DataEase.
DataEase need to be made in DataEase!

LegEasy4DOS - How it works?
The interest in LegEasy4DOS has been "overwhelming" since we released it at the end of last week.
A lot of eagerly awaiting Professional clients jumped at it and the feedback was not late to come.
Most of you are overjoyed and excited by this opportunity to run DataEase for DOS in a modern environment, and more than happy to scrap your old XP computers and Novell servers that has kept you up at night with worry - when will it draw its last breath and what will I do then?
However not all feedback is good and some of you have been "disappointed" too.
Some of this disappointment is down to us having problem with our server park after the release due to an unexpected heavy load - don't they always say that - but some of you have been running bench mark tests and compared it to "Native" DfD on Native XP, WIndows 7 x32 etc. and the results has baffled you.
Why is it sometimes much slower and then sometimes much faster than the comparison?
In the article below we will try to explain this and how LegEasy4DOS is designed and how it works.

LegEasy4DOS Professional Release 05.08.16
The response to our Personal version of L4D has been fantastic and it has given us great motivation in the work leading up to the release of our long awaited Professional version of L4D.
We won't spend too much time extrapolating its virtues here but limit ourselves to announcing it's release and showcase its beauty ;-)
Further down the article you will find the FREE FOR ALL Trial Key you can use to get the first "spin" in this brand new interpretation of DataEase (for DOS).

New Support Manager and new Support Products introduced
For a long time we have been focusing on improving our software products, but we have now entered a new phase where we will focus more and more on the entire customer experience.
One issue that has been raised more often than others is the lack of a dedicated support service so this is one of the areas were we will now focus.
Last month we hired Fatma Adel as our new Support Manager. She has now had some time to settle in and are more than eager to start helping you resolve your issues.

LegEasy 4DOS - Update!
We are and should be very happy when an upcoming release of a DataEase product cause this much of a stir, but it is also a sobering moment.
We obviously still have some catching up to do with our new products before they reach the same popularity as the early versions of DataEase.
Luckily the "re-launch" of DataEase for DOS is part of our DataEase infrastructure strategy so you will now be able to run your legacy apps well into this century when at the same time integrate them with the latest DataEase technology.

Locking Strategies for dummies!
Ever wondered why you have so much trouble with inconsistency and being locked out of your DataEase database? If the answer is YES, read one and discover how you can easily remedy it.
Full, Basic, Opportunistic - What does this really mean? We get a lot of questions about which locking to choose in DataEase, and the answers we have give - are giving, have changed over the years. I guess that if this was a simple as it "should be", there wouldn't even be three options in DataEase, and we wouldn't leave this is in your hands.
I have spent quite a lot of times over the years debating and exploring this myself, and the problem is that it is more of a philosophical problem, than a technical one. Pictures this as going into a Chinese restaurant and ordering. You get a many with 500 items, and you are vaguely familiar with 3 of them, so what do you do. Choose what you know, or go for the set menu...

[{8}]five Release and Release program.
Finally...
DataEase {[8}]five went into production today and from now on it will be all about 8.5 and beyond.
We have now concluded the longest Beta program in DataEase history - 427 days or over 1 year and 2 months.
So why so little fanfare on this watershed day?

Warning! Price increase on DataEase 8 from January 1st
We are changing how we license DataEase from Januar 1st 2016.
In short we will stop dividing licenses (and executables) in Developer (Full) and GROUP (Runtime) and introduce a simple User License and one executable that will be either a development environment or a Application Launcher based on the users privileges.
The change might seem dramatic at first, but you will get much more functionality and flexibility.
This is just an early warning to those of you that plan to buy DataEase 8 in the near future, more information on the change in product and licensing strategy will follow.

Dynamic Design - A New paradigm in DataEase development
ExecDQLClass(), CreateTable(), AddColumn()* signify a complete breach with previous DataEase thinking.
From its infancy in the early 80ies and throughout its life until DE8 there was a clear divide in DataEase between Design and Runtime. (At least in the head of the designers, but the fact that most people used it interactively and added and changed to it in real time was not taken into account)
Tables, Scripts, Forms, Reports was froozen in runtime and there was few if any way you could make your application dynamic.
How this has changed in 8....

How to create CDFs for use in DE8/DG3
This is how you create your own CDFs using Visual Studio 2013. I selected to use this version because any one can get a full version for free as long as you register with MicroSoft. You should be able to recreate this in any version of Visual Studio in almost the same way as described here. Not much has changed in creating Windows DLLs in the last 20 years. You probably can do the same using other compilers as MinWin GCC and Embarcadero, but that is outside the scope of this document.

Migrating from DFW 5.x and 6.x to DE8.5 including National Versions
If you want to encompass DataEase problems in one word it must be Migration. It is fascinating that a company that has had so little success with this concept, has sworn to it for such a long time.
It is a badly hidden secret that DataEase lost most of it users in the flawed and bodged migration of DFD application to early DFW, what is maybe not so well know is all the other "unsuccessful" migration events.
In this article we will explain what/why and how it went wrong and what you can do to work around it.

We reached our 1.000.000 visitor today 23rd of February 2015
At the beginning of the year we had estimated that we would get our 1.000.000 visitor at the 6th June this year, but with the Beta of 8.5 and the great feedback we have seen both visits on our website and sales sky-rocket and we reached the 1.000.000 threshold more than a Quarter ahead of schedule!
We just have to thank you all for your patience with us, and for your contributions and support throughout the last couple of years since we took charge.
We both hope and feel that our efforts and enthusiasm for DataEase has been well received and are reciprocated by you all!
A wholehearted thank you to your all from "The DataEase Team".

NEW! Functions in DataEase 8.0 to 8.5 (Page 1)
Some of you might be aware of it but it seems a lot isn't so it might be time to advertise a little the vast number of new functions and functionalities that has been added to DataEase 8.0 through 8.5.
For a long time the only way new functions found their way to DataEase was through active and ingenious users which developed CDF's. As much as the CDF's alleviated the obvious short-comings in DataEase 5.x to 7.2 it was cumbersome, undocumented and "secretive" i.e. not everyone was in the know.
With 8.x we decided that the focus needed to be on moving DataEase forward, rather than the constant dance around the "bug fixing" fire.
Have a look and a try for yourself.
Due to the number of new functions we had to publish the short description in two articles, of which this is the last.
Also have a look on the blog synopsis found in the list to the right.

NEW! ?Functions in DataEase 8.0 to 8.5 (Page 2)
Some of you might be aware of it but it seems a lot isn't so it might be time to advertise a little the vast number of new functions and functionalities that has been added to DataEase 8.0 through 8.5.
For a long time the only way new functions found their way to DataEase was through active and ingenious users which developed CDF's. As much as the CDF's alleviated the obvious short-comings in DataEase 5.x to 7.2 it was cumbersome, undocumented and "secretive" i.e. not everyone was in the know.
With 8.x we decided that the focus needed to be on moving DataEase forward, rather than the constant dance around the "bug fixing" fire.
Have a look and a try for yourself.
Due to the number of new functions we had to publish the short description in two articles, of which this is the first.
Also have a look on the blog synopsis found in the list to the right.
10/03/23 16:14:39 
Re:Re:Re:DocumentRun vs DocumentOpen

DocumentOpen/DocumentRun is desigend to overrride the default settings on the document when printing it through the functions.
If you get a PS 3.0 output it must be because the rendering is not PDF but PS and hence it must be a mix in the function where the output is generated via the settings on the document rather than the override in the function (a bug obviously).
To figure this one out we need you to take a screen copy of the Pritner Setttings on both DQL's you print and upload it here/send it to us so we can see if there is any difference and why one is going wrong and the other one is getting it right.
I think that when you see the differences between them you will quickly find a work around for your problem while we will fix it in general.
...
Product: Dataease 9 Developer
Written by: DataEase

10/03/23 12:18:15 
Re:Re:DocumentRun vs DocumentOpen
Have you had any thoughts on this PS 3.0 creation instead of PDF 1.7 creation?
Unfortunately it does stop us using that function.
...
Product: Dataease 9 Developer
Written by: Paul Cheeseman

03/03/23 15:45:31 
Re:DocumentRun vs DocumentOpen
I see that.
It doesnt, however, alter the resulting output, with the PS 3.0 output on one, but the desired PDF 1.7 output on the other. Its this that I really have to sort.
Documentrun() will make it easier to work multiple instances like saving then printing then emailing.
...
Product: Dataease 9 Developer
Written by: Paul Cheeseman

03/03/23 15:39:22 
DocumentRun vs DocumentOpen
The problem with using DocumentOpen for this is that its a "fire and forget" command which can be overridden by other windows command and end the creation early.
As DocumentOpen() has many other uses where the "default" POST feature is desireable/required we have created a parallel funciton called DocumentRun() that will work more like the Run Procedure function in DQL where the function will wait till the result is produced.
This "waiting" thing has been a problem in DFW since the early days so its a relief to get a function that now handles this properly.
https://www.dataease.com/dg3_HelpView/?PageID=13829&field1=*DocumentRun*
...
Product: Dataease 9 Developer
Written by: DataEase

03/03/23 14:19:34 
Documentopen() and creating PDF's
Using LE9 documentopen() to create a PDF and save it, I get two very different results.
On the demo DB, It creates a PDF (file signature PDF-1.7) which opens fine.

on our test one, it creates a file with file signature PS-Adobe-3.0 which will not open,

giving error

These two examples use similar code on buttons
Demo:
DocumentOpen("PrintLetter","PDF",concat("Y:\","testX",".pdf"))
Test:
DocumentOpen("ADV_WA_Disp_Print_White_TEST_PDF","PDF",concat("Y:\","test",".pdf"))
Why would one output be PDF format and the other Adobe PS V3? They are on the same computer.
I get the same issue if I try to send one via email, it does what you'd expact apart from making a good PDF
...
Product: Dataease 9 Developer
Written by: Paul Cheeseman

21/02/23 12:04:08 
Re:old good sequenced from N
Magic! nothing has been changed in the field definition but it got worked! thx a lot! DataEase rules!
...
Product: Dataease 9 Developer
Written by: Ihor Zakharchenko

21/02/23 11:32:57 
old good sequenced from N
dear DataEase team, how does it count from N due to the field definition ? thx
...
Product: Dataease 9 Developer
Written by: Ihor Zakharchenko

17/02/23 13:21:53 
DEOS and Documentopen
I seem to be having issues getting DEOS and DocumentOpen to work how I assume they are supposed to!
I have set this up on a simple button to test:
setvar("VFile",DEOS("@Browseforfile","u:","*.pdf")) + alert(getvar("VFile")) + DocumentOpen(getvar("VFile"),"printer","") .
with @browseforfile, it does open the window, and has (in this case) *.pdf marked. But all files show, and it only ever opens in the last folder used, not the one I ask it to.
I have tried several different ways to use documentopen , such as preview and print.
Usually nothing happens, sometimes I get a 'could not open file' message. The file does open and has all access rights set correctly.
Is there a more detailed guide on how to use these? I have followed the documentation I could find, but fail most times. and cannot see where I am going wrong.
Paul
...
Product: DataEase 9 Developer
Written by: Paul Cheeseman

16/02/23 16:08:17 
exec SQL with OLEDB provider
Trying to get 'exec SQL' to work in DE6.53 and DE8.5 and get the same issue.
Connection must be to DB via OLEDB provider which is defined in a UDL file.
The same database link is defined in database links with UDL file and works A-ok for normal DQL actions.
The following statement gives an error 1 parsing script error.
exec SQL connect TESTDB to OLEDB provider c:\testDB.udl as TEST PWD .
...
Product: Dataease [{8}]FIVE
Written by: Sam Bird

10/02/23 08:27:09 
Re:Re:DMP
thanks, that worked, we are now printing, however the print is missing the top half and very feint, I suspect this is because the LQ-2019 doesn't like the MX-100 driver, to compensate I added all the same ESC sequences to the driver but still having print issues.
Can you think of anything else that might help?
Thanks
...
Product: LegEasy DOS
Written by: Jeremy Clifford

09/02/23 13:03:57 
Re:Re:Re:Re: We are using SetsSyle, but in LE9 it is not working how we would expect a lot of the time.
OK, so the subform lines will be problematic. I can revert to the old way of doing this, that still works.
Buttons are the other setstyle problem area.
Example1 :
Main Form buttons using mouse over.
define "x" text .
x:=setstyle("CustomerDetailsButton","ASPButtonMouseOver") .
and on mouse exit
define "x" text .
x:=setstyle("CustomerDetailsButton","ASPButtonClearNoOutline") .
This works on some buttons on each form will work fine with this, but the other 95% just refuse to change style on mouseover/mouseexit. The same issue appears on all forms that use buttons.
On there own, the styles can be added to the button, just not switched.
These were added on the 'newer' DE9 that we had before going back to LE9. They worked flawlessly on that one.
...
Product: DataEase 9 Developer
Written by: Paul Cheeseman

08/02/23 19:10:10 
Re:DMP
LegEasy4DOS print directly to WIndows printers and not to LPT1/2/3. You map them in the admin tool.
I know this is a little confusing but:
In the Admin Tool you map the DOS LPT1 - 4 and COM1-4 to WIndows Printers. Then when you print to LPT1 in DataEase it will be ported to the correct WINDOWS printer. if ex. you DOT matrix is connected via a network it doesn't matter as long as you can print to it via Windows.
So in DataEase you simply connect ex LPT1 to Epson DLQ-2190 and then you use LPT1 in DataEase for DOS and it will be printed.
LegEasy4DOS emulate Epson MX or HP LaserJet (PCL5) native and print it as PDF (GHostscript) to any device so in DFD you should only use either Epson MX or HP LaserJet. Make sure this is set correctly in both Application Configuration and Workstation Configuration.
But if you want to use special characters (ESC sequences) you can configure the Printer Driver in L4D in RAW mode. This means that you still tunnel it through windows the same way but you send the characters directly to the printer without any interpretation.
This way you control the printer in the good old days.
If you need further advice just respond to this post and we will guide you further.
...
Product: LegEasy DOS
Written by: DataEase

08/02/23 16:25:13 
DMP
Hi.. I have just installed the trial of LegEasy4DOS for a customer using DataEase 4.53. They have a dot matrix printer an Epson DLQ-2190 that is connected to the network as it has an ethernet port. On their old Windows 7 PC's they had this on, we simply used the Net Use LPT.... command to a printer share and this worked, however we are now using Windows 10.The printer does a test page from Windows no problem, but when you set up LegEasy to assig an LPT port to the driver, it doesn't print, instead it prints on a laser. the laser is assigned to LTP1, the DMP to LPT2. Has anyone come across this issue, its a bit of a problem for them if I can't get this working.
...
Product: LegEasy DOS
Written by: Jeremy Clifford

03/02/23 14:03:02 
Re:Re:Re: We are using SetsSyle, but in LE9 it is not working how we would expect a lot of the time.
You have kind of put your hand in an ants nest here.
OML was never supposed to be "released" as its part of the internal model of DE rather than something that users should dab in. This is why it was not part of the original release. OML is a hybrid of compiled and interpreted code which makes things a little awkward.
You can't call GetCurrent("RowNumber") in the code directly due to when things are computed and executed.
If you combine OML with GUI functions like SetStyle you need to "trigger" DataEase dependency order. So to get this to work you need to have a virtual field that contain the derivation GetCurrent("RowNumber") and then pick that values with ObjectName.Value().
I guess you looked a the sample and thought we were just idiots that didn't call the function directly and wanted to improve it... I would, but its done this way for a very obvious reason when you start playing with it. I also think that when you use the GetCurrent("RowNumber") in a subform it will return 2 rather than 1 while used in a table list it will show 1. Another DE quirk I'm afraid. Its easy to think that we are idiots, but the problem is that we have to go around some long standing development "truths" in WIndows which make something that should and to the untrained eye should be simple very very hard. I guess it was done with the best of intentions in a euphoria of object oriented programming but in reality it is just plain stupid.
So the problem for us that when we are in one place of the code we don't know where we come from or where we are going which allow for these quirky solutions. Pure windows brilliance...
Yes, its very "hacky" but the entire purpose of
...
Product: DataEase 9 Developer
Written by: DataEase

03/02/23 13:06:23 
Re:Re: We are using SetsSyle, but in LE9 it is not working how we would expect a lot of the time.
I get the row number thing, each being different on this version.
So I changed code to this:
define "x" text .
if SESS_EndDate > current extended date then
x:=setstyle(concat("SESS_Date2#",GetCurrent("RowNumber")),"SubFormFieldLive") .
else
x:=setstyle(concat("SESS_Date2#",getcurrent("RowNumber")),"SubFormField") .
end .
and it now highlights row three only ...
I also added a virtual field to collect the actual row number, but with same results.
I tried various combinations with and without the wildcard.
These highlight lines are not meant to trigger when highlighted, but whenever there is data on the line.
The buttons in my example1 all have unique names. Some work, most do not.
This is the same across most forms.
...
Product: DataEase 9 Developer
Written by: Paul Cheeseman

03/02/23 10:47:43 
Re: We are using SetsSyle, but in LE9 it is not working how we would expect a lot of the time.
Hi Paul.
SetStyle() work on the object name and OML work on the object. So when you use any Set command you will manipulate the first object in the object order in the compiled (RT) document. OML is mostly to complex and "programmy" for a lot of our users which is why we did the Set Class functions to allow users to do things more the DataEase way.
But what start off as easy very quickly become complicated when you want to do something "complicated".
HighShade.color.red := 255 .
HighShade.color.green := 255 .
HighShade.color.blue := 255 .
This way of doing things is for most people "greek" and seems idiotic when for a computer it is brilliant because you tell it exactly what you want.
With SetStyle we bascially exploit the features of the design tool and abstract the style from the look of the style so you can set the style and then if you change the style that change will permute the entire application. (like CSS in HTML).
If one prefer OML and the specific way of doing it that is great but if not then SetStyle and the SetClass is your thing (SetColor,SetLabelText,SetCurrent etc)
You are allowed to have the same object name on different levels so you can use MyLabel on Main Recod and SubRecord and SubForm and MainForm etc. as it will be classed. MyForm.MainRecord.MyLabel etc.
When you define a subform you basically clone the first row, row times in RT so if the objetct is called CustomerName and you have 10 rows they will all be called CustomerName. SO if you have code that set style on CustomerName they will all set it on the first CUstomerName.
This is why you can do it like this: SetStyle("CustomerName#3","MyStyle). Then you will set it on the 3rd CustomerName.
THis has been discussed on the forum before and you can read more about it and find a sample in the thread.
http://www.dataease.com/DG3_ForumList/?ParentID=00...
...
Product: DataEase 9 Developer
Written by: DataEase

03/02/23 10:45:27 
We are using SetsSyle, but in LE9 it is not working how we would expect a lot of the time.
Example 1:
Main Form buttons using mouse over.
define "x" text .
x:=setstyle("CustomerDetailsButton","ASPButtonMouseOver") .
and on mouse exit
define "x" text .
x:=setstyle("CustomerDetailsButton","ASPButtonClearNoOutline") .
This works on a few buttons, but not on the rest. Nearly all forms have the same issue.
Example 2:
Subform field style changes, This one works on the first line of a subform, but not the rest.
The code here contains both old way and new way of doing this. The old colour change works fine on every subform line every time, but is a pain to change on every field if changes are needed. The SetStyle() ONLY works on the first line of the subform.
define "x" text .
x:=Setvar("VCDate",current extended date) .
if SESS_EndDate > getvar("VCDate") then
--x:=setstyle("SESS_NameofAd","SubFormFieldLive") .
HighShade.color.red := 0 .
HighShade.color.green := 255 .
HighShade.color.blue := 0 .
redraw := 1 .
else
--x:=setstyle("SESS_NameofAd","SubFormField") .
HighShade.color.red := 255 .
HighShade.color.green := 255 .
HighShade.color.blue := 255 .
redraw := 1 .
end .
end .
In both of these examples the styles are named correctly and can be applied to the field manually. Its only when its done automatically it fails.
In the other DE9 (DE10?) it worked flawlessly and was used throughout the database.
On any of these buttons or fields and on any of the forms, if I revert back to using the colour change code, it works everytime.
...
Product: DataEase 9 Developer
Written by: Paul Cheeseman

19/01/23 17:15:25 
Re:Re:WE NEED DE9 asap
...
Product: DataEase 9 Developer
Written by: Ihor Zakharchenko

19/01/23 17:07:29 
Re:Re:DE8.5 to DE9?
GREAT! thx for Your reply dear DataEase Team!
Also please pay more attention to database security. that is why we need new DE9 in Ukraine fully unknown to aggressor. their popular in Ukraine economic product called 1c is a spy software in fact.
...
Product: DataEase 9 Developer
Written by: Ihor Zakharchenko

19/01/23 12:16:56 
Re:DE8.5 to DE9?
As DataEase is now one of the oldest software products being in continued publishing with its more than 40 years, there is a certain challenges that we have that most other software companies don't have.
It is kind of obvious that if Dataease is to survive long term we need to focus more on the current and the future.
After 8.5 we decided that we would spend some time and a lot of resources on figuring out what this means and how we can do this without leaving our current users in a lurch.
DataEase 9 has been delayed by a world pandemic and other challenges but we are still not in a rush as we need to get things right, rather than fast.
In DataEase 9 the future and the past kind of part ways when still co-existing.
LegEasy 9 has been available on request for over 6 months and is very popular with the intended user group which is Legacy DataEase users with Legacy Applications.
We realised during the development of DE9 that if DataEase was to be a current product it could not constantly hanker to the past so we decided that we would now firmly split the product into two.
LegEasy 9 for the people with Legacy needs/applications that want to move forward while at the same time not do re-writes/conversions or fresh development.
DataEase 9 for people that want to develop fresh applications or spend time rewriting their application to fit the future.
To make it easy both LE9 and DE9 will be compatible when released but then part ways from 9.5 onwards.
So the short answer to your question is that LE9 is designed with your needs in mind but that does not mean it will be 100% fit as all progress will inevitably also change something.
...
Product: DataEase 9 Developer
Written by: DataEase
