FIX: SQL SELECT Can Cause Extra Output

Last reviewed: October 14, 1997
Article ID: Q106279
2.50    | 2.50
WINDOWS | MS-DOS kbprg kbfixlist kbbuglist

The information in this article applies to:

  • Microsoft FoxPro for Windows, version 2.5
  • Microsoft FoxPro for MS-DOS, version 2.5

SYMPTOMS

Under certain circumstances, a Structured Query Language (SQL) SELECT command can return extra output.

NOTE: This problem does not occur on all hardware.

STATUS

Microsoft has confirmed this to be a problem in FoxPro 2.5 for MS-DOS and FoxPro 2.5 for Windows. This problem was corrected in FoxPro 2.5a for MS-DOS and FoxPro 2.5a for Windows.

MORE INFORMATION

Steps to Reproduce Problem

Create and run a program with the following code:

   * Create A_FILE, B_FILE, and A_B_XREF, which is an x-ref file that
   * sets up a many-to-many relationship between A_FILE and B_FILE.
   CREATE TABLE a_file    (;
      a_code     C(1),      ;
      a_name     C(10)     )

   CREATE TABLE a_b_xref  (;
      a_code     C(1),      ;
      b_code     C(1)      )

   CREATE TABLE b_file    (;
      b_code     C(1),      ;
      b_name     C(10)     )

   CLOSE DATABASES

   * Note that some of the A_CODE values are in
   * the nonprintable range below ASCII code 32.
   INSERT INTO a_file VALUES(CHR(29),"A_NAME a29")
   INSERT INTO a_file VALUES(CHR(30),"A_NAME a30")
   INSERT INTO a_file VALUES(CHR(31),"A_NAME a31")
   INSERT INTO a_file VALUES(CHR(32),"A_NAME a32")
   INSERT INTO a_file VALUES(CHR(33),"A_NAME a33")

   INSERT INTO a_b_xref VALUES(CHR(30),"1")
   INSERT INTO a_b_xref VALUES(CHR(31),"1")
   INSERT INTO a_b_xref VALUES(CHR(29),"2")
   INSERT INTO a_b_xref VALUES(CHR(32),"2")
   INSERT INTO a_b_xref VALUES(CHR(33),"2")

   INSERT INTO b_file VALUES("1","B_NAME 1")
   INSERT INTO b_file VALUES("2","B_NAME 2")

   CLOSE DATABASES

   * Index fields
   SELECT 0
   USE a_file
   INDEX ON a_code TAG a_code
   INDEX ON a_name TAG a_name
   USE

   SELECT 0
   USE a_b_xref
   INDEX ON a_code TAG a_code
   INDEX ON b_code TAG b_code
   USE

   SELECT 0
   USE b_file
   INDEX ON b_code TAG b_code
   INDEX ON b_name TAG b_name
   USE

   SELECT ;
      DISTINCT ;
      a_file.a_name,b_file.b_name ;
      FROM a_file,a_b_xref,b_file ;
      WHERE a_file.a_code==a_b_xref.a_code AND ;
      b_file.b_code==a_b_xref.b_code AND ;
      b_file.b_name="B_NAME 1"

This program displays a Browse window containing three records. It should display only two records.


Additional reference words: FoxDos FoxWin 2.50 buglist2.50 fixlist2.50a
KBCategory: kbprg kbfixlist kbbuglist
KBSubcategory: FxprgSql
Solution Type : kbfix


THE INFORMATION PROVIDED IN THE MICROSOFT KNOWLEDGE BASE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. MICROSOFT DISCLAIMS ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING THE WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL MICROSOFT CORPORATION OR ITS SUPPLIERS BE LIABLE FOR ANY DAMAGES WHATSOEVER INCLUDING DIRECT, INDIRECT, INCIDENTAL, CONSEQUENTIAL, LOSS OF BUSINESS PROFITS OR SPECIAL DAMAGES, EVEN IF MICROSOFT CORPORATION OR ITS SUPPLIERS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES SO THE FOREGOING LIMITATION MAY NOT APPLY.

Last reviewed: October 14, 1997
© 1998 Microsoft Corporation. All rights reserved. Terms of Use.