BobyIsProgress
Member
Hi,
OS: Windows 2012 r2
Openedge 10.02B
I want to optimize my browse widget open-query trigger.
My case is has followed. I make an app to follow and valid some reception of orders thats was made by our users.
So my user with this app should see there ordre and can valid the reception of thus.
I have two steps of filters:
1. the status of the orders: open, closef, all the order. (my first "If") (variable iCdStat -> 1,2,3)
2. some filter for the by of my query: by order date (acddat), by order Id (acdnum) or by user (dpeutidem) (variable iCdTri -> 1,2,3) :
this is my code:
So my question is: Is the "case" structure more suitable in words of efficiency or the "if" structure.
Of course I'm open to all over observation about my code. I'm willing to progress .
Thank you in advance and Best regards
OS: Windows 2012 r2
Openedge 10.02B
I want to optimize my browse widget open-query trigger.
My case is has followed. I make an app to follow and valid some reception of orders thats was made by our users.
So my user with this app should see there ordre and can valid the reception of thus.
I have two steps of filters:
1. the status of the orders: open, closef, all the order. (my first "If") (variable iCdStat -> 1,2,3)
2. some filter for the by of my query: by order date (acddat), by order Id (acdnum) or by user (dpeutidem) (variable iCdTri -> 1,2,3) :
this is my code:
Code:
IF iCdStat = 3 THEN DO: /* All Orders */
IF iCdTri = 1 THEN /* by Date */
OPEN QUERY {&SELF-NAME} FOR EACH SACEBA WHERE SACEBA.stecod = c-stecod
AND SACEBA.acddat >= dDatDeb
AND SACEBA.acddat <= dDatFin NO-LOCK USE-INDEX SACEBAI04,
FIRST SACDPE WHERE SACDPE.stecod = c-stecod
AND SACDPE.acddemnum = SACEBA.acddemnum
AND SACDPE.dpeutidem = (IF lAdmin THEN SACDPE.dpeutidem ELSE c-uticod) NO-LOCK USE-INDEX SACDPEI02,
FIRST VAFDAI OUTER-JOIN WHERE VAFDAI.danum = SACDPE.acddemnum NO-LOCK
BY SACEBA.acddat DESCENDING.
ELSE IF iCdtri = 2 THEN /* By order Id */
OPEN QUERY {&SELF-NAME} FOR EACH SACEBA WHERE SACEBA.stecod = c-stecod
AND SACEBA.acddat >= dDatDeb
AND SACEBA.acddat <= dDatFin NO-LOCK USE-INDEX SACEBAI04,
FIRST SACDPE WHERE SACDPE.stecod = c-stecod
AND SACDPE.acddemnum = SACEBA.acddemnum
AND SACDPE.dpeutidem = (IF lAdmin THEN SACDPE.dpeutidem ELSE c-uticod) NO-LOCK USE-INDEX SACDPEI02,
FIRST VAFDAI OUTER-JOIN WHERE VAFDAI.danum = SACDPE.acddemnum NO-LOCK
BY SACEBA.acdnum .
ELSE /* By User */
OPEN QUERY {&SELF-NAME} FOR EACH SACEBA WHERE SACEBA.stecod = c-stecod
AND SACEBA.acddat >= dDatDeb
AND SACEBA.acddat <= dDatFin
AND SACEBA.acdetat = lEtaCde NO-LOCK USE-INDEX SACEBAI04,
FIRST SACDPE WHERE SACDPE.stecod = c-stecod
AND SACDPE.acddemnum = SACEBA.acddemnum
AND SACDPE.dpeutidem = (IF lAdmin THEN SACDPE.dpeutidem ELSE c-uticod) NO-LOCK USE-INDEX SACDPEI02,
FIRST VAFDAI OUTER-JOIN WHERE VAFDAI.danum = SACDPE.acddemnum NO-LOCK
BY SACDPE.dpeutidem .
END.
ELSE IF iCdStat = 2 THEN DO: /* Order Closed */
IF iCdTri = 1 THEN /* By Date */
OPEN QUERY {&SELF-NAME} FOR EACH SACEBA WHERE SACEBA.stecod = c-stecod
AND SACEBA.acddat >= dDatDeb
AND SACEBA.acddat <= dDatFin
AND SACEBA.acdetat = lEtaCde NO-LOCK USE-INDEX SACEBAI04,
FIRST SACDPE WHERE SACDPE.stecod = c-stecod
AND SACDPE.acddemnum = SACEBA.acddemnum
AND SACDPE.dpeutidem = (IF lAdmin THEN SACDPE.dpeutidem ELSE c-uticod) NO-LOCK USE-INDEX SACDPEI02,
FIRST VAFDAI OUTER-JOIN WHERE VAFDAI.danum = SACDPE.acddemnum NO-LOCK
BY SACEBA.acddat DESCENDING.
ELSE IF iCdTri = 2 THEN /* by Order Id */
OPEN QUERY {&SELF-NAME} FOR EACH SACEBA WHERE SACEBA.stecod = c-stecod
AND SACEBA.acddat >= dDatDeb
AND SACEBA.acddat <= dDatFin
AND SACEBA.acdetat = lEtaCde NO-LOCK USE-INDEX SACEBAI04,
FIRST SACDPE WHERE SACDPE.stecod = c-stecod
AND SACDPE.acddemnum = SACEBA.acddemnum
AND SACDPE.dpeutidem = (IF lAdmin THEN SACDPE.dpeutidem ELSE c-uticod) NO-LOCK USE-INDEX SACDPEI02,
FIRST VAFDAI OUTER-JOIN WHERE VAFDAI.danum = SACDPE.acddemnum NO-LOCK
BY SACEBA.acdnum .
ELSE /* By User */
OPEN QUERY {&SELF-NAME} FOR EACH SACEBA WHERE SACEBA.stecod = c-stecod
AND SACEBA.acddat >= dDatDeb
AND SACEBA.acddat <= dDatFin
AND SACEBA.acdetat = lEtaCde NO-LOCK USE-INDEX SACEBAI04,
FIRST SACDPE WHERE SACDPE.stecod = c-stecod
AND SACDPE.acddemnum = SACEBA.acddemnum
AND SACDPE.dpeutidem = (IF lAdmin THEN SACDPE.dpeutidem ELSE c-uticod) NO-LOCK USE-INDEX SACDPEI02,
FIRST VAFDAI OUTER-JOIN WHERE VAFDAI.danum = SACDPE.acddemnum NO-LOCK
BY SACDPE.dpeutidem .
END.
ELSE DO: /* Order open */
IF iCdTri = 1 THEN /* By Date */
OPEN QUERY {&SELF-NAME} FOR EACH SACEBA WHERE SACEBA.stecod = c-stecod
AND SACEBA.acddat = SACEBA.acddat
AND SACEBA.acdetat = lEtaCde NO-LOCK USE-INDEX SACEBAI04,
FIRST SACDPE WHERE SACDPE.stecod = c-stecod
AND SACDPE.acddemnum = SACEBA.acddemnum
AND SACDPE.dpeutidem = (IF lAdmin THEN SACDPE.dpeutidem ELSE c-uticod) NO-LOCK USE-INDEX SACDPEI02,
FIRST VAFDAI OUTER-JOIN WHERE VAFDAI.danum = SACDPE.acddemnum NO-LOCK
BY SACEBA.acddat DESCENDING.
ELSE IF iCdTri = 2 THEN /* by Order Id */
OPEN QUERY {&SELF-NAME} FOR EACH SACEBA WHERE SACEBA.stecod = c-stecod
AND SACEBA.acddat = SACEBA.acddat
AND SACEBA.acdetat = lEtaCde NO-LOCK USE-INDEX SACEBAI04,
FIRST SACDPE WHERE SACDPE.stecod = c-stecod
AND SACDPE.acddemnum = SACEBA.acddemnum
AND SACDPE.dpeutidem = (IF lAdmin THEN SACDPE.dpeutidem ELSE c-uticod) NO-LOCK USE-INDEX SACDPEI02,
FIRST VAFDAI OUTER-JOIN WHERE VAFDAI.danum = SACDPE.acddemnum NO-LOCK
BY SACEBA.acdnum .
ELSE /* By User */
OPEN QUERY {&SELF-NAME} FOR EACH SACEBA WHERE SACEBA.stecod = c-stecod
AND SACEBA.acddat = SACEBA.acddat
AND SACEBA.acdetat = lEtaCde NO-LOCK USE-INDEX SACEBAI04,
FIRST SACDPE WHERE SACDPE.stecod = c-stecod
AND SACDPE.acddemnum = SACEBA.acddemnum
AND SACDPE.dpeutidem = (IF lAdmin THEN SACDPE.dpeutidem ELSE c-uticod) NO-LOCK USE-INDEX SACDPEI02,
FIRST VAFDAI OUTER-JOIN WHERE VAFDAI.danum = SACDPE.acddemnum NO-LOCK
BY SACDPE.dpeutidem .
END.
So my question is: Is the "case" structure more suitable in words of efficiency or the "if" structure.
Of course I'm open to all over observation about my code. I'm willing to progress .
Thank you in advance and Best regards