PRB: "Variable Not Found" Error Occurs with Filter Expression

Last reviewed: June 27, 1995
Article ID: Q119898
The information in this article applies to:
  • Microsoft FoxPro for MS-DOS, versions 2.00, 2.5x, 2.6, 2.6a
  • Microsoft FoxPro for Windows, versions 2.5x, 2.6, 2.6a
  • Microsoft FoxPro for Macintosh, versions 2.5x
  • Microsoft FoxPro for UNIX, version 2.6

SYMPTOMS

When you are performing a SEEK, a LOCATE, or a FIND, the following error message occurs:

   Variable '<variable name>' not found.

CAUSE

A filter expression has been set, and it uses the variable that can no longer be found. When the filter expression is reevaluated during the search, FoxPro reports that the variable cannot be found.

RESOLUTION

While every case is likely to be different, the problem illustrated below could be resolved in one of the following ways:

  1. Make the variable used in the filter expression PUBLIC.

    NOTE: Verify that the code does not contain a PRIVATE command that makes the variable in question private.

    -or-

  2. Change the SetFilter procedure to the following:

          PROCEDURE SetFilter
          PARAMETER x
          cExpr = 'state ="'+ x + '"'
          SET FILTER TO &cExpr
    

In the second case, the use of macro substitution eliminates the dependency of the filter upon the variable.

MORE INFORMATION

Steps to Reproduce Behavior

  1. Enter the following code in a program:

          USE customer
          INDEX ON cno TAG cno
    

          DO SetFilter WITH 'CA'
          SEEK 'A2695'
    

          PROCEDURE SetFilter
          PARAMETER x
          SET FILTER TO state=x
    

  2. Run the program.

In the code above, the error occurs because the variable used in the filter expression loses its scope when the SetFilter procedure terminates. FoxPro senses this and clears the filter because it is no longer valid.


Additional reference words: FoxUnix FoxMac FoxDos FoxWin 2.00 2.50 2.50a
2.50b
2.50c 2.60
2.60a
KBCategory: kbprg kberrmsg kbprb
KBSubcategory: FxprgMacrosub


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: June 27, 1995
© 1998 Microsoft Corporation. All rights reserved. Terms of Use.