CREATE CURSOR Agenda ( iid I , ddate D(8) , itraiterId I , nstock N(8,2) ) INSERT INTO Traiter ( iid , nstock ) VALUES ( 1 , 14.25 ) INSERT INTO Traiter ( iid , nstock ) VALUES ( 2 , 4.25 ) INSERT INTO Traiter ( iid , nstock ) VALUES ( 3 , 0 ) INSERT INTO Agenda ( iid , ddate, itraiterId ) VALUES ( 1 , DATE() , 2) INSERT INTO Agenda (iid , ddate, itraiterId ) VALUES ( 2 , DATE() , 3 ) INSERT INTO Agenda (iid , ddate, itraiterId ) VALUES ( 3 , DATE() , 1 ) INSERT INTO Agenda ( iid , ddate, itraiterId ) VALUES (4 , DATE() , 2) INSERT INTO Agenda ( iid , ddate, itraiterId ) VALUES (5 , DATE()-1 , 2) vp_date = DATE() * Step 1. Get Stock for the latest previous date SELECT Ag.iID, Ag.iTraiterID, Prev.nStock FROM Agenda ag ; inner join (select iTraiterID, max(dDate) as PrevDate ; from Agenda where dDate < vp_Date group by 1) Prev ; on Ag.iTraiterID = Prev.iTraiterID ; and Ag.dDate = vp_Date INTO CURSOR SqlOut * Create records to update SELECT T.iId, NVL(SqlOut.nStock,T.nStock) as nStock ; FROM Traiter t LEFT JOIN SqlOut ON T.iId = SqlOut.iTraiterID ; INTO CURSOR curUpdate ** Update records update agenda set nStock = curUpdate.nStock ; from Agenda inner join curUpdate on Agenda.iTraiterID = curUpdate.iID where Agenda.dDate = vp_DateI did it in multiple steps for clarity and I could not really test it without VFP9.
> >>>>>AGENDA.DBF >>>>>*--- NAME MEDICAMENT DATE CONSOMMATION STOCK >>>>>Ex : MILCENT bernhart TEMESTA 2.5 14/03/2007 1 50 ( Before ) >>>>>MILCENT bernhart TEMESTA 2.5 15/03/2007 1 49 ( Before ) >>>>> >>>>>TRAITER.DBF STOCK ( BEGINNING ) >>>>>IRESIDENTID 50 >>>>>>>>>