New Sample : ExecDQL, LabelExecDQL, MemoExecDQL Showcased and explained!!!
Not all of us has got to grips with the concept of ExecDQL so we have taken some time to create a simple sample to show you the differences between the different functions and how they can be used.
Take your time to run though it and "steal" some ideas.
The future of DataEase is built around the "freedom" of DQL from the former limitations.
With ExecDQL you can use DQL to manipulate and generate any side of your application and this will be even more powerful in the future versions of Dataease.
Before you begin!
The main importance of this is to remember that it has
NOTHING to do with the DQL that you are used to use other than the syntax of DQL itself.
ExecDQL live outside the paradigm of DQL from DFD and DFW.
ExecDQL is not a document it is a script as text and it can be stored in a field, in a derivation in a memo, in a file or in a lable etc.
You cannot execute a ExecDQL by doing RunProcedure() or DocumentOpen()
If you use RunProcedure() or DocumentOpen() in a ExecDQL it will open a old style DQL and not an execDQL.
An ExecDQL is part of the data and not part of the definition/document hierarchy.
If you have a memo in your form you can execute a DQL written (looked up) in that Memo with the command
MemoExecDQL(FieldName etc) ex. MemoExecDQL(MyDQLMemo etc.
LabelExecDQL("ObjectName") ex LabelExecDQL("MyDQLLabel" etc
FileExecDQL("FileName" ex. FileExecDQl("C:\DQLS\DQL1.TXT" etc.
ExecDQL("DQL script directly") ex. ExecDQL("delete records in MyTable .")
Re:New Sample : ExecDQL, LabelExecDQL, MemoExecDQL Showcased and explained!!!
this is all very nice.
Does it work with "any" as well?
Example
for PERSONAL
with
( Austritt >= data-entry Field1 or
Austritt = blank ) and
Eintritt <= data-entry Field1 and
Freigabe = "J"and
any ZEITMODELL with ( MNR = PERSONAL MNR and Wochentag = Tag )
Sollstunden > 0 ;
list records
MANR : count ;
Name ;
any ERFASSUNG with ( Tag = Field1 and MANR = PERSONAL MANR ) BewegungsartNR ;
any ERFASSUNG Bewegungsart ;
any ERFASSUNG von .
Re:Re:New Sample : ExecDQL, LabelExecDQL, MemoExecDQL Showcased and explained!!!
Of course. You ca do anything you can in "traditional" DQL and then some.
It is however very awkward to include tags that [{any ERFASSUNG with ( Tag = Field1 and MANR = PERSONAL MANR ) BewegungsartNR}]
So the best cause of action is simply to do like this:
define "vBewegungsartNR" text .
define "vBewegungsart" text .
define "vVon" text . -- you can of course define it as any type of variable but as I don't know what they are the safest bet is always text.
for PERSONAL
with
( Austritt >= data-entry Field1 or
Austritt = blank ) and
Eintritt <= data-entry Field1 and
Freigabe = "J"and
any ZEITMODELL with ( MNR = PERSONAL MNR and Wochentag = Tag )
Sollstunden > 0 ;
vBewegungsartNR := any ERFASSUNG with ( Tag = Field1 and MANR = PERSONAL MANR ) BewegungsartNR .
vBewegungsart := any ERFASSUNG Bewegungsart .
vVon := any ERFASSUNG von .
list records
MANR : count ;
Name ;
vBewegungsartNR ;
vBewegungsart ;
vVon .
DQL Body.
.items
[{vBewegungsartNR}] [{vBegungsart}] etc.
.end
WHich is much much neater and easier to deal with.
In ExecDQL 2.0 we have fixed this by adding AS as a new keyword. To be honest, this is something that has been missing for a very long time.
for PERSONAL
with
( Austritt >= data-entry Field1 or
Austritt = blank ) and
Eintritt <= data-entry Field1 and
Freigabe = "J"and
any ZEITMODELL with ( MNR = PERSONAL MNR and Wochentag = Tag )
Sollstunden > 0 ;
list records
MANR : count ;
Name ;
any ERFASSUNG with ( Tag = Field1 and MANR = PERSONAL MANR ) BewegungsartNR AS "vArtNr" ;
any ERFASSUNG Bewegungsart AS "vBeweg" ;
any ERFASSUNG von AS "vVon" .
In ExecDQL 2.0 you will also be able to use "understandable" names on your Data-Entry fields.