lSelectWay = AskNo("Do you want to use SQL-Select solution?") &&.T. && Set to true if you prefer select solution IF m.lSelectWay ltStartTime = DATETIME() LOCAL lcWhere, lcOldANSI lcOldANSI = SET("Ansi") SET ANSI OFF lcWhere = [Styles.Style NOT IN ("F","S","X","D","M", "CD", "PK") ] + ; [and NOT Styles.Style LIKE "%.%"] && [Styles.In_Stock <=1 ] DO CASE CASE m.cact = "A" && Active lcWhere = m.lcWhere + [ and Styles.DisContinu = "A"] CASE m.cact = "I" && Inactive lcWhere = m.lcWhere + [ and Styles.DisContinu = "I"] CASE m.cact = "B" && Both lcWhere = m.lcWhere + [ and Styles.DisContinu IN ("A","I")] ENDCASE USE styles INDEX styles IN 0 && Style USE or_items INDEX or_style, or_items IN 0 && Style, PON + Style USE orders INDEX orders IN 0 && PON LOCAL loThermo, lcClass lcClass = "cusSQLThermo" loThermo = CREATEOBJECT(m.lcClass) && we need visual indication for long select SELECT styles.STYLE as Style, styles.RESERVED AS nReserved, styles.in_stock AS nInStock ; FROM Styles WHERE &lcWhere AND Reserved >= In_Stock INTO CURSOR curStyles readwrite * INDEX ON Style TAG cStyle *!* *!* SELECT PON, Style as cStyle, qty, shiped, can_qty FROM Or_Items ; *!* WHERE Style in (select cStyle FROM curStyles) INTO CURSOR curOr_Items readwrite *!* INDEX ON PON TAG PON *!* INDEX ON cStyle TAG cStyle *!* *!* SELECT PON, Acc, Approved, App_Date FROM Orders ; *!* WHERE PON in (select PON FROM curOr_Items) ; *!* INTO CURSOR curOrders readwrite *!* INDEX ON PON TAG PON *!* *!* SELECT curStyles.cStyle, curStyles.nReserved, curStyles.nInStock, ; *!* SUM(IIF(curOrders.acc = "HOUSE" AND (NOT curOrders.Approved == "" OR NOT curOrders.app_date = {}), ; *!* curOr_items.qty - curor_items.shiped - curor_items.can_qty, 000000000)) AS nHouseOrder ; *!* FROM curStyles INNER JOIN curOr_Items ON curStyles.cStyle = curOr_Items.cStyle ; *!* INNER JOIN curOrders ON curOr_Items.PON = curOrders.PON ; *!* GROUP BY 1,2,3 HAVING (nHouseOrder + nInStock) - nReserved <=0 ; *!* INTO CURSOR dummy READWRITE *!* ** Close unused cursors *!* USE IN curOr_Items *!* USE IN curStyles *!* USE IN curOrders *!* SELECT or_Items.Style, sum(or_items.qty-or_items.shiped-or_items.can_qty) as nHouseOrder ; FROM Or_Items WHERE Or_Items.Style IN (select Style FROM curStyles) ; AND Or_Items.PON + Or_Items.Style IN ; (select PON FROM Orders WHERE orders.acc = "HOUSE" AND (NOT approved == "" OR NOT app_date = {})) ; GROUP BY 1 INTO CURSOR curOr_Items SELECT curStyles.Style FROM curStyles LEFT JOIN curOr_Items ON ; curStyles.Style = curOr_Items.Style ; WHERE (nReserved - nStock) >= NVL(nHouseOrder,0) INTO CURSOR Dummy ; ORDER BY 1 *!* SELECT or_items.Style, SUM(IIF(orders.acc = "HOUSE" AND (NOT approved == "" OR NOT app_date = {}), ; *!* or_items.qty-or_items.shiped-or_items.can_qty, 000000000)) AS nHouseOrder ; *!* FROM orders INNER JOIN Or_Items ON Orders.PON = Or_Items.PON ; *!* WHERE Style in (select Style FROM curStyles) ; *!* GROUP BY 1 INTO CURSOR curTemp READWRITE *!* *!* INDEX ON Style TAG cStyle *!* *!* SELECT curStyles.Style FROM curStyles ; *!* INNER JOIN curTemp ON curStyles.Style = curTemp.Style ; *!* WHERE (nHouseOrder + nInStock) - nReserved <=0 INTO CURSOR Dummy RELEASE loThermo USE IN curStyles USE IN curOr_Items SELECT dummy