Welcome To The Home Of The Visual FoxPro Experts  
home. signup. forum. archives. search. google. articles. downloads. faq. members. weblogs. file info. rss.
 From: Pete Sass
  Where is Pete Sass?
 Marathon, Ontario
 Canada
 Pete Sass
 To: Mike Yearwood
  Where is Mike Yearwood?
 Toronto
 Canada
 Mike Yearwood
 Tags
Subject: RE: LOCATE FOR
Thread ID: 416437 Message ID: 416517 # Views: 25 # Ratings: 0
Version: Visual FoxPro 9 SP2 Category: Databases, Tables and SQL Server
Date: Tuesday, December 30, 2014 6:18:31 PM         
   


> >
> >
> > Hi Cecil,
> >
> > Inside the Scan ... EndScan loop you do not use Locate as this moves your record pointer
> > killing the record by record scanning.
> >
> > You should be using an If . . . Endif statement inside the Scan loop and if the record
> > conditions match then flip the flag to .T.
> > This will process the loop sequentially checking all the records.
> >
> > The other option maybe a better one is to set a filter on the table :
> >
SET FILTER TO MySQL_Emails.Recvd_Dt = lcMessageDate .AND. lcAttachment $ MySQL_Emails.Attachment
> > GOTO TOP
> > 
> > * --- You can now browse to see if you have the correct recordset and modify the
> > * --- filter accordingly until you are happy with the records filtered.
> > BROWSE 
> > 
> > * --- Now since all your got is your required records.
> > REPLACE MySQL_Emails.lFound WITH .T. WHILE .NOT. EOF()
> > SET FILTER TO
> > GOTO TOP
> > * --- Star out browse below after verifying all OK.
> > BROWSE
> > USE

> >
> > Pete "the IceMan", from the Great White North of Canada.
> > www.marathongriffincomputers.com
>
> When using SET FILTER, it's better to avoid GO TOP and use LOCATE instead.
>
> Mike Yearwood
> Microsoft MVP Visual FoxPro 2008, 2009
> We have enough youth. We need a fountain of smart!
> There may be many ways to skin a cat, but there are very few right ways to do it.


Hi Mike,

Yep. I misread the OP and thought was doing a locate inside a Scan
on the same table - lol

However, I wonder the pros and cons of the two approaches.

In a many to 1 scenario the locate to me makes sense. I ponder
in a many to many where there are multiple record matches in
the secondary table. Wondering what would be best in performance.
Looping through the secondary table to flag the records versus
setting a filter and issuing replace all with a one liner?

Maybe if I get some free time I will benchmark this.

Pete "the IceMan", from the Great White North of Canada.
www.marathongriffincomputers.com

ENTIRE THREAD

LOCATE FOR Posted by Cecil Champenois @ 12/29/2014 6:34:17 PM
RE: LOCATE FOR Posted by Pete Sass @ 12/29/2014 7:11:17 PM
RE: LOCATE FOR Posted by Cecil Champenois @ 12/29/2014 9:38:00 PM
RE: LOCATE FOR Posted by Greg Green @ 12/29/2014 9:57:36 PM
RE: LOCATE FOR Posted by Pete Sass @ 12/29/2014 11:16:15 PM
RE: LOCATE FOR Posted by Mike Yearwood @ 12/30/2014 3:49:07 PM
RE: LOCATE FOR Posted by Pete Sass @ 12/30/2014 6:18:31 PM
RE: LOCATE FOR Posted by Mike Yearwood @ 12/30/2014 6:55:18 PM
RE: LOCATE FOR Posted by Mike Yearwood @ 12/29/2014 8:30:51 PM
RE: LOCATE FOR Posted by Cecil Champenois @ 12/29/2014 9:35:06 PM
RE: LOCATE FOR Posted by Tony Vignone @ 12/29/2014 9:03:34 PM
RE: LOCATE FOR Posted by Greg Green @ 12/29/2014 10:03:17 PM
RE: LOCATE FOR Posted by Tony Vignone @ 12/30/2014 3:27:40 PM
RE: LOCATE FOR Posted by David Myrick @ 12/29/2014 10:21:05 PM
RE: LOCATE FOR Posted by Jun Tangunan @ 12/30/2014 2:23:08 AM