| 1 | Function ReturnNewTreeCrit(&InTreeCrit As string) Returns string |
|---|
| 2 | |
|---|
| 3 | Local array of string &TreeCritSegments; |
|---|
| 4 | Local string &NewEffDt; |
|---|
| 5 | Local number &k; |
|---|
| 6 | Local string &NewTreeCrit; |
|---|
| 7 | |
|---|
| 8 | &TreeCritSegments = Split(&InTreeCrit, ","); |
|---|
| 9 | |
|---|
| 10 | SQLExec("select max(a.effdt) from pstreedefn a where a.setid = :1 and a.setcntrlvalue = :2 and a.tree_name = :3 and a.effdt <= %currentdatein", &TreeCritSegments [1], &TreeCritSegments [2], &TreeCritSegments [3], &NewEffDt); |
|---|
| 11 | |
|---|
| 12 | For &k = 1 To &TreeCritSegments.Len |
|---|
| 13 | |
|---|
| 14 | If &k > 1 Then |
|---|
| 15 | If &k = 4 Then |
|---|
| 16 | &NewTreeCrit = &NewTreeCrit | "," | &NewEffDt; |
|---|
| 17 | Else |
|---|
| 18 | &NewTreeCrit = &NewTreeCrit | "," | &TreeCritSegments [&k]; |
|---|
| 19 | End-If; |
|---|
| 20 | Else |
|---|
| 21 | &NewTreeCrit = &TreeCritSegments [&k]; |
|---|
| 22 | End-If; |
|---|
| 23 | End-For; |
|---|
| 24 | |
|---|
| 25 | Return &NewTreeCrit; |
|---|
| 26 | |
|---|
| 27 | End-Function; |
|---|
| 28 | |
|---|
| 29 | Function ProcessCriterion(&CriteriaObj As ApiObject, &j As number) |
|---|
| 30 | |
|---|
| 31 | Local string &NewTreeCrit; |
|---|
| 32 | |
|---|
| 33 | If &CriteriaObj.expr1type = 2 Then |
|---|
| 34 | rem Field criteria; |
|---|
| 35 | If &CriteriaObj.expr1field.name = Field.DEPTID Then |
|---|
| 36 | Warning ("Criterion Field #" | &j | " = " | &CriteriaObj.expr1field.name); |
|---|
| 37 | If &CriteriaObj.operator = %Query_CondInTree Then |
|---|
| 38 | Warning ("In Tree Criteria exists"); |
|---|
| 39 | Warning (&CriteriaObj.expr2constant1); |
|---|
| 40 | &NewTreeCrit = ReturnNewTreeCrit(&CriteriaObj.expr2constant1); |
|---|
| 41 | Warning ("Updating new Tree Criterion = " | &NewTreeCrit); |
|---|
| 42 | &CriteriaObj.expr2constant1 = &NewTreeCrit; |
|---|
| 43 | Else |
|---|
| 44 | Warning ("Other type of Criteria"); |
|---|
| 45 | End-If; |
|---|
| 46 | End-If; |
|---|
| 47 | End-If; |
|---|
| 48 | |
|---|
| 49 | End-Function; |
|---|
| 50 | |
|---|
| 51 | Local ApiObject &MyQuery, &MySession, &CriteriaCollection; |
|---|
| 52 | Local ApiObject &CurrentCriteria; |
|---|
| 53 | Local string &QryToProcess; |
|---|
| 54 | Local number &i; |
|---|
| 55 | |
|---|
| 56 | &MySession = %Session; |
|---|
| 57 | |
|---|
| 58 | If &MySession <> Null Then |
|---|
| 59 | |
|---|
| 60 | &MyQuery = &MySession.getquery(); |
|---|
| 61 | |
|---|
| 62 | Local SQL &sqlGetQueries = CreateSQL("select QRYNAME from PSQRYDEFN where QRYNAME like 'GS%'"); |
|---|
| 63 | While &sqlGetQueries.Fetch(&QryToProcess) |
|---|
| 64 | |
|---|
| 65 | &MyQuery.open(&QryToProcess, True, True); |
|---|
| 66 | |
|---|
| 67 | Warning ("Just Opened Query " | &MyQuery.name | ", " | &MyQuery.description); |
|---|
| 68 | |
|---|
| 69 | &CriteriaCollection = &MyQuery.queryselect.criteria; |
|---|
| 70 | |
|---|
| 71 | For &i = 1 To &CriteriaCollection.count; |
|---|
| 72 | |
|---|
| 73 | ProcessCriterion(&CriteriaCollection.item(&i), &i); |
|---|
| 74 | |
|---|
| 75 | End-For; |
|---|
| 76 | |
|---|
| 77 | &MyQuery.save(); |
|---|
| 78 | &MyQuery.close(); |
|---|
| 79 | |
|---|
| 80 | End-While; |
|---|
| 81 | |
|---|
| 82 | End-If; |
|---|