SELECT iCaseFrom, iCaseTo, iItemID, bQty ; FROM sPackingListItems ; WHERE sPackingListItems.iPID = THISFORM.iID ; ORDER BY iCaseFrom, iCaseTo, iItemID ; INTO CURSOR crsTemp CREATE CURSOR crsResult (iCaseNo i, iItemID i, bQty b) LOCAL ARRAY arrRecs[Floor(65000 / 3), 3] LOCAL lnRec, iX, liForCases lnRec = 0 SELECT crsTemp SCAN liForCases = CEILING(crsTemp.iCaseTo / crsTemp.iCaseFrom) FOR iX = crsTemp.iCaseFrom TO crsTemp.iCaseTo lnRec = lnRec + 1 arrRecs[lnRec,1] = iX arrRecs[lnRec,2] = crsTemp.iItemID arrRecs[lnRec,3] = CEILING(crsTemp.bQty / liForCases) IF lnRec >= FLOOR(65000 / 3) INSERT INTO crsResult FROM ARRAY arrRecs lnRec = 0 ENDIF ENDFOR ENDSCAN DIMENSION arrRecs[lnRec, 3] INSERT INTO crsResult FROM ARRAY arrRecs USE IN 'crsTemp' SELECT crsResult BROWS