FLOCK() may work better (I doubt it, but..)
What if two users wants to insert records for two different tables?
One will wait till other finished his/her job?
But they inserting records in different tables, why should one wait?
>Suppose I use my table client DBF, buffered as 5
>I want to use Craig's auto increment funcion
>
>And then I have a buttom to save my data,
>and In click event I have:
>
>select client
> tableupdate ()
>
> Where should I use the funcion?
>
>Before or after the "client" tableupdate ()
>
>Thanks
>
>
>
>GetKey("Client")
>
>*********************************************
>FUNCTION GetKey
>LPARAMETERS tcTable
>
>LOCAL lnArea, llOpened, liRetVal
>
>* Save current work area
>lnArea = SELECT()
>llOpened = .F.
>
>IF !USED("Keys")
> USE Keys IN 0 SHARED
> llOpened = .T.
>ENDIF
>SELECT Keys
>SET ORDER TO TAG Table
>
>* FLOCK seems to work a bit better than RLOCK.
>* I've never had a problem with it.
>DO WHILE !FLOCK()
>ENDDO
>
>SEEK UPPER(tcTable)
>IF FOUND()
> liRetVal = NextId
> REPLACE NextId WITH NextId + 1
>ELSE
> INSERT INTO Keys (Table, NextId) VALUES (tcTable, 2)
> liRetVal = 1
>ENDIF
>
>FLUSH
>UNLOCK
>
>IF llOpened
> USE IN Keys
>ENDIF
>
>SELECT (lnArea)
>RETURN liRetVal
>**************************************************
Against Stupidity the Gods themselves Contend in Vain - Johann Christoph Friedrich von Schiller
The only thing normal about database guys is their tables.