>>>*============================================================================= >>>*== 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)) >>> >>> Endproc >>>>>>
>>>*----------------------------------------------------------------------- >>>*-- 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 >>>