Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
Please review this procedure to open a table...
Message
De
15/06/2009 11:03:29
 
 
À
Tous
Information générale
Forum:
Visual FoxPro
Catégorie:
Base de données, Tables, Vues, Index et syntaxe SQL
Titre:
Please review this procedure to open a table...
Versions des environnements
Visual FoxPro:
VFP 9 SP2
Database:
Visual FoxPro
Divers
Thread ID:
01406084
Message ID:
01406084
Vues:
143
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
Suivant
Répondre
Fil
Voir

Click here to load this message in the networking platform