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:03:29
 
 
To
All
General information
Forum:
Visual FoxPro
Category:
Databases,Tables, Views, Indexing and SQL syntax
Title:
Please review this procedure to open a table...
Environment versions
Visual FoxPro:
VFP 9 SP2
Database:
Visual FoxPro
Miscellaneous
Thread ID:
01406084
Message ID:
01406084
Views:
144
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
Next
Reply
Map
View

Click here to load this message in the networking platform