select SomeTable
scan
 * Do we have any invoices for this customer?
 if seek(SomeTable.CustCode,"invoice","in_code")
   * Yes, Update them
   select invoice
   scan for in_code = SomeTable.CustCode
        * Do your code in this Rushmore Optimized Scan!
        ****************
   endscan
 endif

 * Make sure we're back were we belong
 *   not necessary but good for documentation
 select SomeTable
endscan



John Baird wrote:

Michael:

Your code will only find the first occurrence and update that.  If there are
multiple records matching the locate condition, you have to place the seek
inside a loop...


-----Original Message-----
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf
Of MB Software Solutions
Sent: Thursday, September 14, 2006 10:04 AM
To: [email protected]
Subject: Re: Using a seek instead of a locate

[EMAIL PROTECTED] wrote:

How can I duplicate the following code using the seek command:

SCAN
SELECT Invoice
LOCATE FOR in_code = lnCustCode
 DO WHILE FOUND()
   do some code
   CONTINUE
 ENDDO
SELECT sometable
ENDSCAN
The is extremely slow as this codes is already in another loop and therefore a locate for the whole table is execute each time.

Thanks in advance.



Assuming there's an index on the Invoice.in_code field, how about this:

scan
 lnCustCode = SomeTable.CustCode
 if seek(lnCustCode,"invoice","in_code") then
   * do your true code
 endif
endscan


--
Michael J. Babcock, MCP
MB Software Solutions, LLC
http://mbsoftwaresolutions.com
http://fabmate.com
"Work smarter, not harder, with MBSS custom software solutions!"



[excessive quoting removed by server]

_______________________________________________
Post Messages to: [email protected]
Subscription Maintenance: http://leafe.com/mailman/listinfo/profox
OT-free version of this list: http://leafe.com/mailman/listinfo/profoxtech
** All postings, unless explicitly stated otherwise, are the opinions of the 
author, and do not constitute legal or medical advice. This statement is added 
to the messages for those lawyers who are too stupid to see the obvious.

Reply via email to