Information générale
Catégorie:
Base de données, Tables, Vues, Index et syntaxe SQL
Versions des environnements
Thanks, Sergey.
This one had us all stumped for awhile.
>It's behavior change to make VFP 9.0 SQL more ANSI SQL Standard compliant. It's documented in in SET ENGINEBEHAVIOR help topic: "When using aggregate functions, such as MAX( ), in the SQL SELECT command without a GROUP BY clause, and no matching records are found, Visual FoxPro returns a result set with a single record and _TALLY set to 1. In versions prior to Visual FoxPro 9.0, no records are returned, and _TALLY is set to 0".
>
>Creating of an array in the first your example is a side effect of the above change.
>
>>Upon further investigation, I have discovered that the problem with SQL Select and arrays only occurs when using a function is the Select statement.
>>
>>Run the following code in VFP 9.0:
>>
>>SET ENGINEBEHAVIOR 90
>>
>>CREATE CURSOR test (KY i)
>>SELECT MAX(KY) FROM test INTO ARRAY laTest
>>
>>debug
>>SUSPEND
>>
>>Examine the contents of laTest in the Locals window. The result will be null. Now run this code:
>>
>>SET ENGINEBEHAVIOR 80
>>
>>CREATE CURSOR test (KY i)
>>SELECT MAX(ky) FROM test INTO ARRAY laTest
>>
>>debug
>>SUSPEND
>>
>>The array is not created.
>>
>>Now run the following:
>>
>>SET ENGINEBEHAVIOR 90
>>
>>CREATE CURSOR test (ky i)
>>SELECT ky FROM test INTO ARRAY laTest
>>
>>debug
>>SUSPEND
>>
>>The array is not created.
Précédent
Suivant
Répondre
Voir le fil de ce thread
Voir le fil de ce thread à partir de ce message seulement
Voir tous les messages de ce thread
Voir tous les messages de ce thread à partir de ce message seulement