DataEase 8 Advanced Workshop Wednesday 26th February in Tring - Greater London.
DataEase 8 has been for 6 months and it has been a fantastic and resounding success. However the feedback from our users is that in many places they only scrape on the surface of the the new functionality, because do not be mistaken - DataEase 8 is not just another lick of paint!
DataEase 8 contain more new functionality than all previous versions of DataEase put together and then some!
The DE8 which has been released so far is DE8 Classic which is the bridging version between the "old" and the New DataEase. Since it retains most of the old functionality of DFW 7/6/5 some users get the mistaken impression that it is the same.
Believe us when we say: IT IS NOT!
2014 is the year when we put DataEase thoroughly back on the map. We have been in technology development mode for quite some time now and it is high time we started to showcase what this product can do.
We will create a lot of exciting sample/template apps that you can rip off and use in your own development, we will create tutorial videos and we will update the documentation so it covers all the new function and functionality.
A lot of you have already taken the leap and started to use the new functionality in "harms way" but not enough have and not everyone have jumped hard enough ;-)
We have had requests for some "formal" training since the release but we have been simply too busy to comply, but this year we realized that we would never have the time so better just jump into it ourselves!
We start off with a 1 day Workshop here in Tring for the most enthusiastic of you. It is more than half way sold at before we even made this write-up so don't hang about if you want to secure a space! It is strictly first come/first served basis so when it is full its full.
I know that a lot of you have worked with DataEase for 20 years so you know everything there is to know about DataEase for Windows already, and of course you do but most of you don't know half of what DataEase 8 is all about. Rest assured that it is not your fault, because most of it isn't even properly document and promoted yet so you must be a psychic to know about it.
Our goal with DE8 and DG3 in its extension, is not to simply keep DataEase afloat, but to really push it forward into the 21st century and beyond.
DataEase for WIndows have very much the same same for way to long, and it need to really get the steam up if we are to reach these ambitious goals, and believe me when I state: IT HAS!
The DE8 Advanced Workshop will show you how you can develop DataEase applications in a completely new way much more similar to Web Style development which is the norm now and what users now expect and use. Move away from the traditional Forms/reports and move into the browser style approach to data.
There is no reason why a DataEase app shouldn't be sexy and exciting.
Our focus in DE8 development so far has been on making the product more flexible to give you more tools to build the app the way you want and not the way we thought you wanted in 1990.
But it is no point for us to build all this functionality if you don't know about and hence don't use it so this workshop is a big step on the way for a lucky few of you ;-)
Since it is a workshop the goal is for you to interact with us, so we won't keep a strict agenda but we will showcase the following new functionality:
1. What is new in DataEase 8?
It is not just another DataEase for Windows, it is the ultimate DataEase for Windows and a serious contender now in any RAD development in Windows.
2. How is DataEase 8 different from previous versions of DataEase for Windows?
Looks re deceptive, and we you will not leave this Workshop thinking that DE8 is just another DFW...
3. Web and Web fields, how to create and how to manipulate.4. RT and HTML editor, how to use, create and manipulate.
Web fields are not just Web in DE8, it is a way of presenting documents, editing documents and printing reports/forms etc in a new way. Together with MemoClass you can use Templates to create advanced documents, auto fill them and leave the user to complete them in the RT editor.
5. MemoClass - The new Manipulation class for Memo Fields.
Memos used to be the most hated object (maybe beaten by Tabs) in 7.x, but in DE8 it is one of the cornerstones. One big drawback with Memos in 7.x was that they couldn't be manipulated. In DE8 you can manipulate them in so many ways that it is easy to loose count. Memos are also a fundament in functionalites as ExecDQL and WebFields.
We will show you how you can use them for pupulating the internal Web fields to show live content, RT editing and printing and of course how to manipulate them to do whatever you like.
6. SetClass - The new Manipulation class for objects, fields and forms.
This is maybe the class that most people have already used and which very quickly give fun results. Both Memo and SetClass is push functionality where DataEase traditionally has been pull. What does this mean? It means that you manipulate objects with functions instead of the function resulting in a return value. With SetClass you can push values into fields, hide/show all objects, change colours and style, set focus and much much more. In combination they give you complete control on how your form is going to look and how the user is going to enter data into it.... Isn't that something you always wanted to be able to control a little more than tab order?
7. ExecDQLClass - DQL Everywhere as interpretive functions.
Nothing is more annoying than running a DQL in traditional DFW. It is awkward to make, it is awkward to maintain, it always get a body if you use List records and it flickers and run slowly when you fire it. Since it is a separate document too, it will be opened and fired as a "report" and seamless is not the first word that comes to mind.
In 7.2 we tried to fix it so you could run a DQL without all this rigmarole but as we dug into it we found that it was worse than we could even imagine. If you removed the flashing and the body it simply wouldn't work! When DE8 development was well underway we decided to revisit this and since we had rebuilt DQL for DG3 we realised that we could simply steal DG3 DQL and insert that into DFW.
Secondly we didn't want to have the rigmarole of "documents", we wanted it as a function because then you can call it from anywhere, and way did we strike gold! I never thought I was going to say this but the original architecture of DFW is absolutely brilliant, it is the poor finishing and maintenance that have let it down.When you have gotten deep into it to understand it, you can suddenly do anything! Our ExecDQL implementation was even more successful and flexible than we had ever dreamt of.
With ExecDQL you get two contexts.One is the data cursor set by the multiview generated by the For/with/any/ in the DQL and the second is the GUI context of the Form from which you call it. A completely new and novel approach that takes some time to get your head around.
Now you can all a DQL from a field or a button just to update a status, or you can move data around at a lightning speed simply by the change of a status or a move of the mouse. The funny bit starts when you use a DQL to manipulate the look of a form. In the Workshop we will show you how to and you will be astounded ;-). Since updating the form/record from whence it is called would cause a data restriction error, you don't! You simply push the values into the fields with SetValue() directly from the DQL...
The combination of SetClass(), MemoClass() and ExecDQLClass() give you power you never even dreamt of in your wildest dreams, and we will show you how!
ExecDQL... just a short name but a big difference. DQL is completely misunderstood in traditional DFW. Someone even called it "Advanced Report". What b...ocks! If you look in DFD it is called Advanced Procedures, and that is what it is. Procedure not report!
8. FileClass - Creating, reading and writing files with Memo and Field functions.
This is the complimentary class of MemoClass but instead of manipulating a Memo you do the same to a file. You can insert/overwrite/append to any text file and it is brilliant way to create export files/XML files etc.
This is just something that should have been there ages ago.I can't really get excited about it because it is like bread and butter, the only problem is that we haven't had it before (yes, some CDFs but that is not how it should be done). What is exciting of course is that you have functions for both writing directly or copy from Memo fields. You also have functions to read files back into memo fields of course!
9. "Virtual Forms" and Virtual Fields reinvented with Virtual Memos, Editable Virtual fields etc.
I guess some of you got excited - for a short while at least - when you first came across Live Reports in DFW. The idea is good, but they are simply to inflexible and to awkward. Mostly people use them pre DE8 because forms can't be read only, but what if they can and what if they can be "virtual".
In DE8 you don't really use anything but forms, and this is an idea we have stolen from DG3/the web. It is not the document class that should decide if you can do something or not, it is you!
Now you can use forms as Data-Entry forms for DQL, you can use them as them to present the result of a DQL, you can use them for drill down and reporting and searching and presenting and as forms...;-)
You can hide and show subforms, you can render them read only or switch them back to edit mode. You can use them as pick lists etc. Your imagination is the only restriction!
In 7.x and previous version there is a lot of illogical restrictions. Whey can't a virtual field be editable? Any good reasons? Why can't a Memo field be virtual? Because of the name? I don't know but in DE8 they can all be virtual and they can all be editable.
On of the cool thing with a editable derived field for instance is that it will be derived immediately, but you can change the content (wont be saved of course, but you can save it with a Memo function if you want to...) and you can copy the content simply by marking it....
How many times haven't you been annoyed that you can't copy from a virtual field?
PS! With SetState() you can actually enable a read only field so you can edit it anyway..... what has this DataEase come too?
10. DatePicker() - How to use, and how to utilize.
This too is something that should just have been there ages ago, but for some reason has escaped DataEase until now. It is a function as so much else in DE8 and we will show you how you can use it to manipulate forms, report and drill down.
11. GetCurrent() - Why do we need this, and how do we use it?
This is a complimentary function to the Current command in DE. Current command is ancient and it is not how things are done any more. We don't want to mess with the old stuff, and to add new current commands just doesn't feel right in a modern world. Instead we added a GetCurrent() function that we can expand at will.The first functions it includes is get the current Application Path, The Current Program Path and the Current My Documents path in Windows. We will show you how you can use this to load documents/save documents and make a moveable and dynamic DataEase app.
12. UniqueID() - Finally a safe way of creating unique values.
A lot of functionalities in DataEase is misused or have been used for things they were never intended for. We removed Backup/Restore from the file menu in 8 because it wasn't really backup it was "fix RDRR I cross my fingers". Another feature that has been completely misused is Sequence from. Since the dawn of day it has been used to create unique id's when at the same time it was supposed to create an unbroken sequence to be used for Invoice numbers and the like. Several fixes and improvements later, nobody trust it to do either.
Good database design needs a safe and secure way of creating an unique key, and that is what UniqueID does. It simply give you a 16 character long unique string you can use for your referential integrity, so what about invoice number? Simply use Highest Of and update the record with a ExecDQL and you will never have a problem again in your lifetim.
13. RefreshStatus() and active use of Status forms as part of your application.
New Status form and a new function to make sure they are refreshed when you want to use them. Status forms have been there for a long while, but being slight cryptic and incomprehensible they have been utilized by only a few of you. We will show you how they can be used as an integral part of you app, and how they can be extremely useful.
We will show you how you with the help of them, ExecDQL and MemoClass can create dynamic documentation of your app, how we use them to create a DQL editor directly in DataEase 8 to create ExecDQLs and how we use them to make QuickReports the same way?
You think we are lying don't you?
14. Send() - Configuring SMTP and using Email throughout your application.
We have all been there. Can I send Emails from DataEase? I should be! And there has been a lot of workarounds and jury rigged solutions. Only problem with all of them is that they work the same way as the Document DQL in DFW... not very elegantly and you need manual interaction.
With Send this all change. You can send emails directly from anywhere with simply a function or you can build advanced formatted emails in RT editor, attach files and send formatted emails with as many attachments as you desire. We will show you how and we will also show you how we use it to make a flexible mass mailer that tailor make the email to each recipient.
15. Creating editable documents and printing them With Memos,HTMLEdit and PrintMemo().
This is simply MemoClass in practice. We didn't make these functions for no reason ;-). We will show you how you create templates for letters/emails/invoices/reports etc. in your RT, then populate them automatically with ExecDQL to end up either printing them directly/sending them as emails or simply allow the user to edit/finalise the documents.
Who said that DataEase was only a relational Database?
17. Changing the appearance of your form in realitme with SetColor() and SetStyle(),
You might have thought that you didn't want to manipulate your forms and that you are happy with how DataEase and you made them, but after this session you won't be. We are all used to fields showing up only when certain criteria is satisfied, buttons to change colour when they are activated and buttons only to be activated when they should be pushed.
What about subforms/views that is read-only one minute then editable the other and show it by changing appearance.
Manipulating forms is a must be in modern application design and even though you could have done a lot of it in OML already, most of you haven't because it has simply been to awkward and too risky.
Now you can do it from virtual fields and with ExecDQL() and I am willing to guarantee that this will not increase your percentage of GPFs and lost development time like OML has...
18. How to use the New Console Object for reporting and debugging.
We have introduced a console object in DE8 simply because DE needs it. It serves to distinctly different purposes, you can use it for debugging. Simply send info to the Console as you progress through a Procedure, chain menu or whatever.
But another reason we made it is because you can use to to create text only reports. We will show you how to do this and how useful this little window (black of course) can be when you develop advanced DE8 apps.
19. GetVar()/SetVar() - Finally named global variables in DE, what and how to.
The complete lack of Global Variables in DE is incomprehensible, so luckily third party developers quickly took advantage of the CDF functionality and made array functions that could be used in their place. GetGlobal()/SetGlobal() and GetArray()/SetArray() has been trusted companions in the many years DFW has been around.
However they have distinct weaknesses and it won't do that DataEase has to rely on third party software to do key functionality.
GetVar()/SetVar() and MemoGetGlobal()/MemoSetGlobal() allow you to set unlimited named global variables and pick them back down from anywhere.
One of the key drawbacks with SetArray (10 variables) and SetGlobal(100) was that you had to number the variables and then remember which is which... almost manageable with SetArray but impossible with SetGlobal, and then that they were limited to only 10 and 100.
With SetVar/MemoSetGlobal you can set as many as you like and you can give them memorable names... ;-)
We will show you how these new functions change how you use DataEase.
20. Wait(), the function we have been waiting a long time for.
Stuipd little function, but it changes a lot. In DE8 you have many ways of insuring that functions are fired in order, the one that really guarantee it is using ExecDQL and simply fire the functions in order.... However some times you simply just want to fire to command and make sure that they are fired the way you order them.
For those of you that have used multiple actions, know how difficult it can be since DataEase use Post instead of send to execute functions in GUI.
For instance you want to Save the record, close the form and open another form. How to make sure that the form is actually saved before it is closed?
One such combination that you will be very familiar with after this workshop is: SetValue("DQLNr","501")+wait(0.1)+MemoExecDQL(DQL,"","","","","") ...
This is a wonder string but you won't know why until we meet...
We must rush to cover all of this in one day, but we will try. We will also try to show you how to use the functionality above to navigate your app in "breach" with the traditional pattern. Why Open Related is both brilliant and useless, and how you can build your own functionality that do the same, but give you the flexibility to manipulate the filter.
We will also show you how to open a record and then move to the one before and the one behind, not in the cursor/dataset but in the file...
I think this should be enough to convince you that there is much more to DE8 than what you thought, and I do guarantee you that there is nobody out there that work with DataEase that wont benefit from participating in this workshop however well you master traditional DataEase. In fact you are the one we target for this workshop, because you are the one that will have the most benefit!
Looking forward to seeing you all on the 26th and it is high time that we all met.
Ulrik Jacob Hoegh - Krohn
Published: 29/01/14 - 15:26:57 (Ulrik Jacob Hoegh-Krohn)
New Richer RichText Editor in DE8
The rich text (HTMLEdit) or WYSIWYG editor was one of the first things we implemented in DE8. Backin DFD dataease was very early with implementing an "editor type" functionality with the long: text fields. They were awkward, but they allowed users to ente...
Migrating an app from DFD to DE8 - Do or don't and how...
Our goal with DataEase is not to constantly focus on migrating old apps or pestering old customers with new upgrades. Our goal is to make it easy to develop in DataEase again so that new applications is quick and simple to make.
One of the reasons many u...
NoOffice CRM - Working DE8 Showcase Sample
This is the first of the official Samples that will be shipped with DE8 Classic. The fun thing with our new samples, is that we will keep updating the samples as well as the product. This sample will be further enhanced as we progress, but it should be mo...
DataEase 8 Classic Developer Released Today 31st July
Update 31st July 2013:14:30 BST
DataEase 8 Classic ver 126.96.36.1993 (RC2) became the first full release version of DE8 today at 14:00 BST.
Congratulations to Flora United on their new B2B DG3 Webshop.
Flora United have now for some time been testing their new B2B webshop developed 100% in DG3 and they are now ready to share it with their customers as an alternative venue for doing business with them.
This system has been developed by Spier-IT and Tech...