>SET ENGINEBEHAVIOR 70 >CREATE CURSOR cTest (God N(4), Mes N(2), MesCrea N(2), Egn C(10)) >INSERT INTO cTest VALUES (2003,11,11,"6504266641") >INSERT INTO cTest VALUES (2003,12,12,"6504266641") >INSERT INTO cTest VALUES (2004, 1, 1,"6504266641") >INSERT INTO cTest VALUES (2004, 2, 2,"6504266641") > > >fld_egn = "6504266641" >from_period = {^2003/05/15} > >SELECT AAAAAAAA.*; >FROM cTest AAAAAAAA; >WHERE AAAAAAAA.Egn == fld_egn AND; > STR(AAAAAAAA.God,4)+STRZERO(AAAAAAAA.Mes,2)+STRZERO(AAAAAAAA.MesCrea,2) IN; > (SELECT MAX(STR(BBBBB.God,4)+STRZERO(BBBBB.Mes,2)+STRZERO(BBBBB.MesCrea,2)); > FROM cTest BBBBB; > WHERE BBBBB.Egn == fld_egn .AND.; > STR(BBBBB.God,4)+STRZERO(BBBBB.Mes,2) == LEFT(DTOS(from_period),6)); >INTO CURSOR cMaxRec READWRITE >BROWSE NORMAL && NOT Correct -> ONE RECORD WITH 2003, 11,11, [6504266641]. I want records for 200505 > >** BUT >SELECT MAX(STR(BBBBB.God,4)+STRZERO(BBBBB.Mes,2)+STRZERO(BBBBB.MesCrea,2)); > FROM cTest BBBBB WHERE BBBBB.Egn == fld_egn .AND.; > STR(BBBBB.God,4)+STRZERO(BBBBB.Mes,2) == LEFT(DTOS(from_period),6); >INTO CURSOR Test1 > >SELECT AAAAAAAA.*; >FROM cTest AAAAAAAA; >WHERE AAAAAAAA.Egn == fld_egn AND; > STR(AAAAAAAA.God,4)+STRZERO(AAAAAAAA.Mes,2)+STRZERO(AAAAAAAA.MesCrea,2) IN; > (SELECT * FROM Test1); >INTO CURSOR cMaxRec READWRITE >BROWSE NORMAL && Correct NO RECORDS > > >SET ENGINEBEHAVIOR 90 > >SELECT AAAAAAAA.*; >FROM cTest AAAAAAAA; >WHERE AAAAAAAA.Egn == fld_egn AND; > STR(AAAAAAAA.God,4)+STRZERO(AAAAAAAA.Mes,2)+STRZERO(AAAAAAAA.MesCrea,2) IN; > (SELECT MAX(STR(BBBBB.God,4)+STRZERO(BBBBB.Mes,2)+STRZERO(BBBBB.MesCrea,2)); > FROM cTest BBBBB; > WHERE BBBBB.Egn == fld_egn .AND.; > STR(BBBBB.God,4)+STRZERO(BBBBB.Mes,2) == LEFT(DTOS(from_period),6)); >INTO CURSOR cMaxRec READWRITE >BROWSE NORMAL && Correct - NO RECORDS > > >FUNCTION STRZERO(lnNumber, lnSigns) >RETURN PADL(TRANSFORM(lnNumber),lnSigns,"0") >>
CLEAR CREATE CURSOR cTest (God N(4), Mes N(2), MesCrea N(2), Egn C(10)) INSERT INTO cTest VALUES (2003,11,11,"6504266641") INSERT INTO cTest VALUES (2003,12,12,"6504266641") INSERT INTO cTest VALUES (2004, 1, 1,"6504266641") INSERT INTO cTest VALUES (2004, 2, 2,"6504266641") fld_egn = "6504266641" from_period = {^2003/05/15} SET ENGINEBEHAVIOR 70 TEST() SET ENGINEBEHAVIOR 80 TEST() SET ENGINEBEHAVIOR 90 TEST() PROCEDURE TEST ? "ENGINEBEHAVIOR",SET("EngineBehavior") selectMax =[SELECT MAX(STR(God,4)+PADL(mes,2,"0")+PADL(MesCrea,2,"0")); FROM cTest WHERE Egn == fld_egn .AND.; STR(God,4)+PADL(mes,2,"0") == LEFT(DTOS(from_period),6)] &selectMax INTO CURSOR Test1 ? _TALLY SELECT *; FROM cTest ; WHERE Egn == fld_egn AND; STR(God,4)+PADL(mes,2,"0")+PADL(MesCrea,2,"0") IN (&selectMax); INTO CURSOR cMaxRec ? _TALLY