BUG: Action Cannot Be Completed Because the Object Is Busy

Last reviewed: August 28, 1995
Article ID: Q120289
The information in this article applies to:

- Microsoft FoxPro for Windows, versions 2.5a, 2.5b, 2.6, 2.6a

SYMPTOMS

When you are closing a document linked in a general field, Microsoft Windows reports the following error:

   The action cannot be completed because the object is busy.

WORKAROUND

For an example of how to work around this problem, see "Workaround" in the "More Information" section below.

STATUS

Microsoft has confirmed this to be a problem in FoxPro versions 2.5a, 2.5b, 2.6, and 2.6a for Windows. We are researching this problem and will post new information here in the Microsoft Knowledge Base as it becomes available.

MORE INFORMATION

Steps to Reproduce Problem

  1. Use the following commands to create a new cursor (a temporary table) that contains a general field and append a new record to the cursor:

          CREATE TABLE oletable (object G)
          APPEND BLANK
    

  2. Open Microsoft Word 6.0 for Windows and create a new document that contains some text. Save the document as OLETEST.DOC.

  3. Return to FoxPro and link the new document into the general field using the following command:

          APPEND GENERAL object FROM GETFILE('DOC' ) LINK
    

    A standard open file dialog box is presented, allowing you to find and select the new Word document.

  4. With the document linked into the general field, issue the following command in the Command window:

          @ 0,0 SAY object VERB 'Edit'
    

    The document linked into the general field is displayed in Word.

  5. Close the document with or without having made any changes. Return to FoxPro. The following error will be displayed:

          The action cannot be completed because the object is busy.
    

Workaround

To avoid the error, add the undocumented NOWAIT clause to the @ ... SAY VERB command specified in step 4. Unfortunately, this modification has a potentially undesirable side effect: NOWAIT implies that FoxPro will continue to process commands asynchronously until it encounters a wait state or end of program.

WARNING: This function is undocumented, and therefore may be changed or omitted without notice from future releases of FoxPro. The reliability of this function is not guaranteed.

If the @ ... SAY ... VERB command is associated with the VALID clause of a control such as a push button, the addition of the NOWAIT clause may prove harmless. If, however, further processing depends on the completion of the @ ... SAY ... VERB command, processing must be suspended until the focus returns to FoxPro. There are a few ways to accomplish this. One method is to display a dialog box with a terminating push button and some text requesting the user click the button to continue. Another method, shown below, uses FoxTools to continuously check if FoxPro is the frontmost application and continue when this condition is met.

   * This code assumes that Word for Windows is running
   IF !'FOXTOOLS' $ SET('LIBRARY')
      SET LIBRARY TO FoxTools ADDITIVE
   ENDIF

   FoxWind = MAINHWND()

   *Get HWND of frontmost app
   GetActiveApp = REGFN('GetActiveWindow','','I')

   @0,0 SAY object VERB 'Edit' NOWAIT

   * Keep looping until the active window is FoxPro
   DO WHILE .t.
      IF FoxWind = CALLFN(GetActiveApp)
         EXIT
      ENDIF
   ENDDO

The disadvantage of this method is that it burdens the processor by looping continuously.


Additional reference words: FoxWin buglist2.50a buglist2.50b buglist2.60
buglist2.60a 2.50a 2.50b 2.60 2.60a link linked object linking embedding
errmsg
KBCategory: kbole kberrmsg kbcode kbbuglist
KBSubcategory: FxinteropWinword


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