Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
Which command would execute faster? Seek & Do while or S
Message
De
28/03/2006 13:35:02
Mike Yearwood
Toronto, Ontario, Canada
 
 
À
28/03/2006 12:32:47
Information générale
Forum:
Visual FoxPro
Catégorie:
Codage, syntaxe et commandes
Versions des environnements
Visual FoxPro:
VFP 9
OS:
Windows XP
Database:
Visual FoxPro
Divers
Thread ID:
01108228
Message ID:
01108471
Vues:
17
>>Hi everyone,
>>
>>Which of the commands below would execute faster assuming you have a million records and 200,000 of this records corresponds to the CUST_ID to compute the OrderAmount?
>>
>>1. (PRG)
>>
>>Local lnTotalOrder, lcCustID
>>
>>lnTotalOrder = 0
>>lcCustID = "0008"
>>
>>Seek &lcCustID    && Seek "0008"
>>Do while Customer.Cust_ID=&lcCustID
>>   lnTotalOrder = lnTotalOrder + Customer.OrderAmount
>>   Skip
>>Enddo
>>Return (lnTotalOrder)
>>
>>
>>or
>>
>>2. (SQL)
>>
>>Select Customer.Cust_ID, sum(Customer.OrderAmount) As lnTotalOrder;
>>from Customer  into cursor temp where Customer.Cust_ID="0008" Group by Customer.Cust_ID
>>
>
>The SQL statement indicates the data type of Cust_ID is character. Maybe I'm missing something but, if Cust_ID is character then both your SEEK and DO WHILE comparison should give a data type mismatch error since you are now seeking a numeric 8.

Good catch! He should just not use macro at all there.

>
>Also.......rather than doing a SCAN/ENDSCAN or DO WHILE, you might also try
>
>SUM OrderAmount TO lnTotalOrder FOR Cust_ID = lcCustID
Or, do the seek and then SUM while cus_id = m.lcCustID
Précédent
Suivant
Répondre
Fil
Voir

Click here to load this message in the networking platform