I just found out what worked.
CURSORSETPROP()
1 – Sets row and table buffering off.
I set the buffering to 1 prior to PACKing the table, which turns off table and row buffering, then PACKed the table, then returned it to Row Buffering mode (2). It worked!
Cecil
Here's the code in my form's cmdPackTable.Click procedure.
* Pack table now. Only security level 3 may pack this table.
Local llGood
WITH ThisForm
IF .IsChanged()
.SaveIt()
ENDIF
IF .nSecLevel > 2
IF USED('Address')
USE && Close the file.
ENDIF
USE address EXCLUSIVE
SELECT Address
WAIT WINDOW NOWAIT "Packing table..."
llGood = CursorSetProp('Buffering', 1, 'Address') && Turns off buffering.
PACK
USE
USE Address ORDER lfName SHARED && Re-open table in SHARED mode.
llGood = CursorSetProp('Buffering', 2, 'Address') && Pessimistic row buffering.
.cmdDelete.Enabled = .T.
.cmdRecall.Enabled = .F.
.IsDeleted()
.CountRecs()
ENDIF
*.Refresh() && Don't need this command since it is in .CountRecs().
ENDWITH