Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Why this query gives me different results?
Message
 
To
06/10/2005 09:19:09
General information
Forum:
Visual FoxPro
Category:
Databases,Tables, Views, Indexing and SQL syntax
Environment versions
Visual FoxPro:
VFP 9
OS:
Windows XP SP2
Network:
Windows XP
Database:
Visual FoxPro
Miscellaneous
Thread ID:
01056683
Message ID:
01056718
Views:
30
Thank you Fabio,
I hope in SP1 this will be fixed. Should I report it to MS or you already did it?


>>Same query different SET ENGINEBEHAVIOUR:
>>
>>
>>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")
>>
>>
>>What is that?
>
>A bug not fixed on VFP9,
>the new VFP9 behaviour ( look the MAX() 1 NULL records returned )
>fix the bug indirectly
>
>
>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
>
Against Stupidity the Gods themselves Contend in Vain - Johann Christoph Friedrich von Schiller
The only thing normal about database guys is their tables.
Previous
Next
Reply
Map
View

Click here to load this message in the networking platform