Welcome To The Home Of The Visual FoxPro Experts  
home. signup. forum. archives. search. google. articles. downloads. faq. members. weblogs. file info. rss.
 From: Cecil Champenois
  Where is Cecil Champenois?
 Little Elm
 Texas - United States
 Cecil Champenois
 To: Pete Sass
  Where is Pete Sass?
 Marathon, Ontario
 Canada
 Pete Sass
 Tags
Subject: RE: LOCATE FOR
Thread ID: 416437 Message ID: 416455 # Views: 40 # Ratings: 0
Version: Visual FoxPro 9 SP2 Category: Databases, Tables and SQL Server
Date: Monday, December 29, 2014 9:38:00 PM         
   


> > I am beginning to doubt if FoxPro can handle a compound search when using LOCATE FOR. Any insight on this? I am using the following code with indexing and don't see that it's working:
> >
> > SELECT KMartSearsFiles2012
> > SCAN
> > 	* Get the string. We will need to parse this string out.
> > 	* The file names are separated with":" at the beginning,
> > 	* and the end of each file.
> > 	lcAttachment=":" + ALLTRIM(KMartSearsFiles2012.FileName) + ":"
> > 	lcMessageDate=KMartSearsFiles2012.Msg_Dt
> > 	SELECT MySQL_Emails
> > 	LOCATE FOR ;
> > 		MySQL_Emails.Recvd_Dt = lcMessageDate AND ;
> > 		lcAttachment $ MySQL_Emails.Attachment
> > 	IF FOUND()
> > 		REPLACE MySQL_Emails.lFound WITH .T.
> > 	ENDIF
> > ENDSCAN
> > 

> >
> > Cecil Champenois, Jr.
>
>
> 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

That is certainly an interesting approach, Pete.
Thanks you,
Cecil

Cecil Champenois, Jr.

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