ID: Q117265
2.5x 2.6x | 2.5x 2.6x
WINDOWS | MS-DOS
kbprg kbfixlist kbbuglist
The information in this article applies to:
Using the RECCOUNT() or DBF() functions against a cursor returns information pertinent to the source data file instead of the currently selected cursor.
If a WHERE clause is used that references a field that is used as a key field in a .CDX index tag, the DBF() and RECCOUNT() functions will return data about the source data file instead of the cursor. This is because, in this case, the SQL-SELECT performs a SET FILTER on the current table, and returns the filtered information. Use the _TALLY variable to return the number of records processed by the SQL-SELECT command.
Microsoft has confirmed this to be a problem in the Microsoft products listed at the beginning of this article. This problem was corrected in Visual FoxPro 3.0 for Windows.
This behavior will occur regardless of the status of the SET ORDER command. However, this behavior does NOT occur under Microsoft Windows NT.
In the steps below, you will be using the CUSTOMER database (which contains 500 records) in the TUTORIAL subdirectory. Make certain that the .CDX file is active, and that it includes a tag built on CNO.
1. In the Command window, issue the following commands:
CLEAR ALL
USE <FoxPro_directory>\tutorial\customer.dbf
SELECT * FROM customer WHERE customer.cno = 'A'
Note that 29 records are selected.
2. In the Command window, issue the following command:
? DBF()
Note that it returns the name of the source file, not the temporary
cursor name.
3. In the Command window, issue the following command:
? RECCOUNT()
Note that the RECCOUNT() of the source file, not the cursor, is returned.
Note also that the status bar shows 500 records in the cursor even though
the SELECT command reported that only 29 records were selected.
For comparison, do the following:
1. In the Command window, issue the following command:
CLEAR ALL
2. Remove the tag on the CNO field.
3. Repeat steps 1-3 above, but change the SELECT statement to:
SELECT * FROM customer WHERE customer.cno = 'A'
Note that the SELECT statement returns 29 records, ? DBF() returns the name
of the temporary file (cursor), and ? RECCOUNT() returns 29.
Additional reference words: VFoxWin fixlist3.00 FoxDos FoxWin 2.50 2.50a 2.50b 2.60 2.60a buglist2.50 buglist2.50a buglist2.50b buglist2.60 buglist2.60a KBCategory: kbprg kbbuglist KBSubcategory: FxprgGeneral
Keywords : FxprgGeneral kbbuglist
Version : 2.5x 2.6x | 2.5x 2.6x
Platform : MS-DOS WINDOWS
Solution Type : kbfix
Last Reviewed: October 22, 1997