*============================================================================= *== OpenTable - Generic Procedure to open a table, set the order, the alias, and the BefferMode *== 1. Only the first two params are required, other are optional *== 2. Pass in tnBufferMode=0 to open with NOUPDATE *== (Although this a not valid VFP BufferMode value, I can catch it and use it to set NOUPDATE) *== 3. tcAlias and NoUpdate feature will only be implemented if Alias is not already in use *============================================================================= Procedure OpenTable Lparameters tcTableName, tcIndex, tcAlias, tnBufferMode Local lcAgainClause, lcSelectAlias, lcUpdate, llUsedTest lcAgainClause='' llUsedTest=Used(tcTableName) lcSelectAlias=tcTableName lcUpdate='' If Pcount()>=3 And !Empty(tcAlias) lcAgainClause=' Again Alias ' + alltrim(tcAlias) llUsedTest=Used(tcAlias) lcSelectAlias=tcAlias Endif If Vartype(tnBufferMode)='N' and tnBufferMode=0 lcUpdate='NoUpdate' Endif If !llUsedTest Select 0 Use (tcTableName) &lcAgainClause &lcUpdate Else Select(lcSelectAlias) EndIf If !Empty(tcIndex) Set Order to (tcIndex) EndIf If Vartype(tnBufferMode)='N' and tnBufferMode>0 SetBuffermode(tnBufferMode) Endif Return (Upper(Alias())==Upper(tcTableName)) EndprocAnd the supporting SetBuffermode function:
*----------------------------------------------------------------------- *-- Set buffermode of current table to passed value *---------------------------------------------------------------------- Function SetBuffermode Lparameters tnBufferMode *!* 1 – Sets row and table buffering off. Record locking and data writing are identical to earlier FoxPro versions. (the default). *!* 2 – Sets pessimistic row buffering on. *!* 3 – Sets optimistic row buffering on. *!* 4 – Sets pessimistic table buffering on. *!* 5 – Sets optimistic table buffering on. *!* SET MULTILOCKS must be ON for all Buffering modes except 1 (off). Set Multilocks On If Type('tnBufferMode')='N' If CursorSetProp('Buffering', tnBufferMode)=.F. =Messagebox('Error Setting Buffering Property of ' + Alias(), 0) Endif Endif EndFunc