Project

General

Profile

recursive_relation_fill_temp.p

test progream - Igor Skornyakov, 03/13/2023 02:27 AM

Download (3.75 KB)

 
1
define temp-table ttEmployee
2
    field cEmployee as character
3
    field cManager  as character
4
    field cManager1  as character initial 'm'
5
    field cAddr     as character initial 'a'
6
    index idxEmployee as unique cEmployee.
7

    
8
define temp-table ttBenefits
9
    field cEmployee as character
10
    field cBenefits as character
11
    index idxEmp cEmployee.
12

    
13
define temp-table ttAddr
14
    field iAddr as int
15
    field cAddr as character
16
    field lHide  as logical
17
    index idxAddr as unique iAddr.    
18

    
19
define temp-table srcEmployee 
20
    field cEmployee as character
21
    field cManager  as character
22
    field iManager  as int
23
    field iAddr     as integer
24
    field lHide     as logical.
25

    
26
define temp-table srcManager 
27
    field iManager  as int
28
    field cManager1  as character
29
    field lHide     as logical.
30

    
31
define temp-table srcBenefits like ttBenefits.
32

    
33
create ttAddr.
34
assign 
35
    ttAddr.iAddr = 1
36
    ttAddr.cAddr = 'Home'
37
    ttAddr.lHide = false.
38

    
39
create ttAddr.
40
assign 
41
    ttAddr.iAddr = 2
42
    ttAddr.cAddr = 'Outerspace'
43
    ttAddr.lHide = false.
44

    
45
create srcManager.
46
assign 
47
    srcManager.cManager  = 'Mustaine2'
48
    srcManager.iManager     = 1
49
    srcManager.lHide = false.
50

    
51
create srcManager.
52
assign 
53
    srcManager.cManager  = 'Mustaine3'
54
    srcManager.iManager     = 2
55
    srcManager.lHide = false.
56

    
57
create srcEmployee.
58
assign 
59
    srcEmployee.cEmployee = 'Dave'
60
    srcEmployee.cManager  = 'Mustaine1'
61
    srcEmployee.iManager  = 2
62
    srcEmployee.iAddr     = 1.
63

    
64
create srcEmployee.
65
assign 
66
    srcEmployee.cEmployee = 'Mustaine1'
67
    srcEmployee.iManager  = 1
68
    srcEmployee.iAddr     = 2
69
    srcEmployee.lHide     = false.
70

    
71
create srcEmployee.
72
assign 
73
    srcEmployee.cEmployee = 'Toto'
74
    srcEmployee.cManager  = 'Mustaine'
75
    srcEmployee.iManager  = 1
76
    srcEmployee.iAddr     = 1
77
    srcEmployee.lHide     = false.
78

    
79
create srcBenefits.
80
assign 
81
    srcBenefits.cEmployee = 'Dave'
82
    srcBenefits.cBenefits = 'Voice training'.
83

    
84
create srcBenefits.
85
assign 
86
    srcBenefits.cEmployee = 'Dave'
87
    srcBenefits.cBenefits = 'Groupies'.
88

    
89
create srcBenefits.
90
assign 
91
    srcBenefits.cEmployee = 'Mustain'
92
    srcBenefits.cBenefits = 'Free beer'.
93

    
94
create srcBenefits.
95
assign 
96
    srcBenefits.cEmployee = 'Mustain1'
97
    srcBenefits.cBenefits = 'Free beer1'.
98

    
99
create srcBenefits.
100
assign 
101
    srcBenefits.cEmployee = 'Mustain2'
102
    srcBenefits.cBenefits = 'Free beer2'.
103

    
104
define dataset myRecurs for ttEmployee, ttBenefits
105
    data-relation r1 for ttEmployee, ttEmployee
106
    relation-fields (cManager, cEmployee) recursive
107
    data-relation r2 for ttEmployee, ttBenefits
108
    relation-fields(cEmployee, cEmployee).
109

    
110
define query qEmp for srcEmployee, srcManager, ttAddr.
111
define query qBen for srcBenefits.
112

    
113
define data-source dsEmployee for query qEmp srcEmployee, srcManager, ttAddr.
114
define data-source dsBen for query qBen srcBenefits.
115

    
116
buffer ttEmployee:attach-data-source(data-source dsEmployee:HANDLE).
117
buffer ttBenefits:attach-data-source(data-source dsBen:HANDLE).
118

    
119
query qEmp:query-prepare("for each srcEmployee where cEmployee = 'Dave' and srcEmployee.lHide = false, " + 
120
                         "each srcManager where srcManager.lHide = false and srcManager.iManager = srcEmployee.iManager, " +
121
                         "each ttAddr where ttAddr.lHide = false and ttAddr.iAddr = srcEmployee.iAddr").
122
//query qEmp:query-prepare("for each srcEmployee where cManager = 'Mustain'").
123

    
124
query qBen:query-prepare("for each srcBenefits").
125

    
126
OUTPUT TO recursive_relation_fill_tmp.txt. 
127
dataset myRecurs:fill().
128

    
129
//dataset myRecurs:fill().
130

    
131
for each  ttEmployee:
132
    message ttEmployee.cEmployee ttEmployee.cManager ttEmployee.cManager1 ttEmployee.cAddr.
133
    for each ttBenefits where ttBenefits.cEmployee = ttEmployee.cEmployee:
134
        message ttEmployee.cEmployee '->' ttBenefits.cBenefits. 
135
    end.
136
end.
137
OUTPUT CLOSE.