Microsoft KB Archive/163798

= BUG: Spell Checking on Memo Field Causes Error =

Article ID: 163798

Article Last Modified on 5/12/2003

-

APPLIES TO


 * Microsoft Visual FoxPro 3.0b for Macintosh
 * Microsoft Visual FoxPro 3.0 Standard Edition
 * Microsoft Visual FoxPro 3.0b Standard Edition
 * Microsoft Visual FoxPro 5.0 Standard Edition
 * Microsoft Visual FoxPro 5.0a
 * Microsoft Visual FoxPro 6.0 Professional Edition

-



This article was previously published under Q163798



SYMPTOMS
Invoking the Spell Checker on a Memo field in a multi-user situation will cause the following warning:

"Memo field could not be locked for Spell Checker"

This warning occurs if the record is currently locked by another user.



CAUSE
The Spell Checker is ignoring the Optimistic Record Locking scheme of the Form.



RESOLUTION
Place the following code in the DoubleClick Method of Edit Region: && Copy current record to a separate file to avoid locking problem COPY NEXT 1 TO spellchk.dbf USE spellchk IN 0 SELECT spellchk

&& The following line may be added if the user wants changes && made to the buffered data appearing in Spell Checker. The reason && for this is the COPY TO command is reading directly from dbf file && on disk rather than the buffered data appearing in Edit region.

REPLACE spellchk.notes WITH THIS.VALUE

&& Run SpellChecker on the temporary table MODIFY MEMO notes NOWAIT

DO (_SPELLCHK) CLOSE MEMO notes

&& Update Edit Region and original table with any changes made && by user/SpellChecker THIS.VALUE=spellchk.NOTES USE && Close the temporary table SELECT employee

THIS.REFRESH && Update the Edit Region

&& Erase the temporary files created ERASE spellchk.dbf ERASE spellchk.fpt



STATUS
Microsoft has confirmed this to be a problem in the Microsoft products listed at the beginning of this article.



Steps to Reproduce Behavior
  Issue the following commands in the command window: OPEN DATABASE HOME+"SAMPLES\DATA\TestData.DBC" SHARED USE employee SHARED  Create a new form. Right-click the form and select "Data Environment" from the shortcut menu. Add the TESTDATA!Employee table to the Data Environment (DE) of the form. Right-click the Employee table and select Properties from the shortcut menu.</li> Set the Exclusive property of the Cursor to False (should be Default).</li> Drag the Notes Field from the Cursor in the DE onto the Form to create an edit region for the field.</li> Go to the Properties window.</li> Set the BufferMode property of the form to 2-Optimistic.</li> Set the DataSession property of the form to 2-Private DataSession.</li>  Add the following code to the DoubleClick Method of the Edit Region: MODIFY MEMO notes NOWAIT * Opens a text editing window that displays the memo field * assuming the memo field is called "notes". * The "nowait" clause allows execution to continue DO (_SPELLCHK) * The _spellchk system variable references the spell checker that * will be executed by FoxPro. CLOSE MEMO NOTES * This closes the text editing window after the user exits the * spell checker </li>  In the Command Window issue the following: SELECT employee ? RLOCK &&Locks the Record </li> Save and run the Form.</li> Double-click the Edit Region to invoke the Spell Checker.</li></ol>

<div class="references_section">