Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Please review this procedure to open a table...
Message
From
15/06/2009 11:39:23
 
General information
Forum:
Visual FoxPro
Category:
Databases,Tables, Views, Indexing and SQL syntax
Environment versions
Visual FoxPro:
VFP 9 SP2
Database:
Visual FoxPro
Miscellaneous
Thread ID:
01406084
Message ID:
01406103
Views:
49
>>>1. Don't name it OpenTable, make different name for the procedure.
>>>
>>
>>Please explain...
>>
>>
>
>It is always a good idea to not use VFP Reserved words/methods. You don't know when and how it may bite you (though it may never will).


I looked under Reserved Words in Help, and it has OpenTables, but not OpenTable.





>
>Also I just noticed a typo - sorry, typos is my specialty:
>
>OpenTable - Generic Procedure to open a table, set the order, the alias, and the BefferMode
>
>
>
>>>>I've tried to make s simple procedure that will open a table, set the order, set the alias, and set the buffermode, and handle the NoUpdate clause.
>>>>
>>>>Will you all please review it and see if you can suggest any enhancements or better architecture:
>>>>
>>>>
>>>>*=============================================================================  
>>>>*== 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
>>>>
>>>>
>>>>And 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
>>>>
Previous
Next
Reply
Map
View

Click here to load this message in the networking platform