>* get the orders from free table - rejects.dbf >SELECT * FROM rejects ; >WHERE daterecv BETWEEN StartDate AND EndDate ; >ORDER BY vendorname, daterecv ; >INTO CURSOR OrderRejects > >* create a VendorPerfomance table to hold the report values >CREATE CURSOR VendorPerf(VendorID c(5), VenName c(25), NumReceipts I, QtyRecv N(10), QtyRej N(6), PerRej N(4,2), OnTime I) > >SELECT OrderRejects > >DO WHILE !eof() > Vendor = OrderRejects.vendorname > VenID = OrderRejects.VendorID > NumRect = 0 > RecvQty = 0 > RejQty = 0 > OT = 0 > DO WHILE Vendor = OrderRejects.vendorname > NumRect = NumRect + 1 > RecvQty = OrderRejects.qtyrecv + RecvQty > RejQty = OrderRejects.qtyrej + RejQty > PerRej = Round((RejQty/RecvQty)*100,2) && need help here... > SELECT OrderMaster > SET KEY TO OrderRejects.OrderNum > LOCATE FOR LINNUM_10 = OrderRejects.LineNum and ; > DELNUM_10 = OrderRejects.DelNum > SELECT OrderRejects > SKIP > ENDDO > INSERT INTO VendorPerf(VendorID,VenName,NumReceipts,QtyRecv,QtyRej,PerRej,OnTime) ; > VALUES (VenID,Vendor,NumRect,RecvQty,RejQty,PerRej,OT) >ENDDO >>
* create a VendorPerfomance table to hold the report values CREATE CURSOR VendorPerf (VendorID c(5), VenName c(25), NumReceipts I, QtyRecv N(10), QtyRej N(6), PerRej N(4,2), OnTime I) SELECT ; vendorname,; vendorID,; cnt(*) as numRect, ; sum(qtyrej) as rejQty, ; sum(qtyrecv) as recvQty ; FROM rejects ; WHERE daterecv BETWEEN StartDate AND EndDate ; GROUP BY 1,2 ; ORDER BY 1 ; INTO CURSOR OrderRejects scan INSERT INTO VendorPerf ; (VendorID,VenName,NumReceipts,QtyRecv,QtyRej,PerRej,OnTime) ; VALUES ; (OrderRejects.VendorID,; OrderRejects.VendorName,; OrderRejects.NumRect,; OrderRejects.RecvQty,; OrderRejects.RejQty,; ROUND(OrderRejects.RejQty/OrderRejects.RecvQty*100,2),0) endscanor:
SELECT ; vendorID as VenID,; vendorname,; cnt(*) as numReceipts, ; sum(qtyrej) as QtyRej, ; sum(qtyrecv) as QtyRecv ; FROM rejects ; WHERE daterecv BETWEEN StartDate AND EndDate ; GROUP BY 1,2 ; ORDER BY 1 ; INTO CURSOR OrderRejects SELECT *, ; ROUND(QtyRej/QtyRecv*100,2) as PerRej,; 0 as Ontime ; FROM OrderRejects ; INTO CURSOR VendorPerfHowever VendorPerf cursor might never be needed for a report and calculation could be done directly on report.