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

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
>>>
If it's not broken, fix it until it is.


My Blog
Précédent
Suivant
Répondre
Fil
Voir

Click here to load this message in the networking platform