PRB: Resolving "APPERROR.PRG Not Found" in FoxApp Application

Last reviewed: June 27, 1995
Article ID: Q109237
The information in this article applies to:
  • Microsoft FoxPro for Windows, versions 2.5, 2.5a, and 2.5b
  • Microsoft FoxPro for MS-DOS, versions 2.0, 2.5, 2.5a, and 2.5b
  • Microsoft FoxPro for Macintosh, version 2.5b

SYMPTOMS

When you are running a FoxApp-generated application, the following Program Error message box appears:

   File 'APPERROR.PRG' does not exist.

CAUSE

Given a table and a screen, FoxApp, the Microsoft FoxPro Application Generator, creates a complete application. The project that FoxApp creates is fully accessible through the project manager for further customization. If a mistake is made while the project is being customized, the FoxApp- generated application may be unable to find its resources.

In the above case, the application is unable to find the error handler procedure APPERROR, which is contained in the procedure file APPPROC.PRG. Only one procedure file can be set at a time, and in this case, a modification has been made to the application so that the SET PROCEDURE TO pointer command has been changed without restoring the original.

RESOLUTION

When you are modifying a FoxApp-generated application, consider the suggestions below, which refer to the following hypothetical procedure file:

   * User-defined procedure file named "USERLIB.PRG"
   PROCEDURE Proc1  && one of many procedures inside USERLIB
   WAIT WINDOW 'Hello, world'

  • Combine the user-generated procedure file into the FoxApp-generated procedure file. This file is named APPPROC.PRG. As long as the procedure names are unique, it is safe to include the user-defined procedures in APPPROC. Since FoxApp generates the same procedure file for every application that it creates, you can eliminate redundancy by using a common procedure file for all applications.

  • Maintain the user-generated procedure file and use one of the following methods:

    a. Instead of using SET PROCEDURE TO <user-proc-file>, specify the

          file in which the procedure exists in the DO call. For example,
    

             DO proc1 IN userlib.prg
    
          calls the procedure Proc1 in the file USERLIB.PRG.
    
       b. Save and restore the environment before and after every call to a
          procedure within a user-defined procedure file.
    
             oldProc = SET('PROCEDURE')  && Save the old procedure
             SET PROCEDURE TO UserLib    && user-defined procedure file
             DO Proc1      && call to UDF inside current procedure file
             SET PROCEDURE TO &oldProc   && restore old procedure file
    
          Problems will arise if the procedure file contains code that has not
          been fully tested and contains errors. If an error occurs inside a
          procedure, the original problem occurs because the current error
          handler (APPERROR.PRG) cannot be found.
    
    

    MORE INFORMATION

    Steps to Reproduce Problem

    1. Run FoxApp.

    2. Select the CUSTOMER database in the TUTORIAL subdirectory.

    3. Create a new screen named CUSTOMER.

    4. Generate the application.

    5. Open the project associated with the application and add the following to the setup code of the CUSTOMER screen within the CUSTOMER screen set:

            SET PROCEDURE TO             && remove the link to APPPROC
            WAIT WOW 'This is an error'  && This is an intentional error
      
      

    6. When the screen is run, an error occurs because the application cannot find the error routine contained within APPPROC.


  • Additional reference words: FoxMac FoxDos FoxWin 2.00 2.50 2.50a 2.50b
    errmsg err msg
    KBCategory: kbprg kberrmsg kbprb
    KBSubcategory: FxtoolProjman


    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.