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