Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
Detecting field presence in dbf
Message
De
02/08/2007 04:20:09
 
 
À
27/07/2007 13:34:27
Mike Yearwood
Toronto, Ontario, Canada
Information générale
Forum:
Visual FoxPro
Catégorie:
Codage, syntaxe et commandes
Versions des environnements
Visual FoxPro:
VFP 9 SP1
Database:
Visual FoxPro
Divers
Thread ID:
01244177
Message ID:
01245404
Vues:
30
>Hey all
>
>Some time ago I think Fabio Lunardon demonstrated using fsize to check for the presence of a field. What thread was that? I can't find it though I looked.
>
>Considering the need to manage SET COMPATIBLE for a UDF to use FSIZE I can't see it being the fastest way.
>
>I have used a UDF based on TYPE() and it is faster than a UDF using FSIZE that also handles setting and resetting SET COMPATIBLE. I think I found FIELD() is faster.
>
>There is another consideration. Using a UDF can be slow, so using an idea that is in my FoxPro Advisor article: http://advisor.com/doc/17440, the command that can detect a field with the fewest external dependencies could be directly injected into code. It seems the easiest and fastest is to use FIELD().
>
>Did FIELD() always accept the fieldname and alias?

with an ALIAS the VARTYPE can to be faster
CLEAR
CREATE CURSOR AAA (kyWarrant G)
LOCAL lnSec, llCheck
FOR i = 1 TO 1000000
NEXT
lnSec = SECONDS()
FOR i = 1 TO 100000
NEXT
looptime=(SECONDS()  - lnSec)

lnSec = SECONDS()
FOR i = 1 TO 100000
  llCheck = FSIZE('kyWarrant','AAA')>0
NEXT
? 'FSIZE',(SECONDS()  - lnSec-looptime),llCheck 
lnSec = SECONDS()
FOR i = 1 TO 100000
  llCheck = FIELD('kyWarrant','AAA')#''
NEXT
? 'FIELD',(SECONDS()  - lnSec-looptime),llCheck 

lnSec = SECONDS()
FOR i = 1 TO 100000
  llCheck = vartype(AAA.kyWarrant)<>'U'
NEXT
? 'VARTYPE',(SECONDS()  - lnSec-looptime),llCheck

lnSec = SECONDS()
FOR i = 1 TO 100000
  llCheck = type('AAA.kyWarrant')<>'U'
NEXT
? 'TYPE',(SECONDS()  - lnSec-looptime),llCheck 

USE
Précédent
Suivant
Répondre
Fil
Voir

Click here to load this message in the networking platform