I think this behavior has to be expected given the nature of a cursor. Perhaps you need to delete tag all before ALTER TABLE command on a cursor and then re-create the indexes.
>I just ran into some strange behavior using ALTER TABLE that I can't make any sense out of. It seems that if I have a cursor open that has a cdx index (with or without an active tag), and I have an error handler defined with ON ERROR, I will get a 1707 "Can't find structural CDX index" error when I issue an ALTER TABLE command. As soon as I turn off the error handler, the ALTER TABLE works just fine.
>
>I can code around it with a TRY/CATCH and by turning off the ON ERROR just before running the ALTER TABLE, but I was just curious if anyone else has run into this. I've added a few lines of code below to reproduce the error.
>
>Thanks,
>
>-m@
>
>
>
>PRIVATE glWasErr
>glWasErr = .F.
>
>CREATE CURSOR c_Test1 (nada C(10), Other L, More D, YetMore I)
>INDEX on YetMore TAG YetMore
>
>IF 6 = MESSAGEBOX("Run with error handler on?",4+32, "Select Test Method")
> ON ERROR DO ErrHand
>ELSE
> ON ERROR
>ENDIF
>
>IF VARTYPE(TestCol1) <> "C"
> ALTER TABLE c_Test1 ADD COLUMN TestCol1 C(20)
>ELSE
> ALTER TABLE c_Test1 DROP COLUMN TestCol1
>ENDIF
>
>IF ! glWasErr
> =MESSAGEBOX("Ran fine, no errors.", 64, "No Problems")
>ENDIF
>
>*--------------------------------------------------------------------------
>PROCEDURE ErrHand
>*
>glWasErr = .T.
>=MESSAGEBOX("Error " + TRANSFORM(ERROR()) + " " + MESSAGE(), 16, "BANG!!!")
>
If it's not broken, fix it until it is.
My Blog