local x, nNext CLEAR CLOSE DATA CLOSE TABLES SET EXCLUSIVE OFF SET DELETED ON SET CURSOR OFF SET REPROCESS TO AUTOMATIC lNativeTables = .t. if NOT FILE("ShowBug.Dbc") CREATE Database SHOWBUG CREATE TABLE Test (MyID I, NextID I) APPEND BLANK REPLACE MyID WITH 1, NextID WITH 1 USE CREATE SQL VIEW VTest AS SELECT * FROM Test WHERE MyID=1 DBSetProp( "VTest.MyID" , "Field", "KeyField" , .T. ) DBSetProp( "VTest.MyID" , "Field", "Updatable" , .F. ) DBSetProp( "VTest.NextID" , "Field", "Updatable" , .T. ) DBSetProp( "VTest" , "View" , "SendUpdates", .T. ) DBSetProp( "VTest" , "View" , "WhereType" , 3 ) CLOSE DATA endif OPEN DATABASE ShowBug USE VTest SHARED @2,2 SAY "Assign:" @3,2 SAY "Source:" @4,2 SAY " View:" for x = 1 to 100 INKEY(.1) nNext = SqlNextID() if nNext < 0 =MessageBox("It's Dead!") EXIT else @2,10 SAY nNext endif next CLOSE DATA CLOSE TABLES SET CURSOR ON return ******************************************************************************************************************** Function SqlNextID( cAlias ) local oldarea, x x = 0 REQUERY() do while .T. REQUERY() IF lNativeTables LOCK('test') ENDIF nRet = NextID REPLACE NextID WITH NextID + 1 if TableUpdate( .T., .F. ) IF lNativeTables UNLOCK IN test USE IN test ENDIF EXIT else if x > 100 TableRevert( .T. ) nRet = -1 EXIT endif @3,10 SAY Test.NextID @4,10 SAY VTest.NextID x = x + 1 TableRevert( .T. ) endif enddo return (nRet)>Dorian,