Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
SQL command.
Message
Information générale
Forum:
Visual FoxPro
Catégorie:
Base de données, Tables, Vues, Index et syntaxe SQL
Titre:
Divers
Thread ID:
00218759
Message ID:
00219086
Vues:
26
I too had never before seen a FOR Counter=1 TO RECCOUNT() loop. There is on way this may be more useful than SCAN..ENDSCAN. If you wanted the loop to proceed through the table (cursor) in record number order without having to remove the ordering of the table before the loop and reattach that ordering after the loop.

>I think you got the answer in the other thread, but just to make sure you understand this:
>
>The reason the RECCOUNT() of Tmp is the RECCOUNT() of WorkDay is that Tmp IS WorkDay with a SET FILTER done to it (by FoxPro 'in the background').
>
>If you write a SQL SELECT command which can be done by FoxPro, 'in the background', simply doing a USE AGAIN, applying a temporary index (because of ORDER BY) and a temporary SET FILTER (because of WHERE condition), that's what FoxPro does. It doesn't create another actual table.
>
>There are a few ways to force FoxPro to make a separate physical table as the result of SQL SELECT. One is to add a field which doesn't exist in the original table. Another is to use the NOFILTER clause available since a certain version (3.0? 5.0?). SQL SELECT is also forced to create a separate physical result table if you're joining more than one table.
>
>A specific suggestion about your code sample below. It's very unorthodox to use a FOR Counter=1 TO RECCOUNT() loop to move through the records of a table. (In fact you're the first person I ever saw do it ... congratulations on the original idea!) The normal way is either:
1) Old-fashioned but occasionally still useful:
>DO WHILE NOT EOF()
>	do stuff
>	SKIP
>ENDDO
>2) Usually better than 1):
>SCAN	&& Implies WHILE NOT EOF()
>	do stuff
>ENDSCAN	&& Does the SKIP automatically
>HTH,
>Rich.
>
>>I have found the problem .
>>
>>When I check the value of reccount() :
>>Select tmp
>>i = reccount()
>>
>>It should be the total record of tmp ,right ?
>>
>>But in fact ,it give me the total record of workday .
>>
>>Do you know why ?
>>
>>>You could do one of several things:
>>>
>>>1.
>>>Select tmp
>>>Locate
>>>Scan
>>>
>>>
>>>>Firstly ,here is the source code :
>>>>
>>>>---------------
>>>>thisform.list2.CLEAR
>>>>
>>>>SELECT wname,wday FROM workday WHERE wday = date() ;
>>>>AND NOT wname="blank" INTO CURSOR tmp
>>>>
>>>>SELECT tmp
>>>>FOR i = 1 to RECCOUNT()
>>>>GO i
>>>>thisform.list2.ADDITEM (tmp.wname)
>>>>endfor
>>>>
>>>>RELEASE tmp
>>>>---------------
>>>>The problem is I can prove that there is no record in tmp ,but when I run the program ,it added 3 item into list2 ! HOW COME ?! It make me crazy .
>>>>Do you have any idea about that ?
Précédent
Suivant
Répondre
Fil
Voir

Click here to load this message in the networking platform