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